SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Columnstore en SQL Server
Cómo utilizarlo en nuestros entornos OLTP
 Ingeniero Informático
 Microsoft Data Platform MVP
 Mentor en SolidQ
 Tuning y alta disponibilidad
Enrique Catalá Bañuls
ecatala@solidq.com
@enriquecatala
Real-time operational analytics
 Entorno donde conviven cargas mixtas OLAP y OLTP
 Mínimo impacto de usuarios de negocio atacando el
operacional
Arquitectura analítica tradicional
Aspectos clave
Implementacion compleja
Licenciamiento (dinero)
Latencia del dato en analitico
IIS Server
BI analysts
Real-time operational analytics
IIS Server
OLTP workload
Esto no reemplaza la
necesidad de entorno BI
No hay nada mas rápido que un cubo con
datos precalculados
Tampoco te va a ayudar cuando necesitas
análisis de multiples fuentes de datos
Columnstore
ROWSTORE
• Formato de fila
• Compresión opcional
• Devuelve todas las columnas del índice
• Arbol B balanceado
COLUMNSTORE
• Formato de columna
• Compresión requerida
• Devuelve solo las columnas referenciadas
• Cabecera y datos
Diferencias row-store vs columnstore
Imagen de Niko Neugebauer
Diferencias row-store vs columnstore
GetNext()
• Envia datos a la
CPU
• Implementado por
todos los
operadores
Row Mode
• Invocaciones
GetNext() fila a fila
• El habitual en OLTP
Batch Mode
• Invocaciones
GetNext() por ~900
filas
• Beneficios 10x-100x
• Requiere
columnstore
Carga de datos
• Carga sin preorden (PON ORDER BY!)
• batch_size
• >102400 directos a rowgroup
• <102400 carga a delta store (mal)
• Usa SIEMPRE bulk load sin TABLOCK
• Siempre minimamente logeado
• Soporta multithread
• NO PONGAS TABLOCK
Carga de datos
• Rowgroups pueden tener
• Desde 102.400
• Hasta 1.048.576
• Recuerda cargar con bulk insert….
• INSERT INTO <table-name> VALUES
(<set of values>) siempre inserta a
delta store
Rows to Bulk Load
Rows Added to the
Compressed Rowgroup
Rows
Added to
the Delta
Rowgroup
102,000 0 102,000
145,000 145,000
Rowgroup size: 145,000
0
1,048,577 1,048,576
Rowgroup size: 1,048,576.
1
2,252,152 2,252,152
Rowgroup sizes: 1,048,576,
1,048,576, 155,000.
0
Demo
Almacenamiento
Cargas de datos
Real-time operational analytics
AlwaysOn y columnstore
Aspectos clave
Se separa por tipología de carga, de forma que las
consultas analíticas aprovechen todavía major el
almacenamiento columnar
AlwaysOn Availability GroupCarga de trabajo
OLTP
Carga de trabajo
analítica
Tablas candidatas óptimas para NCCIs
+1M filas
Sufren muchas consultas
de agregados
Con múcho table scan
Con muchas columnas
• Mínimo para activarse
• analíticas
• Mucha casuística
• Dificiles índices
cobertura
Truco: Non-clustered columnstore index (NCCI)
B-tree index
Delta rowgroups
Non-clustered columnstore index
Deletebitmap
B-tree index • Actualizable desde SQL 2016
• No necesitas ningun otro índice para OLAP
• Se mantiene como cualquier índice
• No require cambios de aplicación
• Pueden ser filtrados
Truco: Compression delay
B-tree index
HOT
Delta
rowgroups
Non-clustered columnstore index
Deletebitmap
Control del tiempo de permanencia en delta:
-Max = 10080 (7 dias)
-Util for HOT/WARM (time based)
• < 6 hours – HOT (delta store)
OLTP workload
Demo
¿es buena idea migrar a SQL Server 2016+?
¿Diferencias entre standard y Enterprise?
Mantenimiento
Reorganize
Borra físicamente de un rowgroup si
>10% borrado lógico
Combina uno o dos compressed
rowgroups hasta 1024576 filas
WITH
(COMPRESS_ALL_ROW_GROUPS)
Rebuild
Re-comprime todo
Bloquea la tabla
• 2017 with online en NCCI
Útil con elevada fragmentacion
Feature comparison
Columnstore Index Feature
SQL
Server
2012 (11.x)
SQL
Server
2014 (12.x)
SQL
Server
2016 (13.x)
SQL
Server
2017 (14.x)
SQL
Database
SQL Data
Warehouse
Batch execution for multi-threaded queries yes yes yes yes yes yes
Batch execution for single-threaded queries yes yes yes yes
Archival compression option yes yes yes yes yes
Snapshot isolation and read-committed snapshot isolation yes yes yes yes
Specify columnstore index when creating a table yes yes yes yes
Always On supports columnstore indexes yes yes yes yes yes yes
Always On readable secondary supports read-only nonclustered columnstore index yes yes yes yes yes yes
Always On readable secondary supports updateable columnstore indexes yes yes
Read-only nonclustered columnstore index on heap or B-tree yes yes yes 1 yes 1 yes 1 yes 1
Updateable nonclustered columnstore index on heap or B-tree yes yes yes yes
Additional B-tree indexes allowed on a heap or B-tree that has a nonclustered columnstore index yes yes yes yes yes yes
Updateable clustered columnstore index yes yes yes yes yes
B-tree index on a clustered columnstore index yes yes yes yes
Columnstore index on a memory-optimized table yes yes yes yes
Nonclustered columnstore index definition supports using a filtered condition yes yes yes yes
Compression delay option for columnstore indexes in CREATE TABLE and ALTER TABLE yes yes yes yes
Columnstore index can have a non-persisted computed column yes
1 To create a read-only nonclustered columnstore index, store the index on a read-only filegroup.
La mayoria de
features requieren
compatibility level
130 (no vale con
estár en SQL Server
2016)
Resumen
Grandes volúmenes de datos
• Bloques mínimos de 1M filas
Elevada compression
Lectura minima de datos
Optimiza cache L2
Preguntas

