Las tablas en memoria (OLTP in-memory optimized tables) en SQL Server son tablas cuyo almacenamiento primario es la memoria principal del servidor y, de la misma forma que una tabla transaccional, son completamente duraderas y sus transacciones cumplen con el principio ACID (atomicidad, consistencia, aislamiento y durabilidad). Es una tecnología disponible desde SQL Server 2014 y SQL Database (Azure) usada para optimizar el rendimiento del procesamiento de transacciones, ingesta y carga de datos, entre otros escenarios. Si estas pensando en implementar esta funcionalidad en tu ambiente de base de datos, aquí te dejo los datos de como hacerlo.
Puedes crear tablas con optimización de memoria en SQL Server de la siguiente manera:
Primero, configuramos la base de datos para que pueda aprovechar esta funcionalidad:
ALTER DATABASE AdventureWorks2019;
SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;
Luego, le creamos un filegroup optimizado en memoria (OJO: Solo podemos tener 1 filegroup de este tipo por base de datos):
ALTER DATABASE AdventureWorks2019;
ADD FILEGROUP EasyTutorials_MOD CONTAINS MEMORY_OPTIMIZED_DATA;
Por ultimo, creamos un archivo dentro de este nuevo filegroup:
ALTER DATABASE AdventureWorks2019;
ADD FILE (name = 'EasyTutorials_MOD1', filename = 'D:\INST1\Data\EasyTutorials)
TO FILEGROUP EasyTutorials_MOD
Y listo, ya tenemos configurada nuestra base de datos. Por ejemplo, para crear una tabla lo haríamos así:
USE AdventureWorks2019;
CREATE TABLE dbo.MiTablaMemo
(
OrdenID INTEGER NOT NULL IDENTITY PRIMARY KEY NONCLUSTERED,
NroItem INTEGER NOT NULL,
FechaOrden DATETIME NOT NULL
)
WITH
(MEMORY_OPTIMIZED = ON,
DURABILITY = SCHEMA_AND_DATA);
Es muy importante la opción DURABILITY que hemos incluido en el ejemplo mostrado arriba, el cual es SCHEMA_AND_DATA. Esto significa que tanto el esquema y los datos de la tabla permanecerán en la memoria aun después de que la base de datos este offline. Si especificamos SCHEMA_ONLY, solo la estructura de la misma se preservara, mientras que los datos serán eliminados.
Y LISTO!!
Si tienes alguna duda, comentario o sugerencia, puedes mandarme un email a bitácoradeundba@gmail.com.
Muy buena tu publicación, pero tengo una duda.. no habrá una manera fácil de transformar una tabla convencional (existente y con datos) en una tabla en memoria.
Hola, desde SQL 2016 puedes intentar convertir una tabla con datos con el Memory Optimization Advisor, dando clic derecho en la tabla requerida desde el Management Studio, opción Memory Optimization Advisor. Espero que te sea de ayuda.