52

In-Memory OLTP en SQL Server 2016

Embed Size (px)

Citation preview

Page 1: In-Memory OLTP en SQL Server 2016
Page 2: In-Memory OLTP en SQL Server 2016

Microsoft Data PlatformAvanet

Jose RedondoMicrosoft SQL Server MVP | CEO EntornoDB | DPA SolidQ

[email protected] | @redondoj | redondoj.wordpress.com

In-Memory OLTP en SQL Server 2016

Page 3: In-Memory OLTP en SQL Server 2016

Expositor

• Data Architect• BI Expert, Data Analysis & Big Data• Dev Client, Web & Database .NET - Java• Dev – DBA Microsoft, SyBase, IBM &

Oracle• Speaker Latam “Microsoft, Avanet,

FirstCloud, ShareCol” & USA “ITProCamp”

• SQL Server MCP – MSTS – MTA• Contributing Technical Reviewer Packt

Publishing

Microsoft SQL Server MVP | CEO EntornoDB | DPA SolidQ

Page 4: In-Memory OLTP en SQL Server 2016

In-Memory OLTP en SQL Server 2016

Page 5: In-Memory OLTP en SQL Server 2016

Agenda

•Fundamentos básicos de In-Memory OLTP•Primera etapa: • In-Memory OLTP en Microsoft SQL Server 2014

•Etapa siguiente: • La siguiente ruta: In-Memory OLTP en Microsoft SQL Server 2016

Page 6: In-Memory OLTP en SQL Server 2016

Fundamentos básicos deIn-Memory OLTP

Page 7: In-Memory OLTP en SQL Server 2016

Preferencias de Hardware

19

90

19

91

19

92

19

93

19

94

19

95

19

96

19

97

19

98

19

98

20

00

20

01

20

01

20

02

20

04

20

07

20

08

20

09

20

10

110

1001000

10000100000

1000000

$ Por GB de PC Class Memory

US$/G

B

Según La Ley de Moore, el poder de procesamiento total de la CPU se

mantiene PERO en el procesamiento paralelo...

La velocidad del CPU se tarificaría no

ajustadamente

Porque los procesadores generarian problemas

Mientras tanto

continúa bajando costo

de la memoria RAM

Las nuevas CPU no permitirán ejecutar

una transacción corta mas rápido

Page 8: In-Memory OLTP en SQL Server 2016

Arquitectura

Integración de SQL Server

• Misma experiencia de gestión, administración y desarrollo

• Consultas y transacciones Integradas

• 'HA' (High Availability) integrada y Backup/Restore

Memoria principal optimizada

• Punteros directos a filas

• Índices sólo existen en memoria

• Sin pool en buffers• Sin registro de

escritura anticipada

• Almacenamiento de información basada en Stream

Ejecución sin bloqueo

• Multi-versión de control de concurrencia optimista, soporte completo de ACID

• Estructuras de datos sin bloqueo

• Sin bloqueos, latches o spinlocks,

• Ninguna I/O en transacción

T-SQL compilado en código máquina

nativo• T-SQL compilado a

código máquina aprovechando el compilador de VC

• Procedimiento y sus queries, se convierte en una función de C

• Optimizaciones de tiempo de compilación agresivas

Arq

uit

ectu

raS

olu

ció

n

Motor híbrido y experiencia integrado

Velocidad de caché en memoria con

capacidades de una base de datos

Las transacciones se ejecutan hasta el final sin bloqueos

Queries y la lógica de negocio

funcionan a la velocidad de código

nativo

Bases Datos de

rendimiento crítico se adaptan

en la memoria

Los conflictos son poco comunes

Fuerza de decisión en tiempo de

compilación

Integrado

Page 9: In-Memory OLTP en SQL Server 2016

Primera etapa: In-Memory OLTP en Microsoft SQL Server 2014

Page 10: In-Memory OLTP en SQL Server 2016

SQL Server 2014 In-Memory OLTP

• Anteriormente llamado “Hekaton” en fase beta. • Liberado en SQL Server 2014

