ms sql server 2014 - in-memory oltp

48
MS SQL Server 2014 In Memory OLTP José Redondo – Kenneth Ureña DPA SolidQ | SDP Bits America Colombia | SQL Server MVP – Database Manager Correo: [email protected] [email protected] Twitter: @redondoj - @sqlcr Blog: redondoj.wordpress.com – www.sqlcr.com

Upload: jose-redondo

Post on 30-Jun-2015

645 views

Category:

Technology


1 download

DESCRIPTION

Sinopsis avanzada sobre la tecnología de base de datos en memoria optimizado para mejorar el rendimiento de las cargas de trabajo OLTP. De manera general, introduciremos los tópicos sobre las tablas de memoria que se optimizan con el fin de accesar los datos eficientemente, libre de contención y procedimientos almacenados nativamente compilados para una ejecución eficaz de lógica de negocio.

TRANSCRIPT

Page 1: MS SQL Server 2014 - In-Memory OLTP

MS SQL Server 2014In Memory OLTP

José Redondo – Kenneth UreñaDPA SolidQ | SDP Bits America Colombia | SQL Server MVP – Database ManagerCorreo: [email protected][email protected]: @redondoj - @sqlcr Blog: redondoj.wordpress.com – www.sqlcr.com

Page 2: MS SQL Server 2014 - In-Memory OLTP

Expositor

Jose Redondo DPA, SolidQ – Specialist Data Platform, BITS Americas Colombia

MCP | MCTS – MS SQL Server; MTA – DAF | MS SQL Server MVP

Page 3: MS SQL Server 2014 - In-Memory OLTP

Diamond Sponsors

Bronze Sponsors

SQL Saturday Sponsors

Page 4: MS SQL Server 2014 - In-Memory OLTP

MS SQL Server 2014In Memory OLTP

Page 5: MS SQL Server 2014 - In-Memory OLTP

AGENDA

Arquitectura Objetos de trabajo Requerimientos Limitaciones Herramientas para identificar

escenarios candidatos

Page 6: MS SQL Server 2014 - In-Memory OLTP

ARQUITECTURA

Page 7: MS SQL Server 2014 - In-Memory OLTP

Conceptos

Conceptos In-Memory Libre de bloqueos

(Versionamiento de registros)

Compilación Nativa de Procedimientos Almacenados

Page 8: MS SQL Server 2014 - In-Memory OLTP

Optimización

Optimización en el almacenamiento de datos

Estructuras de datos optimizadas en memoria

Optimización del Registro de Transacciones

Escritura en bloque

No permite deshacer

Page 9: MS SQL Server 2014 - In-Memory OLTP

Optimización Optimización en el almacenamiento de datos Optimización de

los archivos de datos Escritura secuencial Combinación de

escritura Optimización de

Índices Solo In-Memory No ejecuta persistencia en disco No genera registro (Logging)

No utiliza la base de datos TempDB Optimización del recolector de basura, ;-)

Page 10: MS SQL Server 2014 - In-Memory OLTP

Comportamiento Comportamiento en ejecución

Opción “Transitoria” “Breve” “Corta”

Page 11: MS SQL Server 2014 - In-Memory OLTP

Mitos | Realidades Mitos y Realidades

Mitosa. Igual a DBCC PINTABLEb. Si el servidor se bloquea, todos los datos se pierden

Realidadesa. Nuevo diseño construido completamente desde

cerob. Es persistente en disco. Recuperable totalmente

Page 12: MS SQL Server 2014 - In-Memory OLTP

Sinopsis

• Optimizado para datos In-Memory• Índices son en memoria• No hay pool de buffers. B-Tree• Almacenamiento basado en secuencias

Memoria Principal Optimizada

• T-SQL compilado a código maquina mediante generador de código C y VC

• Llamar a un procedimiento seria solamente un DLL como punto de partida

• Optimizaciones agresivas en tiempo de compilación

T-SQL compilado aCódigo Maquina

