OLTP en memoria (optimización en memoria)

 

Es una novedad en SQL Server 2014, OLTP en memoria puede mejorar significativamente el rendimiento de la aplicación de base de datos OLTP.OLTP en memoria es un motor de base de datos con optimización para memoria integrado en el motor de SQL Server, optimizado para OLTP.

Azure Virtual Machine¿Quiere probar SQL Server 2016? Suscríbase a Microsoft Azure y, después, vaya aquí para crear una máquina virtual que ya tenga SQL Server 2016 instalado. Puede eliminar la máquina virtual cuando haya terminado.

Para usar OLTP en memoria, debe definir una tabla a la que se accede con mucha frecuencia como que está optimizada para memoria. Las tablas con optimización para memoria son completamente transaccionales y durables, y se accede a ellas mediante Transact-SQL, igual que con las tablas basadas en disco. Una consulta puede hacer referencia tanto a tablas con optimización para memoria como a tablas basadas en disco. Una transacción puede actualizar datos en tablas con optimización para memoria y en tablas basadas en disco. Los procedimientos almacenados que solo hacen referencia a tablas optimizadas para memoria se pueden compilar de forma nativa en código máquina para obtener nuevas mejoras en el rendimiento. El motor OLTP en memoria se ha diseñado para sesiones de simultaneidad muy elevada para el tipo OLTP de transacciones que se derivan de un nivel medio con gran capacidad de ampliación horizontal. Para lograr esto, usa estructuras de datos sin bloqueos temporales y control de simultaneidad optimista de múltiples versiones. El resultado es predecible, de baja latencia por debajo de los milisegundos y de gran rendimiento con escalado lineal para transacciones de bases de datos. La ganancia de rendimiento real depende de muchos factores, pero es habitual obtener un rendimiento entre 5 y 20 veces superior.

En esta tabla resumimos los patrones de carga de trabajo que sacarían el máximo partido usando OLTP en memoria:

Escenario de implementaciónEscenario de implementaciónVentajas de OLTP en memoria
Índice elevado de inserción de datos a partir de varias conexiones simultáneas.Almacenamiento principal solo de adición.

Incapaz de procesar la carga de trabajo insertada.
Eliminar contención.

Reducir registros.
Leer el rendimiento y escalar con inserción y actualizaciones por lotes periódicos.Operaciones de lectura de alto rendimiento, especialmente cuando cada solicitud de servidor debe realizar varias operaciones de lectura.

Incapaz de satisfacer los requisitos de ampliación vertical.
Eliminar la contención cuando llegan datos nuevos.

Recuperación de datos de menor latencia.

Minimizar el tiempo de ejecución del código.
Procesamiento intensivo de lógica empresarial en el servidor de base de datos.Insertar, actualizar y eliminar cargas de trabajo.

Cálculos que consumen muchos recursos en los procedimientos almacenados.

Contención de lectura y escritura.
Eliminar contención.

Minimizar el tiempo de ejecución del código para reducir la latencia y mejorar el rendimiento.
Baja latencia.Requerir transacciones empresariales de baja latencia que no pueden realizar las soluciones de bases de datos habituales.Eliminar contención.

Minimizar el tiempo de ejecución del código.

Ejecución de código de baja latencia.

Recuperación eficaz de datos.
Administración del estado de la sesión.Inserciones, actualizaciones y búsquedas de punto frecuentes.

Carga de escala alta de numerosos servidores web sin estado.
Eliminar contención.

Recuperación eficaz de datos.

Opcional: reducción o eliminación de E/S cuando se usen tablas que no sean durables

Para más información sobre escenarios donde el uso de OLTP en memoria suponga alcanzar un mayor rendimiento, vea el tema sobreOLTP en memoria y los patrones de carga de trabajo comunes y consideraciones para la migración.

OLTP en memoria mejorará el rendimiento de forma óptima en OLTP con transacciones de breve ejecución.

