SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
#SQSummit
@
Nuevo motor relacional In-memory OLTP
400
Mentor
rgarrigos@solidq.com
MCT – MCAD – MCSD – MCSE - MCSA
Rubén Garrigós
Agenda
3
1. Evolución hardware
2. El motor In-Memory
3. Conclusiones
Evolución hardware
Descenso en el precio por GB
Aumento en la frecuencia y ancho de banda
Memoria máxima instalable en aumento
– 2005 2S  Xeon 7020  64 GB
– 2009 2S  X5680  288GB
– 2011 8S  E7-8870  4 TB
– 2013 2S  E5-2667 v2  768 GB
– 2014 8S  E7 v3  12 TB
Futura NVRAM
Memoria
5
Aumento de cores por socket en x86/x64
– 2006  1 o 2 cores por socket
– 2008  8 cores
– 2010  12 cores
– 2012  16 cores
– 2014  20 cores?
Aumento en la capacidad de proceso total
Aumento modesto en rendimiento por core
Las diferencias cada vez son menores entre
generaciones
CPU
Sistemas de almacenamiento
– Precio por TB en descenso
– Precio por IOPS en descenso
Las SAN siguen siendo caras para un sistema
dedicado
– SSDs + HDDs en DAS para DW
– SSDs PCI-e para OLTP
– Combinar con grupos de disponibilidad
Sistemas 100% sobre SSD y RAM
Entrada/salida
El motor In-Memory
Motor relacional escalable para OLTP de altísima
concurrencia
– Porcentaje de escrituras muy alto
– Lógica de procedimientos pesada/no orientada a
conjuntos
– Tiempos de respuesta estables
Alinearse con las tendencias hardware de los últimos
años
Capa de acceso muy escalable horizontalmente
Interoperable con el motor tradicional
– Acceso a tablas de los dos motores
• Transacciones entre tablas in-memory y tradicionales
Objetivos de diseño
Estructura de datos ~100% en memoria
Locks + Spinlocks + Latches
Concurrencia optimista opcional
Indexación con B-Trees
Planes compilados pero siempre interpretados
MAXDOP 1, paralelismo no aprovechable en
OLTP Ratios de escritura altos son problemáticos
– Concurrencia
– Log manager
Motor “tradicional” en OLTP a día de hoy
Estructuras de datos latch-free en RAM
Control de concurrencia optimista con
versionado de filas
Tablas hash & Bw-trees
Código compilado vs interpretado
Tablas volátiles o persistentes
Sin paralelismo en las ejecuciones
Decisiones técnicas
Si se ataca un componente la mejora es
limitada
– Relational Engine  Verde
– Storage Engine  Azul
– IO + Scheduling  Gris
El nuevo motor sustituye a casi todos estos
componentes
Optimizar la comunicación entre cliente y
server
– Llamadas a RPC directas a procs nativos
– Embeber la lógica de negocio en procs
nativos
Enfoque global
Lenguaje T-SQL
Reutilización
de componentes
Minimizar riesgos
Motor In-Memory OLTP
Creación de tablas lenta
Motor In-Memory OLTP
CREATE TABLE DDL
Convertir a estructura en código C
Llamar al compilador
Generar la DLL
Cargar la DLL
Compilación In-memory
SQL Engine
In-Memory
Engine
In-Memory
Engine
Código nativo
Integración “InterOp”
Memory-optimized Table Filegroup
Data Filegroup
TDS Handler and Session Management
Natively Compiled
SPs and Schema
Buffer Pool for Tables & Indexes
Proc/Plan cache for ad-hoc
T-SQL and SPs
Transaction Log
Query Interop
Memory_optimized Tables & Indexes
• Non-durable
• Durable Tables & Indexes
T1 T4
T3
T2
T1 T4
T3
T2
T1 T4
T3
T2
T1 T4
T3
T2
Tables
Indexes
Interpreter for TSQL, query plans,
expressions
T1 T4
T3
T2
T1 T4
T3
T2
Checkpoint & Recovery
Access Methods
Parser,
Catalog,
Algebrizer,
Optimizer
Hekaton
Compiler
Restricciones importantes para crear tablas
– FKs y CHECKS no soportados
– Collation BIN2
– No soporta tipos de datos “especiales” (XML, CLR,
varchar(max), etc.)
– Longitud total <=8060 bytes en definición
Otras restricciones para crear tablas
– Se necesita siempre una PK
– No se soportan triggers
– Creación tablas lenta
– No se pueden modificar ni renombrar, hay que recrearlas
Motor In-Memory OLTP
Indexación
– BUCKET_COUNT correcto
• Entre 1 y 2 veces el número de valores únicos de la clave
• Por defecto  Más colisiones
• Por exceso  Más consumo de memoria y scans más lentos
– 8 índices
• Máximo 1 UNIQUE, para la PK  No se puede modificar con un
update
• Todos incluyen todas las columnas  Consumo de memoria
multiplicado
– No se pueden añadir o modificar a posteriori, se definen con la
tabla
– No pueden ser filtrados
– No pueden incluir valores NULLables
Motor In-Memory OLTP
Indexación hash
– No podemos contar con claves que “cubran” prefijos comunes
– Hash afecta a todas las claves del índice
– No se optimizan operaciones como LIKE ‘prefijo%’
Indexación Bw-tree
– Búsquedas de rango, recorridos en orden (no a la inversa)
– Tamaño de páginas hoja variable
– Páginas intermedias no se modifican, se recrean y reapuntan
• Tamaño máximo 8 KB  Split
• Tamaño mínimo 10% o 1 fila  Merge
– Páginas hojas, se crean páginas delta con las diferencias
• Más de 16 cambios enlazados  se consolida
Motor In-Memory OLTP
Estadísticas en tablas en memoria
– Creación automática o manual
– Siempre fullscan y norecompute
– La actualización siempre manual
– La actualización no es bloqueante para procs nativos
No caer en el error de descuidar su mantenimiento
– Spill a tempdb en queries adhoc sobre tablas in-memory
– Consumo de CPU excesivo en procedimientos nativos
Motor In-Memory OLTP
100% garantizadas en memoria
– Ayudan a reducir la congestion en Tempdb
– SQL 2014 mejora el eager write para Tempdb
Necesitan un create type, no se pueden
definir inline al vuelo
Son útiles como contenedores
– Para los resultados intermedios
– Como parámetros de tipo tabla
Variables de tipo tabla In-Memory
SNAPSHOT
REPEATABLE READ
SERIALIZABLE
– Estos 3 son definibles en la clausula ATOMIC en procs
nativos
READ COMMITTED  Solo en statements
independientes
Transacciones Cross-Container típicas
– MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT
– Hint WITH (SNAPSHOT) para la tabla In-Memory
Niveles de aislamiento In-Memory
READ COMMITTED
READ_COMMITTED_SNAPSHOT  Statements
independientes sin acceso a tablas en disco
REPEATABLE READ/SERIALIZABLE  Si se inicia
desde TSQL interpretado se deben acceder a
tablas en memoria con SNAPSHOT
SNAPSHOT  Si se inicia desde TSQL
interpretado no se puede acceder a tablas en
memoria
Niveles aislamiento
Restricciones MUY importantes para compilar un
procedimiento
– Solo pueden acceder a tablas in-memory
– Cambios en las estadísticas no refrescan el código
generado
• Debemos tener datos y estadísticas frescas ANTES de crearlo
• Regenerar después de cada update statistics
– Se consideran todos los parámetros de entrada como
UNKNOWN
• Evitamos problemas de parameter sniffing
• Pero podemos obtener planes menos óptimos
Limitaciones
Restricciones MUY importantes para compilar un
procedimiento
– OR, IN, NOT, LIKE, CASE, UNION, OUTER JOIN, APPLY,
PIVOT, INTERSECT, EXCEPT…
– Subqueries, funciones, TVF, CTEs, windowing, ranking, …
– EXEC
– ROLLUP, CUBE, GROUPING SETS, DISTINCT
– Tablas temporales / Vistas
– Inserts de múltiples filas a la vez con VALUES, OUTPUT
– DELETE/UPDATE con FROM
– TOP (int) + SORT  < 8192 filas con 1 join, < 4096 con 2 joins..
– Largo etc.
Limitaciones
DEMO
Transformación a
procedimientos nativos
Whitepaper de Microsoft Research
http://research.microsoft.com/pubs/193594/Hekaton%20-
%20Sigmod2013%20final.pdf
Gran importancia de usar procs nativos
Otras limitaciones
– Sin soporte de transacciones entre bases de datos o
distribuidas (solo con tempdb)
– No soporta MERGE con target in-memory
– No soporta cursores dynamic ni keyset, tampoco API
de cursor
– Nos fuerza a incluir en la aplicación lógica de
reintentos más compleja
– Reinicios de instancia más costosos  Grupos de
disponibilidad
– Solo en Enterprise Edition
Limitaciones colaterales
Si vamos a Enterprise únicamente por In-Memory…
– Hasta 4 sockets/16 cores físicos  Hasta 32 lógicos con
HT
– Hasta 128 GB de RAM + Buffer Pool Extension de hasta
512 GB
– 1200€ vs 5000€ por core  4.16x  > 60K en 16 cores
Si ya tenemos Enterprise
– Buscar puntos con contención por locks/latches/spinlocks
– Buscar algoritmos iterativos fila a fila
– Buscar algoritmos con pasos con tablas temporales
intermedias
– Buscar puntos con mucha escritura en el log de
transacciones
Standard vs Enterprise
DEMO
Aplicando In-Memory en
puntos calientes
– CHECKDB/CHECKTABLE
– Replicación
– Auditoría/change tracking
– Fulltext
– Filestream
– Compresión
– Encriptación
– Partitioning
– Mirroring
– Database snapshots
– MARS
– Linked Servers
– Y un largo etc.
Limitaciones colaterales
Log stream
– Se escribe al final de la transacción, antes del commit, no
durante la transacción  transacciones cortas
– Solo se registran los cambios en datos, no en índices
– Al transaction log, lo mínimo y empaquetado por filas
– La latencia al log sigue siendo crítica  SSD
– Los updates siempre delete + insert
Checkpoint streams
– Checkpoint File Pairs - CFPs
– Data streams  Todas las versiones de filas insertadas
– Delta streams  Versiones de filas borradas
Persistencia a disco
Offline checkpoint
– Thread para checkpoint
en background
– Estilo logreader
– Reducir los picos
– Enfoque similar al
incremental checkpoint
Ficheros de datos y delta
Memory Optimized Data Filegroup
Range
300-399
Range
100-199
Range
200-299
Range
400-499
Range
500-
offline checkpoint Thread
Persistencia a disco
Checkpoint automático al llegar a 512 MB de log
El proceso de checkpoint solo actualiza
metadatos y fuerza flush a disco
A partir del último checkpoint, los CFPs y la cola
del log se produce el recovery
Se busca que los pares de datos y delta tengan un
tamaño controlado de hasta 128 MB  una
transacción grande lo puede exceder
Recomendable no tener más de 256 GB en tablas
In-memory
– Dimensionar para 500 GB y 4000 CFPs
– Si llegamos a 1 TB o 8000 CFPs  Stall
Recovery
En paralelo al recovery tradicional
Paralelismo máximo
1 thread por core
1 CFP por thread
– Leer los ficheros
– Crear los índices
– Fuerza bruta de IO
Conclusiones
In-Memory OLTP se ha diseñado pensando en
hardware actual y su evolución previsible
Aplicable a escenarios concretos, no en general
Es necesario rediseño y/o adaptación de aplicaciones
Puede sustituir complejos sistemas de caché
Esto es solo una V1 pero la apuesta de MS es fuerte
– Creemos que el futuro del OLTP es sobre tablas en
memoria
– Si ya tienes Enterprise Edition, aprovecha y sácale partido
Un OLTP con mucha concurrencia de peticiones muy
fuertemente optimizadas puede ser una bomba de
relojería
43
Power BI para usuarios de negocio
43
Curso online
Clases virtuales presenciales
14, 15, 16, 21, 22 y 23 de Julio
De 16 a 20 h
Máster en BI 4ª Edición (Inicio Octubre 2014)
- Clases presenciales virtuales
- 450 horas (60 ECTS)
- SolidQ – UPM
- Clases + trabajo práctico + proyecto
- Beca de hasta 1.300 € para los primeros inscritos.
Máster en Big Data & Analytics
1ª Edición (Inicio Octubre 2014)
- Clases presenciales virtuales
- 1 año (60 ECTS) UMA
- Clases + trabajo práctico + proyecto
Información e inscripción:
http://university.solidq.com / ibinfo@solidq.com