• Control de Multi-Versión de concurrencia optimista con soporte completo ACID

• Núcleo del motor de datos utiliza algoritmos sin bloqueo

• Ningún Administrador de Bloqueos, Latches o Spinlocks

Alta Concurrencia• Misma experiencia tanto en el rol de

administrador así como el de desarrollador

• Consultas & transacciones integradas• Alta Disponibilidad integrada con

Recuperación de Desastres (Copia de seguridad / Restauración)

Integración con SQL Server

Page 13: MS SQL Server 2014 - In-Memory OLTP

EstructuraTabular Data Stream (TDS) – Administración y Gestión de

Sesiones

Ejecución de Consultas

T-SQL

Pool de buffer para Tablas e Índices

Parser, Catalogo y

Optimizador

Interoperabilidad de las Consultas

Motor de Almacenamiento para Tablas e Índices

Optimizados en Memoria

Compilador Nativo de

Procedimientos Almacenados y

Schema

Compilador Nativo In-Memory

Memoria Optimizada para Tablas en Grupos de

Archivos

Registros de Transacciones

Grupo de Archivos de Datos

Ap

licació

n C

lien

te

SQLservr.exe

Tipos de Componentes Claves

ComponenteSQL

DLL Generado

ComponenteIn-Memory OLTP

Page 14: MS SQL Server 2014 - In-Memory OLTP

OBJETOS DE TRABAJO

Page 15: MS SQL Server 2014 - In-Memory OLTP

Objetos de trabajo

Administración de la memoria Estructuras de datos en memoria Tablas de datos en memoria Procedimientos Almacenados en memoria Usando la arquitectura de libre bloqueo para

versiones de registros Niveles de aislamiento de transacciones Recolector de basura en memoria

Page 16: MS SQL Server 2014 - In-Memory OLTP

Administración de la memoria

Tablas residentes en memoria todo el tiempo Sin paginación Se debe configurar en las

opciones de SQL con suficiente memoria para almacenar las tablas en memoria optimizada. Lo máximo soportado es de 512GB

La falta de asignación de memoria generara falla en la carga del trabajo transaccional en tiempo de ejecución

Page 17: MS SQL Server 2014 - In-Memory OLTP

Estructuras de datos en memoria Registros

Nuevo formato de registro La estructura del registro es optimizada para residir y ser accesado en memoria

Una sola copia por registro Los índices señalan a los registros, no duplicándolos

Índices Índices HASH para búsquedas similares Memoria optimizada B-Tree para la búsqueda de rangos e igualdades (En CTP2) No existe en disco – Se recrean durante la recuperación

Page 18: MS SQL Server 2014 - In-Memory OLTP

Tablas de datos en memoria Necesidad de Filestream Filegroup (Grupo de archivos

Filestream)

Page 19: MS SQL Server 2014 - In-Memory OLTP

Creación de la base de datosCREATE DATABASE CostaRicaSS282_DB ON PRIMARY ( NAME = [CostaRicaSS282_DB_PRIMARY], FILENAME = 'C:\CostaRicaSS282_test\sqlservr\data\CostaRicaSS282_DB_data.mdf‘ ), FILEGROUP [CostaRicaSS282_DB_FG] CONTAINS MEMORY_OPTIMIZED_DATA ( NAME = [CostaRicaSS282_DB_DIR], FILENAME = 'C:\CostaRicaSS282_test\sqlservr\data\CostaRicaSS282_DB_DIR‘ ) LOG ON ( NAME = [CostaRicaSS282_DB_LOG], FILENAME='C:\CostaRicaSS282_test\sqlservr\data\CostaRicaSS282_DB.ldf', SIZE=100MB )

Page 20: MS SQL Server 2014 - In-Memory OLTP

Creación de la tabla DDL

Page 21: MS SQL Server 2014 - In-Memory OLTP

Creación de la tabla DDL

CREATE TABLE DDL

Generación y Compilación del

código

Tabla DDL generada

Tabla DDL cargada

