Con la llegada de SQL Server 2014 aparece un nuevo motor escrito totalmente desde 0 para aprovechar al máximo las capacidades del HW actual. En esta sesión veremos en qué consiste el nuevo motor en memoria para cargas OLTP de alto rendimiento
7. 1. Reducir el número de
ciclos por instrucción
2. Mejorar la escalabilidad
(uso de recursos HW
mejor aprovechados)
3. Disminuir el número de
instrucciones ejecutadas
por petición
Aumentar
rendimiento
100x
Motivación
11. In-Memory en motor relacional
In-Memory OLTP
• 5-30x rendimiento en OLTP
• Integrado en SQL Server
In-Memory DataWarehouse
• 5-25x rendimiento
• Elevada compression
• Soporta clustered y escrituras
SSD Buffer pool extension
• Mejora transparente
• Hasta 3x rendimiento
Aplicación directa en cargas de trabajo
Entornos OLTP altamente
concurrentes
Entornos BI con DW
grandes y agregaciones
masivas
Entornos transaccionales
sobre OnDisk de grandes
volúmenes de datos
12. Pilares de In-Memory OLTP
Integracion completa
• T-SQL conocido
• Mismas herramientas
• Integrado
completamente en SQL
Server (sin licencia
extra)
Optimizado para memoria
RAM
• Nuevas estructuras de
almacenamiento
• Sin Buffer Pool
• Punteros a datos
• Todo son índices de
cobertura
Alta concurrencia
• Gestión de concurrencia
optimista multiversion
• Soporte ACID
• Nuevo motor con
algorimos lock-free
• Sin latches
T-SQL supereficiente
• T-SQL compilado a
código máquina en C
• Los SP son DLL
• Compilaciones
superagresivas a código
máquina
13. Integración
Memory-optimized table
filegroup Data filegroup
SQL Server.exe
In-memory OLTP engine for memory-
optimized tables and indexes
TDS handler and session management
Natively compiled SPs
and schema
Buffer pool for tables and indexes
Proc/plan cache for ad-hoc T-SQL
and SPs
Transaction log
Query interoperability
Non-durable
table T1 T4T3T2
T1 T4T3T2
T1 T4T3T2
T1 T4T3T2
Tables
Indexes
Interpreter for TSQL, query plans,
expressions
T1 T4T3T2
T1 T4T3T2
Checkpoint and recovery
Access methods
Parser,
Catalog,
Algebrizer,
Optimizer
In-Memory
OLTP Compiler
In-Memory
OLTP
component
Key
Existing SQL
component
Generated .dll
Client app
15. Concurrencia en In-Memory OLTP
Sin bloqueos
• Sin lock, latches
• Sin deadlocks
• Mínimo context switch
• Requiere gestión de
excepciones
Multiversionado
Alta concurrencia
• Se consigue el máximo
aprovechamiento HW
• Cuanta mas carga,
mayor rendimiento
comparable
• Solo se registran
commits
Aislamiento basado en
snapshot
• No se usa tempdb
• Duplicación temporal
de filas
Concurrencia optimista
18. Aumentos de rendimiento
In-Memory
OLTP
Compiler
In-Memory
OLTP
component
Memory-optimized table
filegroup
Data filegroup
SQL Server.exe
In-Memory OLTP engine for
memory-optimized tables and
indexes
TDS handler and session management
Natively compiled
SPs and schema
Buffer pool for tables and
indexes
Proc/plan cache for ad-hoc T-
SQL and SPs
Client app
Transaction log
Interpreter for TSQL, query
plans, and expressions
Query
interop
Access methods
Parser,
Catalog,
Algebrizer,
Optimizer
10-30x mas eficiente
Reducción de consumo
de log
Checkpoints
secuenciales y en
background
Sin mejoras en pila de
llamadas, paso de
parámetros o devolución
de resultados
Key
Existing SQL
component
Generated .dll
19. Aprovechamiento de In-Memory OLTP
Modo interpretado
• Hasta 3x de mejora de rendimiento
• Cuidado, podemos empeorar
• No requiere adaptar código
• Sintaxis completa
• Objetos in-memory y on-disk
• Recomendado para:
• Adhoc
• Migraciones rápidas a In-
Memory
Modo Nativo
• De 5x a 30x mejora de rendimiento
• En el caso peor 2x
• Adaptar stored procedures
• Sintaxis limitada
• Solo objetos in-memory
• Recomendado para:
• OLTP alto rendimiento
• Logica de negocio crítica
22. Soportado
Parcialmente soportado
No soportado
• AlwaysON
• FCI
• Log Shipping
• Resource Governor
• Integration services
• Dacpac y bacpack
• Replicación transaccional (p2p no soportada)
• Instancia: TDE, MARS, CDC (se puede pero no recomendado)
• Objetos in-memory con Particionado, compresion, linked server, CT
Soporte de In-Memory en SQL Server
23. Tablas
Procedimientos
almacenados nativos
• CASE
• Subqueries
• OR
• Outer join
• Funciones de Sistema limitadas a matematicas ,date/time y texto
Limitaciones en In-Memory OLTP 2014
• Triggers DDL/DML
• Tipos de datos LOB, XML o CLR
• Foreign key o check constraints
• ALTER TABLE
• Añadir/quitar nuevos índices
25. 26
Escenarios comunes de implementación In-Memory OLTP
Alto volumen de
inserción de datos
Alto volumen de
procesamiento
durante inserción
Alto volumen de
lecturas
Nuevos escenarios
• Escenario “shock absorver”
• Cargas masivas a DW
• Escenarios con tablas staging
• Similar al anterior
• *Lógica compleja en SP
• Caché transaccional
• Gestion de sesiones
• Zonas críticas que antes no se
podían poner en base de datos
relacional (generalmente por no
poderse escalar verticalmente)
• Sistemas altamente estresados
por peticiones de lecturas
• Las tablas de elevado % de
lecturas pueden ser cuello de
botella por LATCH_SH
26. Conclusiones
27
• Nuevo motor totalmente integrado y sin coste añadido
• Mejoras de rendimiento de hasta 30x
• Permite exprimir eficientemente tu HW actual
• Tus conocimientos T-SQL son perfectamente válidos