Estoy investigando los beneficios de la actualización de MS SQL 2012 a 2014. Uno de los grandes puntos de venta de SQL 2014 son las tablas optimizadas de memoria, que aparentemente hacen que las consultas sean súper rápidas.
Descubrí que existen algunas limitaciones en las tablas con memoria optimizada, como:
- No hay
(max)
campos de tamaño - Máximo ~ 1 KB por fila
- Sin
timestamp
campos - No hay columnas calculadas
- Sin
UNIQUE
restricciones
Todos estos califican como molestias, pero si realmente quiero evitarlos para obtener los beneficios de rendimiento, puedo hacer un plan.
El verdadero pateador es el hecho de que no puede ejecutar una ALTER TABLE
declaración, y tiene que pasar por este rigmarole cada vez que agrega un campo a la INCLUDE
lista de un índice. Además, parece que debe excluir a los usuarios del sistema para realizar cambios en el esquema de las tablas MO en la base de datos en vivo.
Encuentro esto totalmente indignante, en la medida en que realmente no puedo creer que Microsoft haya invertido tanto capital de desarrollo en esta característica, y lo haya dejado tan poco práctico de mantener. Esto me lleva a la conclusión de que debo haber obtenido el extremo equivocado del palo; Debo haber entendido mal algo sobre las tablas optimizadas para la memoria que me ha llevado a creer que es mucho más difícil mantenerlas de lo que realmente es.
Entonces, ¿qué he entendido mal? ¿Has usado tablas MO? ¿Existe algún tipo de cambio o proceso secreto que los haga prácticos de usar y mantener?
No puede hacer clic con el botón derecho en una tabla con memoria optimizada para abrir un diseñador y agregar nuevas columnas como desee desde Sql Server Management Studio. Tampoco puede hacer clic dentro del nombre de la tabla como medio para renombrar la tabla. (SQL 2014 al momento de escribir esto).
En su lugar, puede hacer clic con el botón derecho en la tabla y escribir un comando de creación en una nueva ventana de consulta. Este comando de creación se puede modificar agregando nuevas columnas.
Por lo tanto, para modificar la tabla, puede almacenar los datos en una nueva tabla, tabla temporal o variable de tabla. Luego, podría soltar y volver a crear la tabla con el nuevo esquema, y finalmente volver a copiar en los datos reales . Este juego de 3 contenedores es solo un poco menos conveniente para la mayoría de los casos de uso.
Sin embargo, no tendría motivos para molestarse con las tablas de memoria optimizada si no está tratando de resolver un problema de rendimiento.
Luego, tendrá que sopesar si las limitaciones y las soluciones alternativas valen la pena para su caso de uso. ¿Tienes un problema de rendimiento? ¿Has probado todo lo demás? ¿Mejorará esto su rendimiento en 10-100x? Usarlo o no usarlo probablemente terminará siendo un poco obvio de cualquier manera.
fuente
puede usar OLTP en memoria en servidores operativos sin ningún problema importante. Utilizamos esta tecnología en una empresa de banca y pagos,
En general, podemos usar tablas con memoria optimizada cuando la carga de trabajo es demasiado alta. ¡Al usar OLTP en memoria puede alcanzar un mejor rendimiento hasta 30X! Microsoft corrige la mayoría de estas limitaciones en SQL Server 2016 y 2017. Las tablas optimizadas para memoria tienen una arquitectura completamente diferente en comparación con las tablas basadas en disco.
Las tablas optimizadas para memoria son dos tipos. Mesas duraderas y no duraderas. Las tablas duraderas y no duraderas mantienen que los datos de la tabla residen en la memoria. Además, las tablas más duraderas conservan datos en Discos para datos y esquemas de recuperación. En la mayoría de los escenarios operativos, deberíamos usar tablas duraderas porque la pérdida de datos es crítica aquí. en algunos escenarios, por ejemplo, carga y almacenamiento en caché de ETL, podemos usar tablas no durables.
Puedes usar estos libros electrónicos y aprender a usar esta tecnología:
Kalen Delaney: https://www.red-gate.com/library/sql-server-internals-in-memory-oltp
Dmitri Korotkevitch: https://www.apress.com/gp/book/9781484227718
fuente