Successfully reported this slideshow.
Your SlideShare is downloading. ×

Columnstore en la vida real

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Query store
Query store
Loading in …3
×

Check these out next

1 of 20 Ad

Columnstore en la vida real

Download to read offline

En la vida real, columnstore puede aplicar bien o mal. En esta sesión veremos qué podemos hacer para conseguir un verdadero real-time operational analytics en nuestros entornos OLTP.

En la vida real, columnstore puede aplicar bien o mal. En esta sesión veremos qué podemos hacer para conseguir un verdadero real-time operational analytics en nuestros entornos OLTP.

Advertisement
Advertisement

More Related Content

Similar to Columnstore en la vida real (20)

More from SolidQ (20)

Advertisement

Recently uploaded (20)

Columnstore en la vida real

  1. 1. Columnstore en SQL Server Cómo utilizarlo en nuestros entornos OLTP
  2. 2.  Ingeniero Informático  Microsoft Data Platform MVP  Mentor en SolidQ  Tuning y alta disponibilidad Enrique Catalá Bañuls ecatala@solidq.com @enriquecatala
  3. 3. Real-time operational analytics  Entorno donde conviven cargas mixtas OLAP y OLTP  Mínimo impacto de usuarios de negocio atacando el operacional
  4. 4. Arquitectura analítica tradicional Aspectos clave Implementacion compleja Licenciamiento (dinero) Latencia del dato en analitico IIS Server BI analysts
  5. 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. 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. 7. Diferencias row-store vs columnstore Imagen de Niko Neugebauer
  8. 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. 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. 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
  11. 11. Demo Almacenamiento Cargas de datos Real-time operational analytics
  12. 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. 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. 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. 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. 16. Demo ¿es buena idea migrar a SQL Server 2016+? ¿Diferencias entre standard y Enterprise?
  17. 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. 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. 19. Resumen Grandes volúmenes de datos • Bloques mínimos de 1M filas Elevada compression Lectura minima de datos Optimiza cache L2
  20. 20. Preguntas

×