2. Bienvenida
• Ing. Eduardo Castro, PhD
• MVP de Microsoft SQL Server
• PASS Regional de Mentor
• PASS Board of Directors
• http://www.youtube.com/eduardocastrom
3. Material de Referencia
SQL Server Evolution. SQL 2016 new innovations. Lindsey Allen Principal Group Program
Manager, Borko Novakovic
Program Manager
New in Master Data Services and Integration Services in SQL Server 2016. Matt Masson
SQL Server Evolution. Shawn Bice Engineering Partner Director
Operational Analytics in SQL Server. Sunil Agarwal Principal Program Manager
4. Plataforma de misión crítica
Desempeño
Operational Analytics
• Reduciralmínimoimpactoenel
rendimientocorriendoanálisisen
tiemporealdedatosdela
transacción
• Evitarladispersióndedatos
InMemory OLTP para
más aplicaciones
Query Store
Seguridad
Always
Encrypted
Row level
security
Dynamic Data
Masking
Disponibilidad
Enhanced
AlwaysOn
• 3réplicassíncronaspara
failoverautomáticoatravésde
dominios
• elequilibriodecargaround
robin deréplicas
• DTCparalaintegridad
transaccional
atravésdeinstanciasdebase
conAlwaysOn
Mejoras en
operaciones en
línea
Escalabilidad
Soporte para
Windows Server 2016
12TB16sockets
5. SQL 2016 Mejoras
Acceder a cualquier
dato
PolyBase
Native JSON
Temporal database
support
Power Query for analytics
and reporting
Built-in Advanced
Analytics
Conocimiento del
negocio a través de
visualizaciones en
cualquier dispositivo
móvil
Escalar y gestionar
Enterprise-grade
Analysis Services
SSDT in
Visual Studio 2015
Enhanced MDS
Enhanced SSIS
Enhanced Reporting
Services
Las soluciones híbridas
Stretch tables en Azure
Power BI with on-premises
data
Escenarios híbridos con
SSIS
• AzureDataFactoryintegrationwithSSIS
• PackageLineageandimpactanalysis
• ConnectSSIStoclouddatasources
Mejorasen respaldohacia
Azure
• Xfasterrestoreand50%reductioninstorage
Mejor migraciónde SQL
Server OnPremiseshacia
Azure
7. Mejoras en Column Store
• Artículo de Microsoft
http://bit.ly/sql2016-columnstore
8. .
.
.
C1 C
2
C3 C5C4
Columstore: cómo funciona?
10
beneficios:
• Mejora de la compresión:
Los datos del mismo dominio
comprimen mejor
• Reducción de E / S:
Traerá sólo las columnas
necesarias
• Desempeño mejorado:
Más datos caben en la memoria
Los datos almacenados
como filas
Column Store(índice)
Los datos almacenados como
columnas
9. Llav
e AlternateKey Nombre
Valore
s
1 AR-5381 Ajustable Carrera 1000
2 BA-8327 Cojinete Pelota 1000
3 BE-2349 Pelota Cojinete Jaula 800
4 BE-2908 Pelota Cojinete Grasa 800
5 BL-2036 Espada 800
6 CA-5965 LL Biela 500
7 CA-6738 ML Biela 500
Página 1 de
fila
almacenar
Página 2 de
fila
almacenar
Segmento
para
columna 1
Segmento
para
columna 2
Segmento
para
columna 3
Segmento
para
columna 4
RowStore vs. Column Store
11. Por qué debería utilizar Column Store Índex
dieciséis
• Un Column Store Index puede proporcionar un nivel muy alto de
compresión de datos, normalmente 10 veces, para reducir el costo de
almacenamiento de almacenamiento de datos de manera significativa.
• Además, para las operaciones analíticas ofrecen un orden de magnitud
mejor rendimiento que un índice de B-Tree.
• Es el formato de almacenamiento de datos preferido para
datawarehouse y analytics.
• A partir de SQL Server 2016 Release Candidate (RC0), puede utilizar
Column Store Index para real-time analytics en el operational
workload.
12. Razones por las Column Store Index son tan rápidos
17
• Las columnas almacenan valores del mismo dominio y comúnmente tienen
valores similares, lo que resulta en altas tasas de compresión. Esto minimiza
o elimina cuellos de botella de IO en el Sistema, al tiempo que reduce
significativamente el consumo de memoria.
• Las altas tasas de compresión mejoran el rendimiento de consultas mediante
el uso de una cantidad de memoria más pequeña. A su vez, el rendimiento
de consulta puede mejorar porque SQL Server puede realizar más
operaciones de consultas y de datos en memoria.
• La ejecución por lotes mejora el rendimiento de consulta, por lo general 2-
4x, mediante el procesamiento de múltiples filas a la vez.
• Consultas seleccionan a menudo sólo unas pocas columnas de una tabla, lo
que reduce el IO Total de los medios físicos.
13. ¿Cuándo debo utilizar un Column Store Index?
18
• Utilizar un clúster Column Store Index para almacenar tablas de
hechos y grandes tablas de dimensiones para las cargas de
trabajo de datawarehouse. Esto mejora el rendimiento de las
consultas y la compresión de datos hasta 10 veces.
• Utilice un nonclustered columnstore index para hacer real-time
análisis en un OLTP.
14. Columstore Indexes
• Es como si cada columna tiene su propio índice.
• En SQL Server 2012:
• Solo soporta Nonclustered
• Provoca que la tabla quede de sólo lectura
• En SQL Server 2014:
• Se incopora el Clustered columnstore y es actualizable
• Compresión masiva (60-90%)
• El Nonclustered todavía es read-only
15. Restricciones de SQL Server 2014
Tipos de datos:
ntext, text, and image, vardecimal, varchar(max) and nvarchar(max), rowversion (and
timestamp), sql_variant, CLR types (hierarchyid and spatial types), xml, uniqueidentifier
Page/Row compression
Replication
Change Tracking, Change Data Capture
Filestream
Enterprise Edition only
16. Columstore Indexes en SQL 2016
• Nonclustered CS indexes ahora es actualizable, se pueden filtrar
• Clustered CS indexes puede ser utilizados para construer índex b-
tree sobre ellos
• Esto mejora la concurrencia con el bloqueo de filas
• Mejor rendimiento para:
• Agregacios (MIN, MAX, SUM, COUNT, AVG)
• String Predicate (myFieldName LIKE '% foo')
• Mejor concurrencia (soporte snapshot isolation)
• Es soportado en ambientes de AlwaysOn Availability Group
secondary replicas
• Se obtienen mejores resultados de reorganización de índices
(elimina las filas eliminadas, menos presión de la memoria)
17. Column Store Index en SQL Server 2017
17
• SQL Server 2017 permite columnas calculadas no persistentes en
clustered column store index.
• Las columnas persistidas no se permiten en clustered column
store index.
• No puede crear un en non clustered column store index que
tenga una columna calculada.
18. • NCCI actualizable
• In-Memory OLTP +
Column-store
• Batch Mode Scans más
rápidos gracias al uso
de instrucciones de
vectores del CPU
• Dynamic Aggregate
pushdown
• PK/FK enforcement
• Offload Reporting to
AlwaysOn Secondary
Replica
19. ¿Cómo elijo entre una rowstore índice y un Column Store
Index?
19
• Rowstore Index tienen mejor rendimiento en las consultas hacen
seek en los datos, la búsqueda de un valor determinado, o para
realizar consultas sobre un pequeño rango de valores. Utilice
rowstore index con cargas de trabajo transaccionales ya que
tienden a requerir usualmente table seeks en lugar de table scans.
• Column Store Index da alto rendimiento para consultas analíticas
que escanean grandes cantidades de datos, especialmente en
tablas grandes. Utilice Column Store en Datawarehouse y
analytics workloads, especialmente en las tablas de hechos, ya
que tienden a requerir escaneos completos de tabla en lugar de
table seek.
20. Puedo combinar rowstore y Column Store en la misma Tabla
20
• Sí. Comenzando con SQL Server 2016 Release Candidate (RC0), se
puede crear un updatable nonclustered columnstore index en un
rowstore table.
• Los Column Store Index almacenan una copia de las columnas
elegidas, así que se necesita espacio adicional de almacenamiento,
pero se comprimirá en un promedio de 10 veces.
• Al hacer esto, puede ejecutar analytics en el Column Store Index y
transacciones en el rowstore index al mismo tiempo.
• El column store se actualiza cuando cambian los datos en la tabla
rowstore, por lo que ambos índices están trabajando con los mismos
datos.
21. ¿Puedo combinar rowstore y Column Store en la misma
Tabla
21
• Comenzando con SQL Server 2016 Release Candidate (RC0), puede
tener uno o más nonclustered rowstore indexes on a columnstore
index.
• Al hacer esto, puede realizar table seeks eficientes en el utilizando
column store.
• Otras opciones están disponibles también. Por ejemplo, se puede hace
un enforce primary key constraint al utilizar un UNIQUE constraint en
la table rowstore.
• Puesto que non-unique value fallará su inserción en el rowstore, SQL
Server no puede insertar el valor en el column store.
22. Columnstore Indexes for Data Warehousing
23
• SQL Server 2016 Release Candidate (RC1) presenta estas mejoras
de rendimiento en el column store
• AlwaysOn soporta querying a columnstore index on a readable secondary
replica
• Múltiples conjuntos de resultados activos (MARS).
• Una nueva vista de administración dinámica
sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)
proporciona información sobre el rendimiento de resolución de
problemas a nivel de grupo de filas.
• El operador SORT y DISTINCT se ejecuta en modo batch.
• DISTINCT operación múltiple se ejecuta en modo batch.
23. Column StoreCaracterística Índice
SQL Server
2012
SQL Server
2014
SQL Server
2016 (CTP2)
Base de datos
SQL Azure
la ejecución por lotes para las consultas de subprocesos múltiples sí sí sí sí
la ejecución por lotes para las consultas de un único subproceso sí sí
opción de compresión de archivos. sí sí sí
El aislamiento de instantánea y lectura cometido aislamiento de instantánea sí sí
Especificar Column Storeíndice al crear una tabla. sí sí
Siempre soportes Column Store Index. sí sí sí sí
AlwaysOn soportes secundarios legibles sólo lectura de columnas índices. sí sí sí sí
Siempre soportes secundarios legibles actualizable Column Store Index. sí
Sólo lectura índice de Column Storeno agrupado en montón o árbolB. sí sí sí
1
sí
1
actualizable no agrupado Column Storeíndice en montón o árbolB sí sí
btree índices adicionales permitidos en un montón o árbolB que tiene un índice de almacén
de columnas.
sí sí sí sí
índice de Column Storeagrupadas actualizable. sí sí sí
Índice árbolB en un índice de Column Storeen clúster. sí sí
Column Storeíndice en una tabla de memoria optimizado. ¡Sí!
No agrupado índice de Column Storedefinición es compatible con el uso de una condición
filtrada.
sí sí
Comparacion de Versiones