#SQSummit
@enriquecatala
Novedades de SQL Server 2014 en
Motor Relacional
Mentor
MVP – MCT – MCSE
Enrique Catalá Bañuls
Agenda
2
1. In-Memory OLTP
2. In-Memory DataWarehouse
3. Buffer Pool Extension
4. Resource Governor para IO
5. Operaciones online
6. Mejoras en motor On-Disk
In-Memory motor relacionalEn SQL Server 2014
4
In-Memory OLTP
• 5-30x rendimiento en
OLTP
• Integrado en SQL Server
In-Memory
DataWarehouse
• 5-25x rendimiento
• Elevada compression
• Soporta clustered y
escrituras
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
Pilares In-Memory OLTP
5
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
DEMO
6
In-Memory OLTP
Agenda
7
1. In-Memory OLTP
2. In-Memory DataWarehouse
3. Buffer Pool Extension
4. Resource Governor para IO
5. Operaciones online
6. Mejoras en motor On-Disk
• Disco y memoria
• Integrado en el core
• Beneficios
• 10x-100x mas rápido
• Transparente
• Facil implantación
In-Memory DataWarehouseColumnar indexes
8
C
1
C
2
C
3
C
5
C
6
C
4Columnstore Index Representation
• Unidad básica de transferencia disco-memoria
• Contiene valores de una sola columna
• Row Group=filas de varios segmentos
• Cada segmento en LOB diferente
In-Memory DataWarehouseSegmentos
9
C1 C2 C3 C5 C6C4
Row
group
Segments
In-Memory DataWarehouse
10
• Clustered y actualizables NUEVO!
• Particionado NUEVO!
• Elevada compresión NUEVO!
• No es necesario más índices
• Pensados para grandes volúmenes
• Tabla en nuevo formato
• No duplica espacio
In-Memory DataWarehouseBeneficios
11
In-Memory DataWarehouseDiferencias
12
NONCLUSTERED
columnstore
CLUSTERED
columnstore
• SQL Server 2014
• Write-read
• Estructura nueva de objeto
• Contiene deltastore en
rowstore temporal y deltas
• SQL Server 2012+
• Readonly
• Duplica espacio
• Contiene subset de columnas
DEMO
13
In-MemoryDataWarehouse
In-Memory DataWarehouseCompresión
14
19,7GB
10,9GB
5,0GB4,0GB
6,9GB
1,8GB
TABLE WITH
CUSTOMARY
INDEXING
TABLE WITH
CUSTOMARY
INDEXING (PAGE
COMPRESSION)
TABLE WITH NO
INDEXING
TABLE WITH NO
INDEXING (PAGE
COMPRESSION)
TABLE WITH
COLUMNSTORE
INDEX
CLUSTERED
COLUMNSTORE
Agenda
15
1. In-Memory OLTP
2. In-Memory DataWarehouse
3. Buffer Pool Extension
4. Resource Governor para IO
5. Operaciones online
6. Mejoras en motor On-Disk
• Caché de segundo nivel
• Optimización transparente OLTP (3x-10x)
• Durable
Buffer pool extension
16
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION
{ ON ( FILENAME = 'os_file_path_and_name'
, SIZE = <size> [ KB | MB | GB ] )
| OFF }
Buffer pool extension
17
Buffer pool extension
19
Beneficios
Buenas prácticas• Tamaño hasta 1:32 RAM:BPE
• Recomendado 1:4 a 1:8
• Testear, impacto negativo en escrituras
• Transparencia
• Maximizar ROI hardware actual
• Minimizar cuellos de botella I/O
• Más barato que RAM en grandes cantidades
• Valido para Standard Edition
Agenda
20
1. In-Memory OLTP
2. In-Memory DataWarehouse
3. Buffer Pool Extension
4. Resource Governor para IO
5. Operaciones online
6. Mejoras en motor On-Disk
Resource Governor
21
Resource Governor
22
SQL Server 2012
• # Resource pools 64 (antes 20)
• AFFINITY para vincular a nodos NUMA
• Nuevo CAP_CPU_PERCENT
• Se gobiernan multipage allocations (nuevo memorymanager)
SQL Server 2014 • Limitar IOPS por volumen
Resource Governor para IONuevo!
23
CREATE RESOURCE POOL pool_name
[ WITH
( [ MIN_CPU_PERCENT = value ]
[ [ , ] MAX_CPU_PERCENT = value ]
[ [ , ] CAP_CPU_PERCENT = value ]
[ [ , ] AFFINITY {SCHEDULER = AUTO |
(Scheduler_range_spec) | NUMANODE =
(NUMA_node_range_spec)} ]
[ [ , ] MIN_MEMORY_PERCENT = value ]
[ [ , ] MAX_MEMORY_PERCENT = value ]
[ [ , ] MIN_IOPS_PER_VOLUME = value ]
[ [ , ] MAX_IOPS_PER_VOLUME = value ])
]
DEMO
24
Resource Governor para IO
Agenda
25
1. In-Memory OLTP
2. In-Memory DataWarehouse
3. Buffer Pool Extension
4. Resource Governor para IO
5. Operaciones online
6. Mejoras en motor On-Disk
Desafios resueltos en las VLTVery Large Tables
26
Mantenimiento
Rendimiento• Entorno transaccional
• Reportes
• Índices
• Estadísticas
• Historificación
• Espacio
DEMO
27
Desafios resueltos en las VLT
Agenda
28
1. In-Memory OLTP
2. In-Memory DataWarehouse
3. Buffer Pool Extension
4. Resource Governor para IO
5. Operaciones online
6. Mejoras motor On-Disk
Relajado el proceso de envío de páginas
sucias a disco para tempdb
TempdbPor fin!
29
Select into … #tmp
• Bulk inserts
• Select into .. #tmp
SORT_IN_TEMPDB
• Creacion de índices con
SORT_IN_TEMP_DB
Tablas temporales en RAM en % elevado
Optimización directa solo por migrar
Cardinality estimatorEl mayor cambio en el motor “OnDisk” desde SQL Server 7.0
30
• Aporta el nº de registros
involucrados en la
sentencia (en cada paso)
• Estima el recuento de
filas afectadas
• Aporta distribución de
valores
• Aporta info distinct
count
• Aporta info sobre
duplicados
Est
imarse
lecti
vid
ad
del p
red
icad
oWHERE
• Se decide el algoritmo de obtención de datos
• Malas interpretaciones producen
• Malos planes de ejecución
• Mal rendimiento de consultas
Cardinality estimatorEl mayor cambio en el motor “OnDisk” desde SQL Server 7.0
31
Cardinality estimatorDesde SQL Server 7.0 hasta SQL Server 2012
32
Independencia
• Distribución de datos
independiente de unos
campos a otros salvo
que se indique lo
contrario
Uniformidad
• Los valores se
distribuyen
uniformemente
Contenido
• Si algo se busca será
porque existe
• Si una table se cruza,
será porque existe el
dato en ambas
• El rango menor se
asume contenido en el
mayorInclusión
• En equijoin se assume
que el valor existe
¿Acaso eso
sucede?
Threshold update statisticsEn SQL Server 2008 R2 SP1
33
DEMO
35
-Tempdb
-Incremental statistics
Novedades en SQL Server 2014Que no dan tiempo en esta sesión…
36
AlwaysON
• Hasta 8 secundarios
• 4 síncronos
• Soporte nativo para
cloud
• Leer secundarios con
principal caido
Gestión
• Backups
autogestionados
• Herramientas de análisis
para migrar a In-Memory
• Mejor soporte
ExtendedEvents
• Estadísticas
incrementales
Entornos híbridos
• Atachar ficheros de
BBDD en cloud
• Backups a la nube
• Migración a la nube
Con WS2012 R2
• 640 Cores
• 4Tb de RAM
• Virtual
• 64 cores y 1Tb ram
• Soporte SMB Direct 3.0
Seguridad
• Cifrado de backups
• Nuevos roles y permisos
granulares
Desarrollo
• SQL Server Data Tools
• Ahora para BI
ResumenExprime al máximo tu HW actual !!!
37
In-memory
• In-memory OLTP
• In-memory DW
• Buffer pool extension
Administración
• Mejoras en operaciones
online
• Resource governor para
IO
On-disk
• Nuevo cardinality
estimator
• Reescritura de
componente clave
planes ejecución
• Estadísticas
incrementales
La mayor actualización desde SQL Server 2005
Escalabilidad verticalMejorar disponibilidad
del datoMigrar == optimizar¿?
¿Preguntas?
38
¡Gracias!
Siéntate a comer con nosotros o tómate un café y aclara tus
dudas
39
@enriquecatala
Mentor – MVP SQL Server
Enrique Catalá Bañuls