Page 22: MS SQL Server 2014 - In-Memory OLTP

Almacenamiento de la Tabla Filestream es el mecanismo subyacente de almacenamiento de la información Archivos de datos Solamente se escriben los datos sobre “tx.commit()” Delta Files Almacenar los registros eliminados (Las actualizaciones se comporta como una inserción / eliminación según sea el caso)

Page 23: MS SQL Server 2014 - In-Memory OLTP

Se utiliza el registro de transacciones de SQL para almacenar contenido Todo el registro es lógico

No hay registro para las modificaciones de estructuras físicas No hay índices específicos / Mantenimiento de los índices en el

registro de transacciones No hay información para deshacer cuando se registra en el Log

Registro de Transacciones (Logging)

Page 24: MS SQL Server 2014 - In-Memory OLTP

Procedimientos Almacenados en memoria

Contexto Nativo Compilado en lenguaje C y compilado en un archivo DLL

usando VC (Visual C++) Optimizado agresivamente en tiempo de

compilación Sólo pueden acceder a tablas en memoria No todas las construcciones de T-SQL y

funciones son soportadas No es permitido modificar el Procedimiento

Almacenado – Se deberá Eliminar y Recrearlo nuevamente

Page 25: MS SQL Server 2014 - In-Memory OLTP

Procedimientos Almacenados en memoria

Generación

CREATE PROC DDLOptimización de la

consulta

Generación y Compilación de

Código

Procedimiento DDL generada

Procedimiento DDL cargada

Page 26: MS SQL Server 2014 - In-Memory OLTP

Procedimientos Almacenados en memoria

Creación

Page 27: MS SQL Server 2014 - In-Memory OLTP

Usando la arquitectura de libre bloqueo para versiones de registros

SQL Server 2014 - Bases de datos en memoria no tiene períodos de bloqueos

Las versiones de registros se usan para mantener las actualizaciones

No aplica "TempDB" Las versiones de registros que ya no se hacen referencia, son basura a recogerse Soporta niveles de aislamiento Snapshot (instantánea), Repeatable Read y Serializable

Page 28: MS SQL Server 2014 - In-Memory OLTP

Snapshot (Instantánea) Las lecturas son consistentes

a partir del inicio de la Transacción

Las Escrituras son siempre consistentes

Repeatable Read Las operaciones de lectura

ceden a las mismas versiones de registros, si se repiten en el momento de aplicarse

Serializable Transacción que se ejecuta como si no hubieran transacciones concurrentes –

Todas acciones suceden en un punto único de serialización (Commit Time)

Niveles de aislamiento de transacciones

Page 29: MS SQL Server 2014 - In-Memory OLTP

Recolector de basura en memoria Versionamiento de registros

Actualizaciones, eliminaciones y las operaciones de inserción abortadas, crean versiones de fila que (Eventualmente) ya no son visibles para cualquier transacción

Análisis de estructuras de índice más lento

Crear memoria sin usar que necesita ser reclamada (Por ejemplo, Recogida de basura)

Page 30: MS SQL Server 2014 - In-Memory OLTP

Recolector de basura en memoria Recolector de basura (GC)

Análogo a la versión del "Store Cleanup Task for Disk" dando soporte al 'Read Committed Snapshot' (RCSI) directamente

El Sistema mantiene un hit de la transaccionabilidad activa más antigua en ejecución

Page 31: MS SQL Server 2014 - In-Memory OLTP

Recolector de basura en memoria Propósitos de diseño

No hay bloqueos, Es cooperacional, Eficiente, Responsivo, Escalable

Las transacciones activas trabajan de manera cooperativa y recoger todos los elementos de trabajo del GC

Ser subproceso del sistema dedicado a hacer GC

Page 32: MS SQL Server 2014 - In-Memory OLTP

DEMO

Page 33: MS SQL Server 2014 - In-Memory OLTP

REQUERIMIENTOS

Page 34: MS SQL Server 2014 - In-Memory OLTP

Requerimientos Utiliza todo el ecosistema existente

de Hardware Funciona perfectamente con todos

los objetos de SQL Server en la actualidad

Es compatible con ACID Se pueden mezclar tablas basadas

en memoria y en disco en la misma base de datos

Las transacciones pueden abarcar tanto en memoria y como en disco basado en tablas

Page 35: MS SQL Server 2014 - In-Memory OLTP

Requerimientos No, no puede tener tablas particionadas en memoria Sí, se puede y esta permitido llenar al 100% en memoria los objetos a utilizar en el servidor También podemos limitar cuánta memoria es utilizada por las tablas en memoria (Pensado para las agrupaciones [Pool] de recursos) Sí, podemos tener y aplicar Alta Disponibilidad

Page 36: MS SQL Server 2014 - In-Memory OLTP

DEMO

Page 37: MS SQL Server 2014 - In-Memory OLTP

LIMITACIONES

Page 38: MS SQL Server 2014 - In-Memory OLTP

Limitaciones El tamaño de los registros (Filas) no pueden ser

mayores de 8060 bytes (Incluyendo las columnas con tipo de datos de longitud 'Variable')

No se admiten los tipos de datos Datatimeoffset, Geo, Jerárquicos, LOB, UDTs, NText, Varchar(MAX), SQL_Variant y XML

No es permitido utilizar Clave Externa ('Foreing Key'), Unique y las restricciones 'Check'

Tampoco se admiten Columnas de Identidad y las Secuencias

El almacenamiento FILESTREAM no es soportado

Page 39: MS SQL Server 2014 - In-Memory OLTP

Limitaciones No hay desencadenadores 'Triggers' DML No ALTER TABLE (Es necesaria el recrear la

tabla) No se permite agregar o quitar ningún índice

(Es necesaria el recrear la tabla) Los índices pueden ser reconstruidos 'REBUILD

INDEX' (Consideren el tiempo de inicio del proceso)

Índice Clustered no son soportado Las tablas como memoria optimizada soportan

un máximo de ocho índices Los Índices de Almacenamiento Columnar no

son soportados La compresión de los datos no es soportada

Page 40: MS SQL Server 2014 - In-Memory OLTP

Limitaciones Database Mirroring no esta soportado La opción AUTO_CLOSE no es soportado Database Snapshots no es soportado No Copias de Seguridad diferenciales DBCC (CHECKDB & CHECKTABLE) no

trabaja bajo este contexto ROWGUIDCOL no son soportado Los archivos en disco son combinados

('Fusionan') mientras se están cargando Ejecutando fuera de memoria Multiple Active Result Sets (MARS) y el

Change Data Capture no es soportado

Page 41: MS SQL Server 2014 - In-Memory OLTP

HERRAMIENTAS PARA IDENTIFICAR ESCENARIOS CANDIDATOS

Page 42: MS SQL Server 2014 - In-Memory OLTP

Herramientas para identificar escenarios candidatos

Herramientas (AMR) – Analizar, Migrar y Reportar SSMS

Management Data Warehouse (MDW) Data Collection

Page 43: MS SQL Server 2014 - In-Memory OLTP

DEMO

Page 44: MS SQL Server 2014 - In-Memory OLTP

PREGUNTAS & RESPUESTAS

Page 45: MS SQL Server 2014 - In-Memory OLTP

MS SQL Server 2014In Memory OLTP

Jose Redondo – MS SQL Server MVPCorreo: [email protected]: @redondojBlog: redondoj.wordpress.com

Page 46: MS SQL Server 2014 - In-Memory OLTP

MS SQL Server 2014In Memory OLTP

Kenneth Ureña – MCSA, MCTS, MCITP, MTCCorreo: [email protected]: @sqlcrBlog: www.sqlcr.com

Page 47: MS SQL Server 2014 - In-Memory OLTP

Los invitamos al

Page 48: MS SQL Server 2014 - In-Memory OLTP

Muchas gracias por su participación