Más contenido relacionado

Similar a Nuevo motor relacional In-memory OLTP

Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...SpanishPASSVC
 
Lo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql serverLo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql serverEnrique Catala Bañuls
 
Consideraciones de hardware para SQL Server
Consideraciones de hardware para SQL ServerConsideraciones de hardware para SQL Server
Consideraciones de hardware para SQL ServerEduardo Castro
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
MS SQL Server 2014 - In-Memory OLTP
MS SQL Server 2014 - In-Memory OLTPMS SQL Server 2014 - In-Memory OLTP
MS SQL Server 2014 - In-Memory OLTPJoseph Lopez
 
Tech day sql server 2014 nuevas características - g-taylor
Tech day   sql server 2014 nuevas características - g-taylorTech day   sql server 2014 nuevas características - g-taylor
Tech day sql server 2014 nuevas características - g-taylorHelver Gilberto Parra Gonzalez
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Antonio Ognio
 
In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016Joseph Lopez
 
Optimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassOptimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassJulián Castiblanco
 
Introducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltpIntroducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltpEliana Caraballo
 
Entendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerEntendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerJoseph Lopez
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IOSpanishPASSVC
 
SQL Server 2014 Mejoras del DB Engine
SQL Server 2014 Mejoras del DB EngineSQL Server 2014 Mejoras del DB Engine
SQL Server 2014 Mejoras del DB EngineEduardo Castro
 
