Your SlideShare is downloading. ×
Indices columnares | SolidQ Summit 2012
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Indices columnares | SolidQ Summit 2012

157

Published on

SolidQ Summit http://summit.solidq.com …

SolidQ Summit http://summit.solidq.com
Con SQL Server 2012 tenemos la posibilidad de crear un nuevo tipo de índices para mejorar el rendimiento de forma exponencial ante consultas que involucran un elevado trasiego de información. En esta sesión, hablaremos en detalle de los nuevos índices columnares, qué nos aportan y para qué tipo de escenarios nos van a resultar beneficiosos.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
157
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Indices columnares en SQL Server 2012Enrique PuigDPE – Motor RelacionalMAP 2012 – MCPIT SQL Serverepuig@solidq.comJavier LoriaMentor – Motor Relacional & BIDe 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 PreguntasAgenda¿Qué vamos a ver hoy?
  • 3.  Objetivo: Acelerar consultas sobre grandes volúmenes dedatos. 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 modeIntroducción¿Que son los índices columnares?
  • 4. IntroducciónArquitecturaidVenta Producto cantidad Precio1 Camisa 2 49.992 Jersey 3 60.003 Zapatos 4 224.754 Pantalón 1 35.005 Camisa 1 60.006 Jersey 4 180.007 Zapatos 6 315.508 Pantalón 1 48.75TablaData page 11 camisa 49.9922 Jersey 60.0033 Zapatos 224.7544 Pantalón 35.001Data page 21 camisa 60.0012 Jersey 180.0043 Zapatos 315.5064 Pantalón 48.751idventa Producto12345678Cantidad PreciocamisaJerseyZapatosPantalóncamisaJerseyZapatosPantalón2341146149.9960.00224.7535.0060.00180.00315.5048.75SegmentosXVelocity
  • 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 modeClaves de rendimiento¿Por qué va tan rápido?
  • 6. Claves de rendimientoAlmacenamiento enfilasMemoriaDiscoData page 11 camisa 49.9922 Jersey 60.0033 Zapatos 224.7544Pantalón35.001Data page 21 camisa 60.0012 Jersey 180.0043 Zapatos 315.5064Pantalón48.751Data page 11 camisa 49.9922 Jersey 60.0033 Zapatos 224.7544 Pantalón 35.001Data page 21 camisa 60.0012 Jersey 180.0043 Zapatos 315.5064 Pantalón 48.751SelectidVenta,PrecioFrom Tabla
  • 7. Claves de rendimeintoÍndices columnaresMemoriaDisco SelectidVenta,PrecioFrom Tablaidventa Producto12345678Cantidad PreciocamisaJerseyZapatosPantalóncamisaJerseyZapatosPantalón2331567849.9960.00224.7535.0049.9960.00224.7535.001234567849.9960.00224.7535.0049.9960.00224.7535.00
  • 8. DEMORendimiento de índices columnares
  • 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 rendimientoFast 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 llamadasProcesamiento Fila a FilaGetNextRow() 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 rendimientoProcesamiento Fila a Fila¿Y para grandes volúmenes de datos?GetNextRow()GetNextRow() GetNextRow() GetNextRow()20M Filas20M Filas500 Filas500 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, DISTINCTFast batch modeSQL 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 rendimientoFast Batch mode¿Y para grandes volúmenes de datos?GetNextRow()GetNextRow() GetNextRow() GetNextRow()20M Filas20M Filas500 Filas500 Filas
  • 14. DEMOFast Batch Mode- Row mode vs. Batch mode performance- Operators que no implementan batch mode
  • 15. Batch mode vs. Row Mode y paralelismo18434237264119180 2000 4000 6000 8000 10000 12000 14000ColumnstoreSin columnstoreDuration (ms)Comparacion rendimiento consultaNo paraleloparalelo
  • 16.  Decimal y/o numeric (precision >18) Datetimeoffset (precision > 2) Binary, Varbinary Image Text, ntext Varchar(max), nvarchar(max) HierarchyID Timestamp Uniqueidentifier Sqlvariant xmlRestriccionesTipos 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 OLTPRestriccionesLimitaciones 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 DirectQueryEscenarios donde encajaDataWharehouse
  • 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 pesadosEscenarios donde encajaReporting
  • 20. Técnicas de cargaDeshabilitando/Habilitando el índice1• Deshabilitar el índice2• Insertar/borrar/modificar datos3• Reconstruir el índice
  • 21. DEMOHabilitando/deshabilitando el índice
  • 22. Técnicas de cargaParticionado de datos1• Crear tabla intermedia2• Insertar datos3• Crear índice columnar4• SWITCH a una partición vacía
  • 23. DEMOParticionado de datos
  • 24. Técnicas de cargaHibrido: Tabla + VistaTablaNormalTablaColumnarSYNCVista
  • 25. DEMOPruebas en escenarios reales
  • 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 denuestros mentores de España y Latino América,ésta es tu oportunidad.http://summit.solidq.com/madrid/Síguenos:

×