Acceso a tablas con optimización para memoria mediante Transact-SQL interpretado

Se aplica a: SQL Server Azure SQL Database Not supported. Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

Con unas pocas excepciones, puede tener acceso a las tablas optimizadas para memoria mediante cualquier consulta de Transact-SQL u operación DML (select, insert, update o delete), lotes ad hoc y los módulos de SQL como procedimientos almacenados, funciones con valores de tabla, desencadenadores y vistas.

Transact-SQL interpretado hace referencia a procedimientos almacenados o lotes de Transact-SQL distintos de un procedimiento almacenado compilado de forma nativa. El acceso de Transact-SQL interpretado a las tablas optimizadas para memoria se conoce como acceso de interoperabilidad.

A partir de SQL Server 2016 (13.x), las consultas en Transact-SQL interpretado puede examinar tablas optimizadas para memoria en paralelo, en lugar de solamente en modo de serie.

También se puede tener acceso a las tablas con optimización para memoria mediante un procedimiento almacenado compilado de forma nativa. Los procedimientos almacenados compilados de forma nativa se recomiendan para las operaciones OLTP donde el rendimiento es un factor crítico.

El acceso interpretado de Transact-SQL se recomienda en estos casos:

  • Consultas ad hoc y tareas administrativas.

  • Consultas de notificación, que suelen usar construcciones no disponibles en los procedimientos almacenados compilados de forma nativa (como funciones de ventana , a las que a veces se hace referencia como funciones OVER ).

  • Para migrar componentes esenciales para el rendimiento de su aplicación a tablas optimizadas para memoria, con cambios mínimos en el código de la aplicación (o sin ningún cambio). Puede ver mejoras en el rendimiento si se migran las tablas. Si después migra los procedimientos almacenados a procedimientos almacenados compilados de forma nativa, puede ver una mejora adicional del rendimiento.

  • Cuando no hay disponible una instrucción de Transact-SQL para los procedimientos almacenados compilados de forma nativa.

Sin embargo, las construcciones de Transact-SQL siguientes no se admiten en procedimientos almacenados de Transact-SQL interpretado que tienen acceso a datos de una tabla optimizada para memoria.

Área No admitidas
Acceso a tablas TRUNCATE TABLE

MERGE (tabla optimizada para memoria como destino).

Cursores dinámicos y keyset (se degradan automáticamente en cursores estáticos).

Acceso de los módulos CLR, con la conexión de contexto.

Hacen referencia a una tabla optimizada para memoria desde una vista indizada.
A través de bases de datos Consultas entre bases de datos

Transacciones entre bases de datos

Servidores vinculados

Sugerencias de tabla

Para obtener más información acerca de las sugerencias de tabla, vea: Sugerencias de tabla (Transact-SQL). La SNAPSHOT se agregó para admitir OLTP en memoria.

Las siguientes sugerencias de tabla no se admiten cuando se obtiene acceso a una tabla optimizada para memoria mediante Transact-SQL interpretado.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = entero

XLOCK

NOWAIT

READPAST

TABLOCK

Al tener acceso a una tabla optimizada para memoria desde una transacción explícita o implícita con Transact-SQL interpretado, debe hacer al menos una de las siguientes acciones:

No es necesaria una sugerencia de tabla de nivel de aislamiento para las tablas optimizadas para memoria a las que acceden las consultas que se ejecutan en modo de confirmación automática.

Consulte también

Compatibilidad de Transact-SQL con OLTP en memoria

Migrar a OLTP en memoria