SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Indices columnares en SQL Server 2012
Enrique Puig
DPE – Motor Relacional
MAP 2012 – MCPIT SQL Server
epuig@solidq.com
Javier Loria
Mentor – Motor Relacional & BI
De todo! Es una máquina !
jloria@solidq.com
 Introducción
 Arquitectura
 Claves de rendimiento
 Restricciones
 Escenarios factibles
 Datawharehouse
 Secundarios de reporte
 Escritura y uso
 Deshabilitando índices
 Híbrido: Tabla + Vista
 Particionado de datos
 Conclusiones
 Preguntas
Agenda
¿Qué vamos a ver hoy?
 Objetivo: Acelerar consultas sobre grandes volúmenes de
datos.
 Nuevo tipo de índice
 No es un índice (no es un árbol)
 No tiene clave y no permite seeks ni scan range
 Solo permite escaneos
 Nuevo tipo de almacenamiento
 Filas vs. Columnas
 Xvelocity
 Almacenamiento columnar
 Algoritmos de compresión
 Memoria
 Fast batch mode
Introducción
¿Que son los índices columnares?
Introducción
Arquitectura
idVenta Producto cantidad Precio
1 Camisa 2 49.99
2 Jersey 3 60.00
3 Zapatos 4 224.75
4 Pantalón 1 35.00
5 Camisa 1 60.00
6 Jersey 4 180.00
7 Zapatos 6 315.50
8 Pantalón 1 48.75
Tabla
Data page 1
1 camisa 49.992
2 Jersey 60.003
3 Zapatos 224.754
4 Pantalón 35.001
Data page 2
1 camisa 60.001
2 Jersey 180.004
3 Zapatos 315.506
4 Pantalón 48.751
idventa Producto
1
2
3
4
5
6
7
8
Cantidad Precio
camisa
Jersey
Zapatos
Pantalón
camisa
Jersey
Zapatos
Pantalón
2
3
4
1
1
4
6
1
49.99
60.00
224.75
35.00
60.00
180.00
315.50
48.75
Segmentos
XVelocity
 Almacenamiento columnar
 Consultas especifican qué columnas quieren
 Ratios de compresión Elevados ELEVADISIMOS!!!
 Compresiones 10x
 Disminuye el número de lecturas
 Maximización de la memoria
 Solo columnas deseadas
 Altamente comprimidas
 Maximización del paralelismo
 Fast batch mode
Claves de rendimiento
¿Por qué va tan rápido?
Claves de rendimiento
Almacenamiento enfilas
MemoriaDisco
Data page 1
1 camisa 49.992
2 Jersey 60.003
3 Zapatos 224.754
4
Pantaló
n
35.001
Data page 2
1 camisa 60.001
2 Jersey 180.004
3 Zapatos 315.506
4
Pantaló
n
48.751
Data page 1
1 camisa 49.992
2 Jersey 60.003
3 Zapatos 224.754
4 Pantalón 35.001
Data page 2
1 camisa 60.001
2 Jersey 180.004
3 Zapatos 315.506
4 Pantalón 48.751
Select
idVenta,
Precio
From Tabla
Claves de rendimeinto
Índices columnares
MemoriaDisco Select
idVenta,
Precio
From Tablaidventa Producto
1
2
3
4
5
6
7
8
Cantidad Precio
camisa
Jersey
Zapatos
Pantalón
camisa
Jersey
Zapatos
Pantalón
2
3
3
1
5
6
7
8
49.99
60.00
224.75
35.00
49.99
60.00
224.75
35.00
1
2
3
4
5
6
7
8
49.99
60.00
224.75
35.00
49.99
60.00
224.75
35.00
DEMO
Rendimiento de índices columnares
 Nuevo modo de procesamiento
 Modo “Batch”
 Hasta ahora -> Row by Row
 Modo “Row”
 Aprovecha el paralelismo
 Consigue muy buenos tiempos
 Solo funciona con planes paralelos
 Solo se usa con índices columnares
 Solo consultas que realizan:
 Cruces (JOIN)
 Filtros (WHERE)
 Agregaciones (GROUP BY)