Más contenido relacionado

Similar a Columnstore en la vida real

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
 
SQL 2016 Column Store Index
SQL 2016 Column Store IndexSQL 2016 Column Store Index
SQL 2016 Column Store IndexEduardo Castro
 
Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016Joseph Lopez
 
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
 
Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Eduardo Castro
 
Las mejores practicas de los indices columnstore
Las mejores practicas de los indices columnstoreLas mejores practicas de los indices columnstore
Las mejores practicas de los indices columnstoreSpanishPASSVC
 
SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaEduardo Castro
 
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
 
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
 
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
 
Indices Columnares en SQL Server 2014
Indices Columnares en SQL Server 2014Indices Columnares en SQL Server 2014
Indices Columnares en SQL Server 2014SpanishPASSVC
 
Casos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL ServerCasos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL ServerEduardo Castro
 
BI real time analytics
BI real time analyticsBI real time analytics
BI real time analyticsSolidQ
 
Intensivo Power BI.pdf
Intensivo Power BI.pdfIntensivo Power BI.pdf
Intensivo Power BI.pdfRicardo Rey
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseJoseph Lopez
 
SQL Server 2014 Nuevas Capacidades
SQL Server 2014  Nuevas CapacidadesSQL Server 2014  Nuevas Capacidades
SQL Server 2014 Nuevas CapacidadesEduardo Castro
 

Similar a Columnstore en la vida real (20)

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
 
SQL 2016 Column Store Index
SQL 2016 Column Store IndexSQL 2016 Column Store Index
SQL 2016 Column Store Index
 
Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016
 
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
 
Vistazo a SQL Server 2016
Vistazo a SQL Server 2016Vistazo a SQL Server 2016
Vistazo a SQL Server 2016
 
Las mejores practicas de los indices columnstore
Las mejores practicas de los indices columnstoreLas mejores practicas de los indices columnstore
Las mejores practicas de los indices columnstore
 
SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en Memoria
 
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
 
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
 
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)
 
Indices Columnares en SQL Server 2014
Indices Columnares en SQL Server 2014Indices Columnares en SQL Server 2014
Indices Columnares en SQL Server 2014
 
Casos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL ServerCasos de bodegas de datos con SQL Server
Casos de bodegas de datos con SQL Server
 
BI real time analytics
BI real time analyticsBI real time analytics
BI real time analytics
 
Intensivo Power BI.pdf
Intensivo Power BI.pdfIntensivo Power BI.pdf
Intensivo Power BI.pdf
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
 
Azure SQL Data Warehouse - 24 horas de PASS
Azure SQL Data Warehouse - 24 horas de PASS Azure SQL Data Warehouse - 24 horas de PASS
Azure SQL Data Warehouse - 24 horas de PASS
 
Tipos de base de datos
Tipos de base de datosTipos de base de datos
Tipos de base de datos
 
SQL Server 2014 Nuevas Capacidades
SQL Server 2014  Nuevas CapacidadesSQL Server 2014  Nuevas Capacidades
SQL Server 2014 Nuevas Capacidades
 
04 presentacion acosta_claudio
04 presentacion acosta_claudio04 presentacion acosta_claudio
04 presentacion acosta_claudio
 

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
 
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
 

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
 
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
 

Último

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
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
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
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
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
 
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
 
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
 
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
 
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
 

Último (10)

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)
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
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
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
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
 
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
 
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
 
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
 
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...
 

