Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 1141|Respuesta: 1

[Fuente] Tablas optimizadas para memoria y bases de datos SQL SERVER

[Copiar enlace]
Publicado el 10-05-2025 a las 21:28:18 | | | |
Introducción a las tablas optimizadas para memoria

Las tablas optimizadas para memoria son tablas creadas usando CREATE TABLE (Transact-SQL).

Por defecto, las tablas optimizadas para memoria son completamente persistentes. Al igual que las transacciones en tablas basadas en disco (tradicionales), las transacciones en tablas optimizadas para memoria son completamente atómicas, consistentes, aisladas y persistentes (ACID). Las tablas optimizadas para memoria y los procedimientos almacenados compilados nativamente solo soportan un subconjunto de características de Transact-SQL.

Desde SQL Server 2016 y en Azure SQL Database, no existen restricciones sobre la recopilación o páginas de códigos específicas de OLTP en memoria.

La memoria primaria de una tabla optimizada para memoria es la memoria primaria. Lee las filas de la tabla de memoria y escríbelas en memoria. Otra copia de los datos de la tabla se mantiene en disco, pero solo para fines de persistencia. Para más información sobre tablas persistentes, consulte Crear y gestionar el almacenamiento de objetos para optimización de memoria. Los datos en tablas optimizadas para memoria se leen del disco solo durante la recuperación de la base de datos (por ejemplo, tras el reinicio de un servidor).

Para mayores mejoras de rendimiento, OLTP en memoria soporta tablas persistentes con latencia transaccional persistente. Las transacciones persistentes retrasadas se guardan en el disco poco después de que la transacción se compromete y el control se devuelve al cliente. A cambio de una mejora en el rendimiento, las transacciones comprometidas que no se guardan en disco se pierden en caso de fallo o fallo del servidor.

Además de las tablas persistentes optimizadas para memoria por defecto, SQL Server soporta tablas no permanentes no registradas y optimizadas para memoria, y sus datos no se conservan en disco. Esto significa que las transacciones en estas tablas no requieren ninguna entrada de salida de disco, pero si ocurre un fallo de servidor o conmutación por error, los datos se pierden.

El OLTP en memoria se integra con SQL Server para ofrecer una experiencia fluida en todos los aspectos, como desarrollo, despliegue, gestión y soporte. Una base de datos puede contener tanto objetos en memoria como objetos basados en disco.

Las filas de la tabla optimizada para memoria están versionadas. Esto significa que cada fila de la tabla puede tener varias versiones. Todas las versiones de fila se mantienen en la misma estructura de datos de tabla. El versionado de filas se utiliza para permitir lecturas y escrituras concurrentes en la misma fila. Para más información sobre lecturas y escrituras concurrentes en la misma fila, véase Cosas en la Tabla de Optimización de Memoria.

Pasos aproximados y limitaciones de uso

Pasos:

(1) Crear una base de datos y MEMORY_OPTIMIZED_DATA grupo de archivos (alterar la base de datos añadir grupo de archivos, ¡cada base de datos solo puede tener un grupo de archivos MEMORY_OPTIMIZED_DATA!) )
(2) Añadir una carpeta al grupo de archivos para almacenar los archivos de datos (por favor, no crees esta carpeta de antemano, usa alterar database add file() to filegroup)
(3) Crear tablas persistentes/no persistentes optimizadas para memoria (SQL Server 2014 se mantiene por defecto), y también debes definir una clave primaria basada en un índice hash no agregado. Los índices hasheados son el único tipo de índice soportado en tablas optimizadas para memoria.
(4) Utilizar procedimientos almacenados compilados localmente: Las tablas optimizadas para memoria soportan procedimientos almacenados compilados localmente, siempre que esos procedimientos almacenados solo hagan referencia a tablas optimizadas para memoria.

Límite:

(1) La tabla optimizada para memoria debe colocarse bajo la base de datos con el grupo de archivos CONTAINS MEMORY_OPTIMIZED_DATA.
(2) La tabla optimizada para memoria debe definir una clave primaria basada en un índice hash no agregado, y la tabla debe estar definidaNo se soporta la comprobación de claves externas o restricciones
(3) La tabla de optimización de memoria debe tener suficiente memoria, de lo contrario operaciones como la inserción de actualizaciones fallarán.
(4) SQL Server 2014 tiene muchas limitaciones en estas tablas. Por ejemplo, no soportan claves foráneas ni comprobación de restricciones (que se siente similar al motor de almacenamiento de memoria de MySQL), ellosTampoco se soportan campos IDENTITY ni disparadores DML

Usa el tutorial

Las versiones de la base de datos son las siguientes:

Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
        25 de septiembre de 2024 17:34:41
        Derechos de autor (C) 2022 Microsoft Corporation
        Edición Empresarial: Licencias basadas en núcleos (64 bits) en Linux (Ubuntu 22.04.4 LTS) <X64>

Primero, crea una base de datos y un grupo de archivos con el siguiente comando:

Si no creas un grupo optimizado para memoria, se reportará un error al crear una tabla optimizada para memoria:No se pueden crear tablas optimizadas para memoria. Para crear tablas optimizadas para memoria, la base de datos debe tener un MEMORY_OPTIMIZED_FILEGROUP que esté en línea y tenga al menos un contenedor.

Crea dos tablas optimizadas para la memoria para probar, una persistente y otra no persistente, con el siguiente comando:

La tabla de optimización de memoria tiene dos opciones (DURABILIDAD = SCHEMA_AND_DATA), (DURABILIDAD = SCHEMA_ONLY)
Tabla de durabilidad: DURABILIDAD =SCHEMA_AND_DATA
Tabla no persistente: DURABILIDAD =SCHEMA_ONLY

Las pruebas se insertan por separado en la tabla de optimización de memoria100.000 artículos(en realidad 100002 elementos), el comando es el siguiente:





La persistencia tarda 28 segundos en activarse y 1 segundo sin persistencia

Referencia:

El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.




Anterior:Me encanta reciclar el software de inspección de calidad de portátiles
Próximo:La sintaxis C# 8.0 usa el índice y el rango
 Propietario| Publicado el 10-5-2025 21:36:40 |
Una tabla normal inserta 100.000 piezas de datos y tarda 18 segundos en ejecutarse. Como se muestra a continuación:



Guión:
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com