Claves de rendimiento
Fast batch Mode
 Modo de procesamiento actual
 Válido para sistemas OLTP
 Se supone poco análisis
 Escaneos de pocas filas
 Operaciones seek
 Llama a la función GetNextRow()
 Árbol de llamadas
Procesamiento Fila a Fila
GetNextRow() GetNextRow()
GetNextRow()
 Ejemplo
 Consulta analítica más intensa
 Productos más vendidos
 Tabla ventas: 20 Millones de filas
 20M + 20M + 500 + 500 = 40.001.000 llamadas
 Impacto en rendimiento
Procesamiento Fila a Fila
¿Y para grandes volúmenes de datos?
GetNextRow()
GetNextRow() GetNextRow() GetNextRow()
20M Filas20M Filas500 Filas
500 Filas
 Procesamos “batches” de filas
 1000 filas aprox.
 No todos operadores implementan el modo batch
 Conversiones
 Batch -> Row
 Row -> Batch
 Planes de ejecución mixtos
 Parte en batch y parte en Row
 Mejor rendimiento a mayor parte procesada en batch
 Cuidado con operadores
 OUTER JOIN, IN / NOT IN, EXISTS / NOT EXISTS, DISTINCT
Fast batch mode
SQL Server vuela…
 Ejemplo
 Consulta analítica más intensa
 Productos más vendidos
 Tabla ventas: 20 Millones de filas
 20M /1000 filas = 2000 * 2= 4000 llamadas
 4000 + (500+500) = 5000 llamadas
 40M / 5000 = 8000 veces menos en llamadas
 Mejora el rendimiento
Fast Batch mode
¿Y para grandes volúmenes de datos?
GetNextRow()
GetNextRow() GetNextRow() GetNextRow()
20M Filas20M Filas500 Filas
500 Filas
DEMO
Fast Batch Mode
- Row mode vs. Batch mode performance
- Operators que no implementan batch mode
Batch mode vs. Row Mode y paralelismo
184
3423
7264
11918
0 2000 4000 6000 8000 10000 12000 14000
Columnstore
Sin columnstore
Duration (ms)
Comparacion rendimiento consulta
No paralelo
paralelo
 Decimal y/o numeric (precision >18)
 Datetimeoffset (precision > 2)
 Binary, Varbinary
 Image
 Text, ntext
 Varchar(max), nvarchar(max)
 HierarchyID
 Timestamp
 Uniqueidentifier
 Sqlvariant
 xml
Restricciones
Tipos de datos
 1 único indice columnar
 No puede ser clustered
 No aplica a vistas indexadas
 No se pueden filtrar
 1024 columnas como máximo
 Convierten tablas en modo lectura
 INSERT, UPDATE, DELETE y MERGE no funcionan
 No resulta factible para sistemas OLTP
Restricciones
Limitaciones de tabla
 Grandes volúmenes de datos
 Sistemas orientados al análisis
 Escrituras incrementales
 Cargas de datos de distintos orígenes
 ETL
 Idealmente no hay modificaciones
 Versionado de los hechos
 Mayoría de las operaciones son de lectura
 Consultas TSQL
 Reportes
 Cargas de cubos
 Consultas directas de cubos
 ROLAP
 DirectQuery
Escenarios donde encaja
DataWharehouse
 Servidores OLTP
 Tablas Sumarizadas
 Mantenimiento de tablas con índices columnares
 Ventana de mantenimiento (8x5)
 Sincronización
 Depende del negocio
 Servidores destinados a reporting
 Descargan el sistema OLTP
 Sistemas puramente transaccionales
 Ejecutan
 Todos los informes
 Al menos los informes más pesados
Escenarios donde encaja
Reporting
Técnicas de carga
Deshabilitando/Habilitando el índice
1
• Deshabilitar el índice
2
• Insertar/borrar/modificar datos
3
• Reconstruir el índice
DEMO
Habilitando/deshabilitando el índice
Técnicas de carga
Particionado de datos
1
• Crear tabla intermedia
2
• Insertar datos
3
• Crear índice columnar
4
• SWITCH a una partición vacía
DEMO
Particionado de datos
Técnicas de carga
Hibrido: Tabla + Vista
Tabla
Normal
Tabla
Columnar
SYNC
Vista
DEMO
Pruebas en escenarios reales
 Proporcionan muy buen rendimiento
 Mas eficientes con Fast Batch mode
 Descartados para aplicar directamente a tablas del OLTP
 Más adecuado para
 Servidores de reporting
 Datawharehouse
 Consultas ROLAP/Directquery
 Estamos todavía en versión 1.0
 ¿Quién sabe si se eliminaran restricciones? 
Conclusiones
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/
Síguenos:

Weitere ähnliche Inhalte

Andere mochten auch

Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Joseph Lopez
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos SolidQ
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...SolidQ
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1SolidQ
 
WebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesWebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesJOSE AHIAS LOPEZ PORTILLO
 
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...Joseph Lopez
 
Novedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresNovedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresEnrique Catala Bañuls
 
MS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladoresMS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladoresJoseph Lopez
 
Experiencias de migraciones a sql server 2012-2014
Experiencias de migraciones a sql server 2012-2014 Experiencias de migraciones a sql server 2012-2014
Experiencias de migraciones a sql server 2012-2014 Enrique Catala Bañuls
 
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Enrique Puig
 
Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Fundamentos en el diseño de bases de datos con MS SQL Server 2012Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Fundamentos en el diseño de bases de datos con MS SQL Server 2012Joseph Lopez
 
Manual para la creacion de tablas en sql
Manual para la creacion de tablas en sqlManual para la creacion de tablas en sql
Manual para la creacion de tablas en sqlval.14
 
Tipos de datos sql server 2014
Tipos de datos sql server 2014Tipos de datos sql server 2014
Tipos de datos sql server 2014Alexandra Jimenez
 
Tipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL ServerTipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL Serverjcalvopa
 
Trucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlTrucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlAntonio Soto
 
Diplomado Técnico SQL Server 2012 - Sesión 7/8
Diplomado Técnico SQL Server 2012 - Sesión 7/8Diplomado Técnico SQL Server 2012 - Sesión 7/8
Diplomado Técnico SQL Server 2012 - Sesión 7/8John Bulla
 
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012SolidQ
 

Andere mochten auch (19)

Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
 
WebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesWebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e Índices
 
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
 
Como leer planes de ejecución
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecución
 
Novedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresNovedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladores
 
MS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladoresMS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladores
 
Experiencias de migraciones a sql server 2012-2014
Experiencias de migraciones a sql server 2012-2014 Experiencias de migraciones a sql server 2012-2014
Experiencias de migraciones a sql server 2012-2014
 
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
 
Agrupando datos en SQL Server
Agrupando datos en SQL ServerAgrupando datos en SQL Server
Agrupando datos en SQL Server
 
Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Fundamentos en el diseño de bases de datos con MS SQL Server 2012Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Fundamentos en el diseño de bases de datos con MS SQL Server 2012
 
Manual para la creacion de tablas en sql
Manual para la creacion de tablas en sqlManual para la creacion de tablas en sql
Manual para la creacion de tablas en sql
 
Tipos de datos sql server 2014
Tipos de datos sql server 2014Tipos de datos sql server 2014
Tipos de datos sql server 2014
 
Tipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL ServerTipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL Server
 
Trucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlTrucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para Sql
 
Diplomado Técnico SQL Server 2012 - Sesión 7/8
Diplomado Técnico SQL Server 2012 - Sesión 7/8Diplomado Técnico SQL Server 2012 - Sesión 7/8
Diplomado Técnico SQL Server 2012 - Sesión 7/8
 
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
 

Ähnlich wie SQL Server 2012 columnstore indexes performance

Dts y analysis services 2000
Dts y analysis services 2000Dts y analysis services 2000
Dts y analysis services 2000Salvador Ramos
 
SQL 2016 Column Store Index
SQL 2016 Column Store IndexSQL 2016 Column Store Index
SQL 2016 Column Store IndexEduardo Castro
 
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexEduardo Castro
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developersEnrique Catala Bañuls
 
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosMS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosJoseph Lopez
 
Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)SolidQ
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Enrique Catala Bañuls
 
