ms sql server 2014 - in-memory oltp

Post on 30-Jun-2015

645 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

MS SQL Server 2014In Memory OLTP

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

Expositor

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

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

Diamond Sponsors

Bronze Sponsors

SQL Saturday Sponsors

MS SQL Server 2014In Memory OLTP

AGENDA

Arquitectura Objetos de trabajo Requerimientos Limitaciones Herramientas para identificar

escenarios candidatos

ARQUITECTURA

Conceptos

Conceptos In-Memory Libre de bloqueos

(Versionamiento de registros)

Compilación Nativa de Procedimientos Almacenados

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

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, ;-)

Comportamiento Comportamiento en ejecución

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

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

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

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

OBJETOS DE TRABAJO

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

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

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

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

Filestream)

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 )

Creación de la tabla DDL

Creación de la tabla DDL

CREATE TABLE DDL

Generación y Compilación del

código

Tabla DDL generada

Tabla DDL cargada

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)

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)

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

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

Procedimientos Almacenados en memoria

Creación

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

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

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)

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

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

DEMO

REQUERIMIENTOS

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

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

DEMO

LIMITACIONES

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

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

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

HERRAMIENTAS PARA IDENTIFICAR ESCENARIOS CANDIDATOS

Herramientas para identificar escenarios candidatos

Herramientas (AMR) – Analizar, Migrar y Reportar SSMS

Management Data Warehouse (MDW) Data Collection

DEMO

PREGUNTAS & RESPUESTAS

MS SQL Server 2014In Memory OLTP

Jose Redondo – MS SQL Server MVPCorreo: redondoj@gmail.comTwitter: @redondojBlog: redondoj.wordpress.com

MS SQL Server 2014In Memory OLTP

Kenneth Ureña – MCSA, MCTS, MCITP, MTCCorreo: urecak@gmail.comTwitter: @sqlcrBlog: www.sqlcr.com

Los invitamos al

Muchas gracias por su participación

top related