Page 11: In-Memory OLTP en SQL Server 2016

SQL Server 2014 In-Memory OLTP

• Valor agregado:• Rendimiento OLTP

(Hasta 30x) debido a • Alta escalabilidad:

Arquitectura sin bloqueos ni obstrucciones permitiendo escalamiento lineal

• Acceso eficiente a datos y Procesamiento de consultas: Estructuras de datos en memoria optimizada y compilación nativa

Page 12: In-Memory OLTP en SQL Server 2016

SQL Server 2014 In-Memory OLTP

• Valor agregado:• Integrado en SQL Server

permitiendo reducción del TCO• Parte de la edición

Enterprise• La misma base de datos

puede estar tanto en la memoria así como en disco

• Experiencia integrada tanto del desarrollador así como del DBA: T-SQL, Client Stack, Tooling, Backup/Restore, AlwaysOn...

Page 13: In-Memory OLTP en SQL Server 2016

SQL Server 2014 In-Memory OLTP

• Escenarios vitales: Aplicaciones OLTP de alto rendimiento y escalado

Page 14: In-Memory OLTP en SQL Server 2016

Conjunto de características de SQL 2014

• Tablas optimizadas en Memoria• Tablas perdurables

(Predeterminado) están completamente conectadas y persistente• Tablas no duraderas

fungiendo como "geniales" tablas temporales globales en base de datos de usuario

Page 15: In-Memory OLTP en SQL Server 2016

Conjunto de características de SQL 2014

• Procedimientos Almacenados nativamente compilados• Comandos comunes SQL

bajo escenarios OLTP (Select - Insert - Delete - Update), Manejo de excepciones de errores y más

• Operadores más utilizados, órdenes internas (MATH, String, Identity) entre otros

• Ejecución de consultas comunes – Joins, GroupBy, OrderBy, TOP, SORT, Table, Query, Join Hints y muchas más

Page 16: In-Memory OLTP en SQL Server 2016

Conjunto de características de SQL 2014• Interoperabilidad en el acceso a tablas de memoria optimizada

• Area de superficie de los queries T-SQL casi completa

Page 17: In-Memory OLTP en SQL Server 2016

Conjunto de características de SQL 2014

• Tipos de tabla optimizada en memoria• Utilizar variables de tabla de memoria optimizado para mitigar la contención de

TempDB

Page 18: In-Memory OLTP en SQL Server 2016

Casos de Éxito

Page 19: In-Memory OLTP en SQL Server 2016

Antes Con tecnología In-Memory

Sincronización asincrónica diaria

Minoristas en línea

Cercano a la sincronización en tiempo

real

Minoristas en línea

Clientes

Clientes

7x rendimiento más rápidoPermite actualizaciones en tiempo real

Beneficios claves Aumento de las ventas con mayor

rendimiento y satisfacción del cliente mejorada

7x de rendimiento habilita en tiempo real actualizaciones de existencias e inventarios

Los clientes pueden acceder a los datos durante las actualizaciones

Page 20: In-Memory OLTP en SQL Server 2016

16x mas transacciones por segundo &340x de reducción en tiempos visualizado con In-Memory

Con In-Memory OLTP & ColumnStore

Antes

Solution

Gaming App

Gaming App

ReportingReporting

Reports in

17 min

15,000 requests/sec

Reports in

3 sec

250,000 requests/sec

Page 21: In-Memory OLTP en SQL Server 2016

Ajuste por registro validando relación Costo-Beneficio con tecnología In-Memory

40%de costo

800% de

ejecución teniendo una ganancia

con el mismo HW

Considera incremento del 800% en solicitudes por segundo como ganancias utilizando In-Memory OLTP de SQL Server bajo IBM System x3850 X6

en rendimiento en la misma

configuración

24x de incremento en rendimiento con LSI Nytro WarpDrive y SQL Server 2014 In-Memory OLTP en comparación con la misma configuración con SQL Server 2012

Mayor rendimiento de SQL Server 2014 In-Memory OLTP bajo 4x con ioDrive2 Duo 2.4TB HW

4xde ejecución

24xde

incremento40%de costo

Page 22: In-Memory OLTP en SQL Server 2016

Demo

Page 23: In-Memory OLTP en SQL Server 2016

Etapa siguiente: La siguiente ruta: In-Memory OLTP

en Microsoft

SQL Server 2016

Page 24: In-Memory OLTP en SQL Server 2016

SQL Server 2014Limitación: Tamaño de la sostenibilidad y persistencia de una tabla en una base de datos <= 256 GB

Desafío del Cliente: Tamaño de tablas en memoria

Page 25: In-Memory OLTP en SQL Server 2016

Desafío• El rendimiento critico de mi(s) tabla(s) requerirá >

256GB• El rendimiento critico de mis tablas son de < 256GB

PERO pueden excederse a este limite en el futuro

Desafío del Cliente: Tamaño de tablas en memoria

Page 26: In-Memory OLTP en SQL Server 2016

SQL Server 2016• Soporta 2TB de sostenibilidad por tabla(s) en la base de datos• Cliente puede resolver la limitación de tamaño mediante la adición de más memoria al servidor físico

Desafío del Cliente: Tamaño de tablas en memoria

Page 27: In-Memory OLTP en SQL Server 2016

SQL Server 2014Desafío: Almacenamiento de registros eliminados que son recolectado de la basura

Es lento debido al paso adicional con FileStream

Desafío del Cliente:Administración de almacenamiento de información

Page 28: In-Memory OLTP en SQL Server 2016

SQL Server 2016•Gestión de almacenamiento es disociada del FileStream• Archivo(s) no utilizado(s) se puede volver a utilizar inmediatamente después de que se hace referencia en el registro de transacciones (Log Transaction)

Desafío del Cliente:Administración de almacenamiento de información

Page 29: In-Memory OLTP en SQL Server 2016

SQL Server 2014Limitación: No la Encriptación de Datos Transparente (TDE)

Desafío del Cliente: Seguridad (TDE)

Page 30: In-Memory OLTP en SQL Server 2016

Desafío•Mis tablas de rendimiento crítico tienen información sensible que debe ser protegida mediante TDE

Desafío del Cliente: Seguridad (TDE)

Page 31: In-Memory OLTP en SQL Server 2016

SQL Server 2016• Soportes de TDE para las tablas de memoria optimizadas• Actualización de base de datos : • Turn off • TDE -> • Drop the keys -> • Create New keys->

• Turn on

Desafío del Cliente: Seguridad (TDE)

Page 32: In-Memory OLTP en SQL Server 2016

•SQL Server 2014Limitación: Escala limitada > (2 socket/64-cores)

Desafío del cliente: Escala de almacenamiento

Single Offline Checkpoint Thread

Del Tran2(TS 450)

Del Tran3(TS 250)

Del Tran1(TS150)

Insert into Hekaton T1

Log in SQL Table

Del Tran1(TS150)

Del Tran2(TS 450)

Del Tran3(TS 250)

Insert into Hekaton T1

SQL Transacti

onLog

Disco

Page 33: In-Memory OLTP en SQL Server 2016

SQL Server 2016•Múltiples hilos Checkpoint fuera de línea (Offline)• Uno por contenedor

Desafío del cliente: Escala de almacenamiento

Single Offline Checkpoint Thread

Del Tran2(TS 450)

Del Tran3(TS 250)

Del Tran1(TS150)

Insert into Hekaton T1

Log in SQL Table

Del Tran1(TS150)

Del Tran2(TS 450)

Del Tran3(TS 250)

Insert into Hekaton T1

SQL Transacti

onLog

Disco

Single Offline Checkpoint Thread Single Offline Checkpoint Thread

Page 34: In-Memory OLTP en SQL Server 2016

Incrementa la Compatibilidad

Page 35: In-Memory OLTP en SQL Server 2016

Retos y Desafíos de las Aplicaciones

• Desarrollo o Modificación de las aplicaciones actuales• Métodos iterativo Agile de

