http://summit.solidq.com
En esta sesión vamos a analizar las novedades que SQL Server 2016 nos trae en In-Memory OLTP. En esta nueva versión se han eliminado una gran cantidad de limitaciones que hacen que podamos finalmente aplicar esta tecnología a un gran número de escenarios. Mostraremos situaciones habituales donde gracias a esta tecnología podremos reducir la contención por concurrencia y aumentar el rendimiento de nuestra base de datos de forma muy considerable.
4. Introducción a In-Memory OLTP
• Sistemas OLTP “extremos” que requieren
• Alta concurrencia
• Baja latencia
• Gran escalabilidad
• Otros escenarios
• Tablas staging
• Tablas o variables temporales
• Procesos cálculo masivo
• Procesos iterativos (cursores)
• Operaciones frenadas por el transaction log
5. Introducción a In-Memory OLTP
• Dos componentes principales
• Tablas en memoria
• Procedimientos almacenados compilados nativos
• Parte importante de los beneficios de
rendimiento vienen con la combinación de
ambos
• Tendencia general en los motores de BBDD
• DB2 BLU, Oracle Database In-Memory, VoltDB,
EXASolution, etc.
6. Tablas en memoria
• La tabla está completamente en memoria
• Sin esperas de accesos a disco lecturas y escrituras
• Nuevas estructuras sin latches
• Tablas hash (sin orden) y árboles BW (ordenados)
• Concurrencia optimista con versionado de filas
• Durabilidad configurable
• Pueden interoperar con el resto de tablas
“tradicionales”
• No sustituyen a las tablas “tradicionales”
7. Procedimientos almacenados
compilados nativos
• Se compilan a código C nativo
• Proceso costoso y lento
• Se enlazan al proceso de SQL Server como otra
DLL más.
• Únicamente pueden acceder a tablas en
memoria, no a tablas “tradicionales”
• Una llamada RPC apunta directamente al
punto de entrada de la DLL
• Ejecución muy rápida y eficiente
9. Mejoras en SQL Server 2016
• Usabilidad
• Menor número de stoppers
• Interoperabilidad
• Mantenimiento
• Más sencillo pero con impacto
• Rendimiento
• Paralelismo y multithread
• Columnstore sobre tablas en memoria
10. Usabilidad tablas en memoria
• Soporte de todos los collations para cadenas
• BIN2 seguirá siendo más rápido y preferible
• Soporte LOB
• Índices con columnas que aceptan NULL
• Restricciones FOREIGN KEY
• Restricciones CHECK
• Restricciones UNIQUE
• Triggers (AFTER) para INSERT/UPDATE/DELETE
11. Usabilidad módulos nativos
compilados
• LEFT/RIGHT OUTER JOIN
• OR y NOT
• UNION / UNION ALL
• SELECT DISTINCT
• Subqueries (EXISTS, IN)
• Llamadas anidadas
• OUTPUT
13. Mantenimiento
• Comandos ALTER TABLE
• Cambios de esquema/indexación
• Actualización automática de estadísticas
• ALTER y sp_recompile para módulos nativos
compilados (no se recompila por estadísticas)
• Query store
• Estadísticas runtime desactivadas (activación granular)
• Tiempo de compilación no incluye la compilación en C
• Sin soporte CHECKDB
• CHECKSUMs verificados durante full backup
14. Rendimiento
• Hasta 2TB de tablas en memoria
• Paralelismo
• Scans paralelos de índices hash / non-clustered
• Planes paralelos junto a tablas tradicionales
• Multithread
• Checkpoint
• Recovery
• Merge de segmentos
• UDFs compiladas nativas
15. Rendimiento
• Full In-Memory
• OLTP + Columnar
• Columnstore sobre
tablas en memoria
• ~10-15% extra
• COMPRESSION_DELAY
• Reducir fragmentación
• Columnstore filtrado
17. Ejemplos de uso
• No siempre “compensa” utilizar In-Memory
• Consumo recursos
• Limitaciones
• Coste adaptación
• Rendimiento
• Analizar caso a caso
• En sistemas heredados recomendamos focalizarse
en procesos problemáticos
• En nuevos desarrollos evaluar ventajas e
inconvenientes para maximizar su utilización
26. También puedes preguntar tus
dudas con el hashtag
#SQSummit en Twitter
ADAPTIVE BI FRAMEWORK
Te ayudaremos a mejorar la velocidad de desarrollo de tu plataforma de
analítica de negocio basada en nuestra experiencia:
•Diseña antes de construir
•Automatización de procesos por ETL
•Servicios de mentoring para ayudarte a conseguir mejores prácticas para la construcción
de procesos específicos y plataformas de analítica de negocio
•Muy fácil de mantener
SOLIDQ FLEX SERVICES
Con SolidQ Flex Services evitarás sustos, consiguiendo que tus sistemas
sean estables. Desde una solución sencilla de monitorización, hasta un
servicio de atención de incidencias 24/7, mantenimiento proactivo,
resolución de problemas y línea de soporte.
Todo con un coste fijo mensual… y tú dedica el tiempo a las cosas
importantes.
¡Gracias!