Compartir a través de


OLTP en memoria (optimización en memoria)

Novedad de SQL Server 2014 (12.x), In-Memory OLTP puede mejorar significativamente el rendimiento de las aplicaciones de base de datos OLTP. In-Memory OLTP es un motor de base de datos optimizado para memoria integrado en el motor de SQL Server, optimizado para OLTP.

Máquina virtual de Azure ¿Quiere probar SQL Server 2016? Regístrese en Microsoft Azure y, a continuación, vaya aquí para poner en marcha una máquina virtual con SQL Server 2016 ya instalado. Puede eliminar la máquina virtual cuando haya terminado.

Para usar In-Memory OLTP, defina una tabla de acceso muy accesible como optimizada para memoria. Las tablas optimizadas para memoria son totalmente transaccionales, duraderas y se accede a ellas mediante Transact-SQL de la misma manera que las tablas basadas en disco. Una consulta puede hacer referencia tanto a tablas optimizadas para memoria como a tablas basadas en disco. Una transacción puede actualizar datos en tablas optimizadas 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 de In-Memory está diseñado para simultaneidad de sesión extremadamente alta para el tipo OLTP de transacciones controladas desde un nivel intermedio de escalabilidad alta. 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 la tabla siguiente se resumen los patrones de carga de trabajo que pueden beneficiar a la mayoría mediante In-Memory OLTP:

Escenario de implementación Escenario de implementación Ventajas de In-Memory OLTP
Í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 obtener más información sobre los escenarios en los que In-Memory OLTP dará como resultado las mayores ganancias de rendimiento, consulte OlTP en memoria: patrones comunes de carga de trabajo y consideraciones sobre la migración.

OLTP en memoria aumentará mejor el rendimiento de OLTP con transacciones de breve ejecución.

Los patrones de programación que In-Memory OLTP mejorarán incluyen escenarios de simultaneidad, búsquedas puntuales, 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 optimizadas para memoria y tablas basadas en disco en la misma base de datos y realizar consultas en ambos tipos de tablas.

En SQL Server 2014 (12.x) hay limitaciones en el área expuesta de Transact-SQL compatible con In-Memory OLTP.

In-Memory OLTP logra importantes mejoras de rendimiento y 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 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 optimizadas para memoria.

Importante

Serán necesarios algunos cambios de sintaxis en las tablas y los procedimientos almacenados para utilizar 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 optimizada para memoria, lea Determinar si se debe portar una tabla o un procedimiento almacenado a In-Memory OLTP para ver qué tablas y procedimientos almacenados se beneficiarán de In-Memory OLTP.

En esta sección

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

Tema Descripción
Requisitos para usar tablas con optimización para memoria Describe los requisitos de hardware y software y las instrucciones para utilizar tablas optimizadas para memoria.
Uso de OLTP en memoria en un entorno de máquina virtual Explica el uso de OLTP en memoria en un entorno virtualizado.
Ejemplos de código de OLTP en memoria Contiene ejemplos de código en los que se muestra cómo crear y utilizar una tabla optimizada para memoria.
Tablas optimizadas para la memoria Presenta las tablas optimizadas para memoria.
Variables de tabla con optimización para memoria Ejemplo de código que muestra cómo utilizar una variable de tabla optimizada para memoria en lugar de una variable de tabla tradicional para reducir el uso de tempdb.
Índices de las tablas con optimización para memoria Presenta los índices optimizados para memoria.
Procedimientos almacenados compilados de forma nativa Presenta los procedimientos almacenados compilados de forma nativa.
Administrar memoria para OLTP en memoria Descripción y administración del uso de memoria en el sistema.
Crear y administrar el almacenamiento de objetos optimizados para memoria Describe los archivos delta y de datos, que almacenan información sobre las transacciones en tablas optimizadas para memoria.
Hacer copia de seguridad, restaurar y recuperar tablas con optimización para memoria Describe las copias de seguridad, las restauraciones y las recuperaciones para tablas optimizadas para memoria.
Compatibilidad de Transact-SQL con OLTP en memoria Describe la compatibilidad con Transact-SQL para In-Memory OLTP.
Compatibilidad con alta disponibilidad para bases de datos de OLTP en memoria Describe los grupos de disponibilidad y los clústeres de conmutación por error en In-Memory OLTP.
Compatibilidad de SQL Server con OLTP en memoria Enumera la sintaxis nueva y la actualizada, y las características que admiten tablas optimizadas para memoria.
Migrar a OLTP en memoria Describe cómo migrar las tablas basadas en disco a tablas optimizadas para memoria.

Puede obtener más información sobre OLTP en memoria en:

Consulte también

Características de la base de datos