Columnstore en la vida real

  • 1. Columnstore en SQL Server Cómo utilizarlo en nuestros entornos OLTP
  • 2.  Ingeniero Informático  Microsoft Data Platform MVP  Mentor en SolidQ  Tuning y alta disponibilidad Enrique Catalá Bañuls ecatala@solidq.com @enriquecatala
  • 3. Real-time operational analytics  Entorno donde conviven cargas mixtas OLAP y OLTP  Mínimo impacto de usuarios de negocio atacando el operacional
  • 4. Arquitectura analítica tradicional Aspectos clave Implementacion compleja Licenciamiento (dinero) Latencia del dato en analitico IIS Server BI analysts
  • 5. Real-time operational analytics IIS Server OLTP workload Esto no reemplaza la necesidad de entorno BI No hay nada mas rápido que un cubo con datos precalculados Tampoco te va a ayudar cuando necesitas análisis de multiples fuentes de datos
  • 6. Columnstore ROWSTORE • Formato de fila • Compresión opcional • Devuelve todas las columnas del índice • Arbol B balanceado COLUMNSTORE • Formato de columna • Compresión requerida • Devuelve solo las columnas referenciadas • Cabecera y datos
  • 7. Diferencias row-store vs columnstore Imagen de Niko Neugebauer
  • 8. Diferencias row-store vs columnstore GetNext() • Envia datos a la CPU • Implementado por todos los operadores Row Mode • Invocaciones GetNext() fila a fila • El habitual en OLTP Batch Mode • Invocaciones GetNext() por ~900 filas • Beneficios 10x-100x • Requiere columnstore
  • 9. Carga de datos • Carga sin preorden (PON ORDER BY!) • batch_size • >102400 directos a rowgroup • <102400 carga a delta store (mal) • Usa SIEMPRE bulk load sin TABLOCK • Siempre minimamente logeado • Soporta multithread • NO PONGAS TABLOCK
  • 10. Carga de datos • Rowgroups pueden tener • Desde 102.400 • Hasta 1.048.576 • Recuerda cargar con bulk insert…. • INSERT INTO <table-name> VALUES (<set of values>) siempre inserta a delta store Rows to Bulk Load Rows Added to the Compressed Rowgroup Rows Added to the Delta Rowgroup 102,000 0 102,000 145,000 145,000 Rowgroup size: 145,000 0 1,048,577 1,048,576 Rowgroup size: 1,048,576. 1 2,252,152 2,252,152 Rowgroup sizes: 1,048,576, 1,048,576, 155,000. 0
  • 12. AlwaysOn y columnstore Aspectos clave Se separa por tipología de carga, de forma que las consultas analíticas aprovechen todavía major el almacenamiento columnar AlwaysOn Availability GroupCarga de trabajo OLTP Carga de trabajo analítica
  • 13. Tablas candidatas óptimas para NCCIs +1M filas Sufren muchas consultas de agregados Con múcho table scan Con muchas columnas • Mínimo para activarse • analíticas • Mucha casuística • Dificiles índices cobertura
  • 14. Truco: Non-clustered columnstore index (NCCI) B-tree index Delta rowgroups Non-clustered columnstore index Deletebitmap B-tree index • Actualizable desde SQL 2016 • No necesitas ningun otro índice para OLAP • Se mantiene como cualquier índice • No require cambios de aplicación • Pueden ser filtrados
  • 15. Truco: Compression delay B-tree index HOT Delta rowgroups Non-clustered columnstore index Deletebitmap Control del tiempo de permanencia en delta: -Max = 10080 (7 dias) -Util for HOT/WARM (time based) • < 6 hours – HOT (delta store) OLTP workload
  • 16. Demo ¿es buena idea migrar a SQL Server 2016+? ¿Diferencias entre standard y Enterprise?
  • 17. Mantenimiento Reorganize Borra físicamente de un rowgroup si >10% borrado lógico Combina uno o dos compressed rowgroups hasta 1024576 filas WITH (COMPRESS_ALL_ROW_GROUPS) Rebuild Re-comprime todo Bloquea la tabla • 2017 with online en NCCI Útil con elevada fragmentacion
  • 18. Feature comparison Columnstore Index Feature SQL Server 2012 (11.x) SQL Server 2014 (12.x) SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Database SQL Data Warehouse Batch execution for multi-threaded queries yes yes yes yes yes yes Batch execution for single-threaded queries yes yes yes yes Archival compression option yes yes yes yes yes Snapshot isolation and read-committed snapshot isolation yes yes yes yes Specify columnstore index when creating a table yes yes yes yes Always On supports columnstore indexes yes yes yes yes yes yes Always On readable secondary supports read-only nonclustered columnstore index yes yes yes yes yes yes Always On readable secondary supports updateable columnstore indexes yes yes Read-only nonclustered columnstore index on heap or B-tree yes yes yes 1 yes 1 yes 1 yes 1 Updateable nonclustered columnstore index on heap or B-tree yes yes yes yes Additional B-tree indexes allowed on a heap or B-tree that has a nonclustered columnstore index yes yes yes yes yes yes Updateable clustered columnstore index yes yes yes yes yes B-tree index on a clustered columnstore index yes yes yes yes Columnstore index on a memory-optimized table yes yes yes yes Nonclustered columnstore index definition supports using a filtered condition yes yes yes yes Compression delay option for columnstore indexes in CREATE TABLE and ALTER TABLE yes yes yes yes Columnstore index can have a non-persisted computed column yes 1 To create a read-only nonclustered columnstore index, store the index on a read-only filegroup. La mayoria de features requieren compatibility level 130 (no vale con estár en SQL Server 2016)
  • 19. Resumen Grandes volúmenes de datos • Bloques mínimos de 1M filas Elevada compression Lectura minima de datos Optimiza cache L2