desarrollo• Tuning de bases de datos

de las aplicaciones• Respondiendo a los

cambios de patrones de datos• Necesidad de ser capaces

de modificar los Schema de las base de datos

Page 36: In-Memory OLTP en SQL Server 2016

Soporte al comando T-SQL “ALTER”

• ALTER PROC y sp_recompile suportado• Online

• ALTER TABLE para Schema y cambios en los índices• Soporte en los cambios

completos de Schema: • Add• Alter• Drop Column• Constraint

Page 37: In-Memory OLTP en SQL Server 2016

Soporte al comando T-SQL “ALTER”

• Operaciones de Índices• Add/Drop de índices

soportados• Cambios en los índices HASH

bucket_count a través de la ejecución del comando REBUILD• Nueva sintaxis para ALTER

TABLE …. ADD/DROP/ALTER INDEX

• ALTER TABLE es una operación fuera de línea; requiere 2X de memoria• sp_rename todavía no esta

soportado

Page 38: In-Memory OLTP en SQL Server 2016

Demos

Page 39: In-Memory OLTP en SQL Server 2016

Desafío:Informes de consultas de tablas en memoria

• SQL Server 2014 utiliza planes de ejecución (Consultas) de serie para todas las consultas tocando tablas In-Memory

Page 40: In-Memory OLTP en SQL Server 2016

Desafío:Informes de consultas de tablas en memoria

• SQL Server 2016 ahora permite consultas que tocan tablas In-Memory utilizando planes paralelos.

Page 41: In-Memory OLTP en SQL Server 2016

Convirtiendo aplicaciones existente

• {LEFT|RIGHT} OUTER JOIN• Disjunction (OR, NOT)• UNION [ALL]• SELECT DISTINCT• Subqueries (EXISTS, IN, scalar)• FOREIGN KEY• CHECK• UNIQUE constraints and indexes• Nested Stored procedures

(EXECUTE)• Natively compiled scalar UDFs• Indexes on NULLable columns

Page 42: In-Memory OLTP en SQL Server 2016

Validaciones personalizadas

•DML Triggers en tablas en memoria optimizadas• AFTER Triggers, Nativamente compilado

Page 43: In-Memory OLTP en SQL Server 2016

Código generado con Entity-Framework y aplicaciones ISV (Independent Software Vendor)

•Multiple Active Result Sets (MARS)• Soporte en el diseñador de tablas en SSMS

Page 44: In-Memory OLTP en SQL Server 2016

Cómodo escenario para Migración de aplicaciones

•Migración asistida para Procedimientos Almacenados• Asistente de migración indican que limitaciones son fáciles, y cuales serían las difíciles de solucionar• Soporte del analizador de mejores prácticas

Page 45: In-Memory OLTP en SQL Server 2016

Amplia gama de soporte para el Collation e Idiomas

• Collations no aplicable "BIN2" en columnas de clave de índice• Code Pages no aplicable "Latin" para columnas (VAR)Char• Collations no aplicable "BIN2" para comparaciones y clasificaciones en módulos nativos

Page 46: In-Memory OLTP en SQL Server 2016

Aumento de capacidades de la Plataforma

• In-Memory OLTP en Azure SQL DB• Ahora como Private Preview• Este verano como Public Preview

Page 47: In-Memory OLTP en SQL Server 2016

Mejoras In-MemoryAnálisis operacional & Mejora del rendimiento

Misión de rendimiento crítico

Page 48: In-Memory OLTP en SQL Server 2016

Mejoras In-MemoryAnálisis operacional & Mejora del rendimiento

•Misión de rendimiento crítico

Page 49: In-Memory OLTP en SQL Server 2016

Demo

Page 50: In-Memory OLTP en SQL Server 2016

Preguntas & Respuestas

Page 51: In-Memory OLTP en SQL Server 2016

Jose RedondoMicrosoft SQL Server MVP | CEO EntornoDB | DPA [email protected] | @redondoj | redondoj.wordpress.com

Page 52: In-Memory OLTP en SQL Server 2016