In memory
In memoryIn memory
In memorySolidQ
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerSpanishPASSVC
 
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...SolidQ
 
Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016Eduardo Castro
 
Carbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshareCarbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshareJulián Castiblanco
 

Similar a Nuevo motor relacional In-memory OLTP (20)

Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
 
Lo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql serverLo que siempre has querido saber para exprimir sql server
Lo que siempre has querido saber para exprimir sql server
 
Consideraciones de hardware para SQL Server
Consideraciones de hardware para SQL ServerConsideraciones de hardware para SQL Server
Consideraciones de hardware para SQL Server
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
MS SQL Server 2014 - In-Memory OLTP
MS SQL Server 2014 - In-Memory OLTPMS SQL Server 2014 - In-Memory OLTP
MS SQL Server 2014 - In-Memory OLTP
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
Tech day sql server 2014 nuevas características - g-taylor
Tech day   sql server 2014 nuevas características - g-taylorTech day   sql server 2014 nuevas características - g-taylor
Tech day sql server 2014 nuevas características - g-taylor
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016
 
Optimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassOptimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL Pass
 
Introducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltpIntroducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltp
 
Entendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerEntendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL Server
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
 
SQL Server 2014 Mejoras del DB Engine
SQL Server 2014 Mejoras del DB EngineSQL Server 2014 Mejoras del DB Engine
SQL Server 2014 Mejoras del DB Engine
 