BI real time analytics
BI real time analyticsBI real time analytics
BI real time analyticsSolidQ
 
Aplicaciones difusas manejo de grandes volúmenes de datos
Aplicaciones difusas manejo de grandes volúmenes de datosAplicaciones difusas manejo de grandes volúmenes de datos
Aplicaciones difusas manejo de grandes volúmenes de datosLuis Fernando Aguas Bucheli
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida realSolidQ
 
Column stored index
Column stored index Column stored index
Column stored index SolidQ
 
Sql Server Business Intelligence Spanish
Sql Server Business Intelligence SpanishSql Server Business Intelligence Spanish
Sql Server Business Intelligence SpanishEduardo Castro
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
Manual Analysis Services
Manual Analysis ServicesManual Analysis Services
Manual Analysis Servicesbrobelo
 
Mejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL ServerMejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL ServerSpanishPASSVC
 
Software Libre Y Escalabilidad
Software Libre Y EscalabilidadSoftware Libre Y Escalabilidad
Software Libre Y EscalabilidadGuille -bisho-
 
Introduccion Data WareHouse
Introduccion Data WareHouseIntroduccion Data WareHouse
Introduccion Data WareHouseRicardo Mendoza
 
Diapositivas OLTP - Procesamiento de Transacciones en Línea
Diapositivas OLTP - Procesamiento de Transacciones en LíneaDiapositivas OLTP - Procesamiento de Transacciones en Línea
Diapositivas OLTP - Procesamiento de Transacciones en LíneaDina Leon
 

Ähnlich wie SQL Server 2012 columnstore indexes performance (20)

Dts y analysis services 2000
Dts y analysis services 2000Dts y analysis services 2000
Dts y analysis services 2000
 
SQL 2016 Column Store Index
SQL 2016 Column Store IndexSQL 2016 Column Store Index
SQL 2016 Column Store Index
 
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developers
 
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosMS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
 
Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)
 
BI real time analytics
BI real time analyticsBI real time analytics
BI real time analytics
 
Aplicaciones difusas manejo de grandes volúmenes de datos
Aplicaciones difusas manejo de grandes volúmenes de datosAplicaciones difusas manejo de grandes volúmenes de datos
Aplicaciones difusas manejo de grandes volúmenes de datos
 
Cubos ppt
Cubos pptCubos ppt
Cubos ppt
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
Column stored index
Column stored index Column stored index
Column stored index
 
Sql Server Business Intelligence Spanish
Sql Server Business Intelligence SpanishSql Server Business Intelligence Spanish
Sql Server Business Intelligence Spanish
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Manual Analysis Services
Manual Analysis ServicesManual Analysis Services
Manual Analysis Services
 
Mejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL ServerMejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL Server
 
Software Libre Y Escalabilidad
Software Libre Y EscalabilidadSoftware Libre Y Escalabilidad
Software Libre Y Escalabilidad
 
Introduccion Data WareHouse
Introduccion Data WareHouseIntroduccion Data WareHouse
Introduccion Data WareHouse
 
Oltp: Procesamiento de Transacciones en Linea
Oltp: Procesamiento de Transacciones en LineaOltp: Procesamiento de Transacciones en Linea
Oltp: Procesamiento de Transacciones en Linea
 
Diapositivas OLTP - Procesamiento de Transacciones en Línea
Diapositivas OLTP - Procesamiento de Transacciones en LíneaDiapositivas OLTP - Procesamiento de Transacciones en Línea
Diapositivas OLTP - Procesamiento de Transacciones en Línea
 

Mehr von 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
 
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
 
Novedades de SSAS 2017
Novedades de SSAS 2017Novedades de SSAS 2017
Novedades de SSAS 2017SolidQ
 

Mehr von 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
 
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...
 
Novedades de SSAS 2017
Novedades de SSAS 2017Novedades de SSAS 2017
Novedades de SSAS 2017
 

SQL Server 2012 columnstore indexes performance

  • 1. Indices columnares en SQL Server 2012 Enrique Puig DPE – Motor Relacional MAP 2012 – MCPIT SQL Server epuig@solidq.com Javier Loria Mentor – Motor Relacional & BI De todo! Es una máquina ! jloria@solidq.com
  • 2.  Introducción  Arquitectura  Claves de rendimiento  Restricciones  Escenarios factibles  Datawharehouse  Secundarios de reporte  Escritura y uso  Deshabilitando índices  Híbrido: Tabla + Vista  Particionado de datos  Conclusiones  Preguntas Agenda ¿Qué vamos a ver hoy?
  • 3.  Objetivo: Acelerar consultas sobre grandes volúmenes de datos.  Nuevo tipo de índice  No es un índice (no es un árbol)  No tiene clave y no permite seeks ni scan range  Solo permite escaneos  Nuevo tipo de almacenamiento  Filas vs. Columnas  Xvelocity  Almacenamiento columnar  Algoritmos de compresión  Memoria  Fast batch mode Introducción ¿Que son los índices columnares?
  • 4. Introducción Arquitectura idVenta Producto cantidad Precio 1 Camisa 2 49.99 2 Jersey 3 60.00 3 Zapatos 4 224.75 4 Pantalón 1 35.00 5 Camisa 1 60.00 6 Jersey 4 180.00 7 Zapatos 6 315.50 8 Pantalón 1 48.75 Tabla Data page 1 1 camisa 49.992 2 Jersey 60.003 3 Zapatos 224.754 4 Pantalón 35.001 Data page 2 1 camisa 60.001 2 Jersey 180.004 3 Zapatos 315.506 4 Pantalón 48.751 idventa Producto 1 2 3 4 5 6 7 8 Cantidad Precio camisa Jersey Zapatos Pantalón camisa Jersey Zapatos Pantalón 2 3 4 1 1 4 6 1 49.99 60.00 224.75 35.00 60.00 180.00 315.50 48.75 Segmentos XVelocity
  • 5.  Almacenamiento columnar  Consultas especifican qué columnas quieren  Ratios de compresión Elevados ELEVADISIMOS!!!  Compresiones 10x  Disminuye el número de lecturas  Maximización de la memoria  Solo columnas deseadas  Altamente comprimidas  Maximización del paralelismo  Fast batch mode Claves de rendimiento ¿Por qué va tan rápido?
  • 6. Claves de rendimiento Almacenamiento enfilas MemoriaDisco Data page 1 1 camisa 49.992 2 Jersey 60.003 3 Zapatos 224.754 4 Pantaló n 35.001 Data page 2 1 camisa 60.001 2 Jersey 180.004 3 Zapatos 315.506 4 Pantaló n 48.751 Data page 1 1 camisa 49.992 2 Jersey 60.003 3 Zapatos 224.754 4 Pantalón 35.001 Data page 2 1 camisa 60.001 2 Jersey 180.004 3 Zapatos 315.506 4 Pantalón 48.751 Select idVenta, Precio From Tabla
  • 7. Claves de rendimeinto Índices columnares MemoriaDisco Select idVenta, Precio From Tablaidventa Producto 1 2 3 4 5 6 7 8 Cantidad Precio camisa Jersey Zapatos Pantalón camisa Jersey Zapatos Pantalón 2 3 3 1 5 6 7 8 49.99 60.00 224.75 35.00 49.99 60.00 224.75 35.00 1 2 3 4 5 6 7 8 49.99 60.00 224.75 35.00 49.99 60.00 224.75 35.00
  • 9.  Nuevo modo de procesamiento  Modo “Batch”  Hasta ahora -> Row by Row  Modo “Row”  Aprovecha el paralelismo  Consigue muy buenos tiempos  Solo funciona con planes paralelos  Solo se usa con índices columnares  Solo consultas que realizan:  Cruces (JOIN)  Filtros (WHERE)  Agregaciones (GROUP BY) Claves de rendimiento Fast batch Mode
  • 10.  Modo de procesamiento actual  Válido para sistemas OLTP  Se supone poco análisis  Escaneos de pocas filas  Operaciones seek  Llama a la función GetNextRow()  Árbol de llamadas Procesamiento Fila a Fila GetNextRow() GetNextRow() GetNextRow()
  • 11.  Ejemplo  Consulta analítica más intensa  Productos más vendidos  Tabla ventas: 20 Millones de filas  20M + 20M + 500 + 500 = 40.001.000 llamadas  Impacto en rendimiento Procesamiento Fila a Fila ¿Y para grandes volúmenes de datos? GetNextRow() GetNextRow() GetNextRow() GetNextRow() 20M Filas20M Filas500 Filas 500 Filas
  • 12.  Procesamos “batches” de filas  1000 filas aprox.  No todos operadores implementan el modo batch  Conversiones  Batch -> Row  Row -> Batch  Planes de ejecución mixtos  Parte en batch y parte en Row  Mejor rendimiento a mayor parte procesada en batch  Cuidado con operadores  OUTER JOIN, IN / NOT IN, EXISTS / NOT EXISTS, DISTINCT Fast batch mode SQL Server vuela…
  • 13.  Ejemplo  Consulta analítica más intensa  Productos más vendidos  Tabla ventas: 20 Millones de filas  20M /1000 filas = 2000 * 2= 4000 llamadas  4000 + (500+500) = 5000 llamadas  40M / 5000 = 8000 veces menos en llamadas  Mejora el rendimiento Fast Batch mode ¿Y para grandes volúmenes de datos? GetNextRow() GetNextRow() GetNextRow() GetNextRow() 20M Filas20M Filas500 Filas 500 Filas
  • 14. DEMO Fast Batch Mode - Row mode vs. Batch mode performance - Operators que no implementan batch mode
  • 15. Batch mode vs. Row Mode y paralelismo 184 3423 7264 11918 0 2000 4000 6000 8000 10000 12000 14000 Columnstore Sin columnstore Duration (ms) Comparacion rendimiento consulta No paralelo paralelo
  • 16.  Decimal y/o numeric (precision >18)  Datetimeoffset (precision > 2)  Binary, Varbinary  Image  Text, ntext  Varchar(max), nvarchar(max)  HierarchyID  Timestamp  Uniqueidentifier  Sqlvariant  xml Restricciones Tipos de datos
  • 17.  1 único indice columnar  No puede ser clustered  No aplica a vistas indexadas  No se pueden filtrar  1024 columnas como máximo  Convierten tablas en modo lectura  INSERT, UPDATE, DELETE y MERGE no funcionan  No resulta factible para sistemas OLTP Restricciones Limitaciones de tabla
  • 18.  Grandes volúmenes de datos  Sistemas orientados al análisis  Escrituras incrementales  Cargas de datos de distintos orígenes  ETL  Idealmente no hay modificaciones  Versionado de los hechos  Mayoría de las operaciones son de lectura  Consultas TSQL  Reportes  Cargas de cubos  Consultas directas de cubos  ROLAP  DirectQuery Escenarios donde encaja DataWharehouse
  • 19.  Servidores OLTP  Tablas Sumarizadas  Mantenimiento de tablas con índices columnares  Ventana de mantenimiento (8x5)  Sincronización  Depende del negocio  Servidores destinados a reporting  Descargan el sistema OLTP  Sistemas puramente transaccionales  Ejecutan  Todos los informes  Al menos los informes más pesados Escenarios donde encaja Reporting
  • 20. Técnicas de carga Deshabilitando/Habilitando el índice 1 • Deshabilitar el índice 2 • Insertar/borrar/modificar datos 3 • Reconstruir el índice
  • 22. Técnicas de carga Particionado de datos 1 • Crear tabla intermedia 2 • Insertar datos 3 • Crear índice columnar 4 • SWITCH a una partición vacía
  • 24. Técnicas de carga Hibrido: Tabla + Vista Tabla Normal Tabla Columnar SYNC Vista
  • 26.  Proporcionan muy buen rendimiento  Mas eficientes con Fast Batch mode  Descartados para aplicar directamente a tablas del OLTP  Más adecuado para  Servidores de reporting  Datawharehouse  Consultas ROLAP/Directquery  Estamos todavía en versión 1.0  ¿Quién sabe si se eliminaran restricciones?  Conclusiones
  • 27. Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/ Síguenos: