En esta sesión vamos a analizar las novedades que SQL Server 2016 nos trae en In-Memory OLTP. En esta nueva versión se han eliminado una gran cantidad de limitaciones que hacen que podamos finalmente aplicar esta tecnología a un gran número de escenarios. Mostraremos situaciones habituales donde gracias a esta tecnología podremos reducir la contención por concurrencia y aumentar el rendimiento de nuestra base de datos de forma muy considerable.


Presentación realizada en el SolidQ Summit por: Rubén Garrigós

 

[slideshare id=62537383&doc=inmemory-160530130815&h=495&w=595]

1. #SQSummit In-Memory OLTP Rubén Garrigós rgarrigos@solidq.com Nivel 200

2. Contenido de la sesión • Introducción a In-Memory OLTP • Mejoras en SQL Server 2016 • Usabilidad • Mantenimiento • Rendimiento • Ejemplos de uso

3. Introducción a In-Memory OLTP Un nuevo paradigma

4. Introducción a In-Memory OLTP • Sistemas OLTP “extremos” que requieren • Alta concurrencia • Baja latencia • Gran escalabilidad • Otros escenarios • Tablas staging • Tablas o variables temporales • Procesos cálculo masivo • Procesos iterativos (cursores) • Operaciones frenadas por el transaction log

5. Introducción a In-Memory OLTP • Dos componentes principales • Tablas en memoria • Procedimientos almacenados compilados nativos • Parte importante de los beneficios de rendimiento vienen con la combinación de ambos • Tendencia general en los motores de BBDD • DB2 BLU, Oracle Database In-Memory, VoltDB, EXASolution, etc.

6. Tablas en memoria • La tabla está completamente en memoria • Sin esperas de accesos a disco lecturas y escrituras • Nuevas estructuras sin latches • Tablas hash (sin orden) y árboles BW (ordenados) • Concurrencia optimista con versionado de filas • Durabilidad configurable • Pueden interoperar con el resto de tablas “tradicionales” • No sustituyen a las tablas “tradicionales”

7. Procedimientos almacenados compilados nativos • Se compilan a código C nativo • Proceso costoso y lento • Se enlazan al proceso de SQL Server como otra DLL más. • Únicamente pueden acceder a tablas en memoria, no a tablas “tradicionales” • Una llamada RPC apunta directamente al punto de entrada de la DLL • Ejecución muy rápida y eficiente

8. Mejoras en SQL Server 2016 In-Memory OLTP “v2.0”

9. Mejoras en SQL Server 2016 • Usabilidad • Menor número de stoppers • Interoperabilidad • Mantenimiento • Más sencillo pero con impacto • Rendimiento • Paralelismo y multithread • Columnstore sobre tablas en memoria

10. Usabilidad tablas en memoria • Soporte de todos los collations para cadenas • BIN2 seguirá siendo más rápido y preferible • Soporte LOB • Índices con columnas que aceptan NULL • Restricciones FOREIGN KEY • Restricciones CHECK • Restricciones UNIQUE • Triggers (AFTER) para INSERT/UPDATE/DELETE

11. Usabilidad módulos nativos compilados • LEFT/RIGHT OUTER JOIN • OR y NOT • UNION / UNION ALL • SELECT DISTINCT • Subqueries (EXISTS, IN) • Llamadas anidadas • OUTPUT

12. Interoperabilidad • Row-Level Security • Temporal tables • MARS • TDE

13. Mantenimiento • Comandos ALTER TABLE • Cambios de esquema/indexación • Actualización automática de estadísticas • ALTER y sp_recompile para módulos nativos compilados (no se recompila por estadísticas) • Query store • Estadísticas runtime desactivadas (activación granular) • Tiempo de compilación no incluye la compilación en C • Sin soporte CHECKDB • CHECKSUMs verificados durante full backup

14. Rendimiento • Hasta 2TB de tablas en memoria • Paralelismo • Scans paralelos de índices hash / non-clustered • Planes paralelos junto a tablas tradicionales • Multithread • Checkpoint • Recovery • Merge de segmentos • UDFs compiladas nativas

15. Rendimiento • Full In-Memory • OLTP + Columnar • Columnstore sobre tablas en memoria • ~10-15% extra • COMPRESSION_DELAY • Reducir fragmentación • Columnstore filtrado

16. Ejemplos de uso

17. Ejemplos de uso • No siempre “compensa” utilizar In-Memory • Consumo recursos • Limitaciones • Coste adaptación • Rendimiento • Analizar caso a caso • En sistemas heredados recomendamos focalizarse en procesos problemáticos • En nuevos desarrollos evaluar ventajas e inconvenientes para maximizar su utilización

18. Demo Cálculo deslizante: set vs cursor vs windowing vs SQL CLR vs In-Memory OLTP

19. Demo Procesos batch: Tablas/variables temporales vs In- Memory OLTP

20. Demo Límites transaction log vs In-Memory OLTP

21. ¿Preguntas? rgarrigos@solidq.com

22. También puedes preguntar tus dudas con el hashtag #SQSummit en Twitter ADAPTIVE BI FRAMEWORK Te ayudaremos a mejorar la velocidad de desarrollo de tu plataforma de analítica de negocio basada en nuestra experiencia: •Diseña antes de construir •Automatización de procesos por ETL •Servicios de mentoring para ayudarte a conseguir mejores prácticas para la construcción de procesos específicos y plataformas de analítica de negocio •Muy fácil de mantener SOLIDQ FLEX SERVICES Con SolidQ Flex Services evitarás sustos, consiguiendo que tus sistemas sean estables. Desde una solución sencilla de monitorización, hasta un servicio de atención de incidencias 24/7, mantenimiento proactivo, resolución de problemas y línea de soporte. Todo con un coste fijo mensual… y tú dedica el tiempo a las cosas importantes. ¡Gracias!

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You May Also Like
Leer más

Azure Stream Analytics serie. Parte 1: Uso e implementación de funciones en JavaScript en un job de ASA

En esta serie de posts vamos a comentar diferentes aspectos de Azure Stream Analytics (ASA de ahora en adelante), que pueden resultarnos útiles en nuestros desarrollos del día a día. Sino conoces Azure Stream Analytics puedes ver una introducción en este enlace. Parte 1: Uso e implementación de funciones en JavaScript en un job de ASA