In memory
In memoryIn memory
In memory
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
 
In-Memory OLTP en SQL Server 2014
In-Memory OLTP en SQL Server 2014In-Memory OLTP en SQL Server 2014
In-Memory OLTP en SQL Server 2014
 
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
 
Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016
 
Carbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshareCarbura tusql sesion2_slideshare
Carbura tusql sesion2_slideshare
 

Más de SolidQ

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?SolidQ
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en LinuxSolidQ
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida realSolidQ
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízateSolidQ
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksSolidQ
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BISolidQ
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesSolidQ
 
R en relacional
R en relacionalR en relacional
R en relacionalSolidQ
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!SolidQ
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en AzureSolidQ
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018SolidQ
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018SolidQ
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018SolidQ
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018SolidQ
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...SolidQ
 

Más de SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 

Último (19)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 

Nuevo motor relacional In-memory OLTP

  • 1. #SQSummit @ Nuevo motor relacional In-memory OLTP 400 Mentor rgarrigos@solidq.com MCT – MCAD – MCSD – MCSE - MCSA Rubén Garrigós
  • 2. Agenda 3 1. Evolución hardware 2. El motor In-Memory 3. Conclusiones
  • 4. Descenso en el precio por GB Aumento en la frecuencia y ancho de banda Memoria máxima instalable en aumento – 2005 2S  Xeon 7020  64 GB – 2009 2S  X5680  288GB – 2011 8S  E7-8870  4 TB – 2013 2S  E5-2667 v2  768 GB – 2014 8S  E7 v3  12 TB Futura NVRAM Memoria 5
  • 5. Aumento de cores por socket en x86/x64 – 2006  1 o 2 cores por socket – 2008  8 cores – 2010  12 cores – 2012  16 cores – 2014  20 cores? Aumento en la capacidad de proceso total Aumento modesto en rendimiento por core Las diferencias cada vez son menores entre generaciones CPU
  • 6. Sistemas de almacenamiento – Precio por TB en descenso – Precio por IOPS en descenso Las SAN siguen siendo caras para un sistema dedicado – SSDs + HDDs en DAS para DW – SSDs PCI-e para OLTP – Combinar con grupos de disponibilidad Sistemas 100% sobre SSD y RAM Entrada/salida
  • 8. Motor relacional escalable para OLTP de altísima concurrencia – Porcentaje de escrituras muy alto – Lógica de procedimientos pesada/no orientada a conjuntos – Tiempos de respuesta estables Alinearse con las tendencias hardware de los últimos años Capa de acceso muy escalable horizontalmente Interoperable con el motor tradicional – Acceso a tablas de los dos motores • Transacciones entre tablas in-memory y tradicionales Objetivos de diseño
  • 9. Estructura de datos ~100% en memoria Locks + Spinlocks + Latches Concurrencia optimista opcional Indexación con B-Trees Planes compilados pero siempre interpretados MAXDOP 1, paralelismo no aprovechable en OLTP Ratios de escritura altos son problemáticos – Concurrencia – Log manager Motor “tradicional” en OLTP a día de hoy
  • 10. Estructuras de datos latch-free en RAM Control de concurrencia optimista con versionado de filas Tablas hash & Bw-trees Código compilado vs interpretado Tablas volátiles o persistentes Sin paralelismo en las ejecuciones Decisiones técnicas
  • 11. Si se ataca un componente la mejora es limitada – Relational Engine  Verde – Storage Engine  Azul – IO + Scheduling  Gris El nuevo motor sustituye a casi todos estos componentes Optimizar la comunicación entre cliente y server – Llamadas a RPC directas a procs nativos – Embeber la lógica de negocio en procs nativos Enfoque global
  • 13. Creación de tablas lenta Motor In-Memory OLTP CREATE TABLE DDL Convertir a estructura en código C Llamar al compilador Generar la DLL Cargar la DLL
  • 15. Integración “InterOp” Memory-optimized Table Filegroup Data Filegroup TDS Handler and Session Management Natively Compiled SPs and Schema Buffer Pool for Tables & Indexes Proc/Plan cache for ad-hoc T-SQL and SPs Transaction Log Query Interop Memory_optimized Tables & Indexes • Non-durable • Durable Tables & Indexes T1 T4 T3 T2 T1 T4 T3 T2 T1 T4 T3 T2 T1 T4 T3 T2 Tables Indexes Interpreter for TSQL, query plans, expressions T1 T4 T3 T2 T1 T4 T3 T2 Checkpoint & Recovery Access Methods Parser, Catalog, Algebrizer, Optimizer Hekaton Compiler
  • 16. Restricciones importantes para crear tablas – FKs y CHECKS no soportados – Collation BIN2 – No soporta tipos de datos “especiales” (XML, CLR, varchar(max), etc.) – Longitud total <=8060 bytes en definición Otras restricciones para crear tablas – Se necesita siempre una PK – No se soportan triggers – Creación tablas lenta – No se pueden modificar ni renombrar, hay que recrearlas Motor In-Memory OLTP
  • 17. Indexación – BUCKET_COUNT correcto • Entre 1 y 2 veces el número de valores únicos de la clave • Por defecto  Más colisiones • Por exceso  Más consumo de memoria y scans más lentos – 8 índices • Máximo 1 UNIQUE, para la PK  No se puede modificar con un update • Todos incluyen todas las columnas  Consumo de memoria multiplicado – No se pueden añadir o modificar a posteriori, se definen con la tabla – No pueden ser filtrados – No pueden incluir valores NULLables Motor In-Memory OLTP
  • 18. Indexación hash – No podemos contar con claves que “cubran” prefijos comunes – Hash afecta a todas las claves del índice – No se optimizan operaciones como LIKE ‘prefijo%’ Indexación Bw-tree – Búsquedas de rango, recorridos en orden (no a la inversa) – Tamaño de páginas hoja variable – Páginas intermedias no se modifican, se recrean y reapuntan • Tamaño máximo 8 KB  Split • Tamaño mínimo 10% o 1 fila  Merge – Páginas hojas, se crean páginas delta con las diferencias • Más de 16 cambios enlazados  se consolida Motor In-Memory OLTP
  • 19. Estadísticas en tablas en memoria – Creación automática o manual – Siempre fullscan y norecompute – La actualización siempre manual – La actualización no es bloqueante para procs nativos No caer en el error de descuidar su mantenimiento – Spill a tempdb en queries adhoc sobre tablas in-memory – Consumo de CPU excesivo en procedimientos nativos Motor In-Memory OLTP
  • 20. 100% garantizadas en memoria – Ayudan a reducir la congestion en Tempdb – SQL 2014 mejora el eager write para Tempdb Necesitan un create type, no se pueden definir inline al vuelo Son útiles como contenedores – Para los resultados intermedios – Como parámetros de tipo tabla Variables de tipo tabla In-Memory
  • 21. SNAPSHOT REPEATABLE READ SERIALIZABLE – Estos 3 son definibles en la clausula ATOMIC en procs nativos READ COMMITTED  Solo en statements independientes Transacciones Cross-Container típicas – MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT – Hint WITH (SNAPSHOT) para la tabla In-Memory Niveles de aislamiento In-Memory
  • 22. READ COMMITTED READ_COMMITTED_SNAPSHOT  Statements independientes sin acceso a tablas en disco REPEATABLE READ/SERIALIZABLE  Si se inicia desde TSQL interpretado se deben acceder a tablas en memoria con SNAPSHOT SNAPSHOT  Si se inicia desde TSQL interpretado no se puede acceder a tablas en memoria Niveles aislamiento
  • 23. Restricciones MUY importantes para compilar un procedimiento – Solo pueden acceder a tablas in-memory – Cambios en las estadísticas no refrescan el código generado • Debemos tener datos y estadísticas frescas ANTES de crearlo • Regenerar después de cada update statistics – Se consideran todos los parámetros de entrada como UNKNOWN • Evitamos problemas de parameter sniffing • Pero podemos obtener planes menos óptimos Limitaciones
  • 24. Restricciones MUY importantes para compilar un procedimiento – OR, IN, NOT, LIKE, CASE, UNION, OUTER JOIN, APPLY, PIVOT, INTERSECT, EXCEPT… – Subqueries, funciones, TVF, CTEs, windowing, ranking, … – EXEC – ROLLUP, CUBE, GROUPING SETS, DISTINCT – Tablas temporales / Vistas – Inserts de múltiples filas a la vez con VALUES, OUTPUT – DELETE/UPDATE con FROM – TOP (int) + SORT  < 8192 filas con 1 join, < 4096 con 2 joins.. – Largo etc. Limitaciones
  • 26. Whitepaper de Microsoft Research http://research.microsoft.com/pubs/193594/Hekaton%20- %20Sigmod2013%20final.pdf Gran importancia de usar procs nativos
  • 27. Otras limitaciones – Sin soporte de transacciones entre bases de datos o distribuidas (solo con tempdb) – No soporta MERGE con target in-memory – No soporta cursores dynamic ni keyset, tampoco API de cursor – Nos fuerza a incluir en la aplicación lógica de reintentos más compleja – Reinicios de instancia más costosos  Grupos de disponibilidad – Solo en Enterprise Edition Limitaciones colaterales
  • 28. Si vamos a Enterprise únicamente por In-Memory… – Hasta 4 sockets/16 cores físicos  Hasta 32 lógicos con HT – Hasta 128 GB de RAM + Buffer Pool Extension de hasta 512 GB – 1200€ vs 5000€ por core  4.16x  > 60K en 16 cores Si ya tenemos Enterprise – Buscar puntos con contención por locks/latches/spinlocks – Buscar algoritmos iterativos fila a fila – Buscar algoritmos con pasos con tablas temporales intermedias – Buscar puntos con mucha escritura en el log de transacciones Standard vs Enterprise
  • 30. – CHECKDB/CHECKTABLE – Replicación – Auditoría/change tracking – Fulltext – Filestream – Compresión – Encriptación – Partitioning – Mirroring – Database snapshots – MARS – Linked Servers – Y un largo etc. Limitaciones colaterales
  • 31. Log stream – Se escribe al final de la transacción, antes del commit, no durante la transacción  transacciones cortas – Solo se registran los cambios en datos, no en índices – Al transaction log, lo mínimo y empaquetado por filas – La latencia al log sigue siendo crítica  SSD – Los updates siempre delete + insert Checkpoint streams – Checkpoint File Pairs - CFPs – Data streams  Todas las versiones de filas insertadas – Delta streams  Versiones de filas borradas Persistencia a disco
  • 32. Offline checkpoint – Thread para checkpoint en background – Estilo logreader – Reducir los picos – Enfoque similar al incremental checkpoint Ficheros de datos y delta Memory Optimized Data Filegroup Range 300-399 Range 100-199 Range 200-299 Range 400-499 Range 500- offline checkpoint Thread
  • 33. Persistencia a disco Checkpoint automático al llegar a 512 MB de log El proceso de checkpoint solo actualiza metadatos y fuerza flush a disco A partir del último checkpoint, los CFPs y la cola del log se produce el recovery Se busca que los pares de datos y delta tengan un tamaño controlado de hasta 128 MB  una transacción grande lo puede exceder Recomendable no tener más de 256 GB en tablas In-memory – Dimensionar para 500 GB y 4000 CFPs – Si llegamos a 1 TB o 8000 CFPs  Stall
  • 34. Recovery En paralelo al recovery tradicional Paralelismo máximo 1 thread por core 1 CFP por thread – Leer los ficheros – Crear los índices – Fuerza bruta de IO
  • 35. Conclusiones In-Memory OLTP se ha diseñado pensando en hardware actual y su evolución previsible Aplicable a escenarios concretos, no en general Es necesario rediseño y/o adaptación de aplicaciones Puede sustituir complejos sistemas de caché Esto es solo una V1 pero la apuesta de MS es fuerte – Creemos que el futuro del OLTP es sobre tablas en memoria – Si ya tienes Enterprise Edition, aprovecha y sácale partido Un OLTP con mucha concurrencia de peticiones muy fuertemente optimizadas puede ser una bomba de relojería
  • 36. 43 Power BI para usuarios de negocio 43 Curso online Clases virtuales presenciales 14, 15, 16, 21, 22 y 23 de Julio De 16 a 20 h Máster en BI 4ª Edición (Inicio Octubre 2014) - Clases presenciales virtuales - 450 horas (60 ECTS) - SolidQ – UPM - Clases + trabajo práctico + proyecto - Beca de hasta 1.300 € para los primeros inscritos. Máster en Big Data & Analytics 1ª Edición (Inicio Octubre 2014) - Clases presenciales virtuales - 1 año (60 ECTS) UMA - Clases + trabajo práctico + proyecto Información e inscripción: http://university.solidq.com / ibinfo@solidq.com