Entre los patrones de programación donde se apreciarán mejoras con OLTP en memoria, se incluyen los escenarios de simultaneidad, búsquedas de punto, cargas de trabajo donde hay muchas inserciones y actualizaciones, y lógica empresarial en procedimientos almacenados.

La integración con SQL Server significa que puede tener tablas con optimización para memoria y tablas basadas en disco en la misma base de datos y realizar consultas en los dos tipos de tablas.

En SQL Server 2014 existen limitaciones en el área expuesta de Transact-SQL admitida para OLTP en memoria.

OLTP en memoria logra importantes mejoras en el rendimiento y la escalabilidad mediante:

  • Los algoritmos que se optimizan para tener acceso a los datos residentes en memoria.

  • Control de simultaneidad optimista que elimina los bloqueos lógicos.

  • Objetos sin bloqueo que eliminan todos los bloqueos físicos y temporales. Los subprocesos que realizan el trabajo transaccional no usan bloqueos ni bloqueos temporales para el control de simultaneidad.

  • Los procedimientos almacenados compilados de forma nativa, que tienen un rendimiento bastante mejor que los procedimientos almacenados interpretados, cuando se tiene acceso a tablas con optimización para memoria.

System_CAPS_ICON_important.jpg Importante


Serán necesarios algunos cambios de sintaxis en las tablas y los procedimientos almacenados para usar OLTP en memoria. Para obtener más información, vea Migrar a OLTP en memoria. Antes de intentar migrar una tabla basada en disco a una tabla con optimización para memoria, lea Determinar si una tabla o un procedimiento almacenado se debe pasar a OLTP en memoria para ver qué tablas y procedimientos almacenados se beneficiarán de OLTP en memoria.

Esta sección proporciona información acerca de los conceptos siguientes:

TemaDescripción
Requisitos para utilizar las tablas con optimización para memoriaDescribe los requisitos de hardware y software y las instrucciones para utilizar tablas con optimización para memoria.
Usar OLTP en memoria en un entorno de máquinas virtualesSe ocupa del uso de OLTP en memoria en entornos virtualizados.
Ejemplos de código de OLTP en memoriaContiene ejemplos de código en los que se muestra cómo crear y utilizar una tabla con optimización para memoria.
Tablas con optimización para memoriaPresenta las tablas con optimización para memoria.
Variables de tabla con optimización para memoriaEjemplo de código que muestra cómo utilizar una variable de tabla con optimización para memoria en lugar de una variable de tabla tradicional para reducir el uso de tempdb.
Índices de las tablas con optimización para memoriaPresenta los índices con optimización para memoria.
Procedimientos almacenados compilados de forma nativaPresenta los procedimientos almacenados compilados de forma nativa.
Administrar memoria para OLTP en memoriaDescripción y administración del uso de memoria en el sistema.
Crear y administrar el almacenamiento de objetos con optimización para memoriaDescribe los archivos delta y de datos, que almacenan información sobre las transacciones en tablas con optimización para memoria.
Hacer copia de seguridad, restaurar y recuperar tablas con optimización para memoriaDescribe las copias de seguridad, las restauraciones y las recuperaciones para tablas con optimización para memoria.
Compatibilidad de Transact-SQL con OLTP en memoriaDescribe la compatibilidad de Transact-SQL para OLTP en memoria.
Compatibilidad con alta disponibilidad para bases de datos OLTP en memoriaDescribe los grupos de disponibilidad y los clústeres de conmutación por error en OLTP en memoria.
Compatibilidad de SQL Server con OLTP en memoriaEnumera la sintaxis nueva y la actualizada, y las características que admiten tablas con optimización para memoria.
Migrar a OLTP en memoriaDescribe cómo migrar las tablas basadas en disco a tablas con optimización para memoria.

Encontrará más información acerca de OLTP en memoria en:

Características de la base de datos

Mostrar: