MS SQL Server 2014
In Memory OLTP
José Redondo – Kenneth Ureña
DPA SolidQ | SDP Bits America Colombia | SQL Server MVP – Database Manager
Correo: redondoj@gmail.com – urecak@gmail.com
Twitter: @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 2014
In 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
 Mitos
a. Igual a DBCC PINTABLE
b. Si el servidor se bloquea,
todos los datos se pierden
 Realidades
a. Nuevo diseño construido completamente desde cero
b. 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 a
Có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
Estructura
Tabular 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
AplicaciónCliente
SQLservr.exe
Tipos de Componentes
Claves
Componente
SQL
DLL Generado
Componente
In-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 datos
CREATE DATABASE CostaRicaSS282_DB
ON PRIMARY
(
NAME = [CostaRicaSS282_DB_PRIMARY],
FILENAME = 'C:CostaRicaSS282_testsqlservrdataCostaRicaSS282_DB_data.mdf„
),
FILEGROUP [CostaRicaSS282_DB_FG] CONTAINS MEMORY_OPTIMIZED_DATA
(
NAME = [CostaRicaSS282_DB_DIR],
FILENAME = 'C:CostaRicaSS282_testsqlservrdataCostaRicaSS282_DB_DIR„
)
LOG ON
(
NAME = [CostaRicaSS282_DB_LOG],
FILENAME='C:CostaRicaSS282_testsqlservrdataCostaRicaSS282_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 DDL
Optimizació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 2014
In Memory OLTP
Jose Redondo – MS SQL Server MVP
Correo: redondoj@gmail.com
Twitter: @redondoj
Blog: redondoj.wordpress.com
MS SQL Server 2014
In Memory OLTP
Kenneth Ureña – MCSA, MCTS, MCITP, MTC
Correo: urecak@gmail.com
Twitter: @sqlcr
Blog: www.sqlcr.com
Los invitamos al
Muchas gracias por su participación

MS SQL Server 2014 - In-Memory OLTP

  • 1.
    MS SQL Server2014 In Memory OLTP José Redondo – Kenneth Ureña DPA SolidQ | SDP Bits America Colombia | SQL Server MVP – Database Manager Correo: redondoj@gmail.com – urecak@gmail.com Twitter: @redondoj - @sqlcr Blog: redondoj.wordpress.com – www.sqlcr.com
  • 2.
    Expositor  Jose Redondo DPA, SolidQ – Specialist Data Platform, BITS Americas Colombia  MCP | MCTS – MS SQL Server; MTA – DAF | MS SQL Server MVP
  • 3.
  • 4.
    MS SQL Server2014 In Memory OLTP
  • 5.
    AGENDA  Arquitectura  Objetosde trabajo  Requerimientos  Limitaciones  Herramientas para identificar escenarios candidatos
  • 6.
  • 7.
    Conceptos  Conceptos  In-Memory Libre de bloqueos (Versionamiento de registros)  Compilación Nativa de Procedimientos Almacenados
  • 8.
    Optimización  Optimización enel almacenamiento de datos  Estructuras de datos optimizadas en memoria  Optimización del Registro de Transacciones  Escritura en bloque  No permite deshacer
  • 9.
    Optimización  Optimización enel 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, ;-)
  • 10.
    Comportamiento  Comportamiento enejecución  Opción “Transitoria” “Breve” “Corta”
  • 11.
    Mitos | Realidades Mitos y Realidades  Mitos a. Igual a DBCC PINTABLE b. Si el servidor se bloquea, todos los datos se pierden  Realidades a. Nuevo diseño construido completamente desde cero b. Es persistente en disco. Recuperable totalmente
  • 12.
    Sinopsis • Optimizado paradatos 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 a Có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
  • 13.
    Estructura Tabular 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 AplicaciónCliente SQLservr.exe Tipos de Componentes Claves Componente SQL DLL Generado Componente In-Memory OLTP
  • 14.
  • 15.
    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
  • 16.
    Administración de lamemoria  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
  • 17.
    Estructuras de datosen 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
  • 18.
    Tablas de datosen memoria  Necesidad de Filestream Filegroup (Grupo de archivos Filestream)
  • 19.
    Creación de labase de datos CREATE DATABASE CostaRicaSS282_DB ON PRIMARY ( NAME = [CostaRicaSS282_DB_PRIMARY], FILENAME = 'C:CostaRicaSS282_testsqlservrdataCostaRicaSS282_DB_data.mdf„ ), FILEGROUP [CostaRicaSS282_DB_FG] CONTAINS MEMORY_OPTIMIZED_DATA ( NAME = [CostaRicaSS282_DB_DIR], FILENAME = 'C:CostaRicaSS282_testsqlservrdataCostaRicaSS282_DB_DIR„ ) LOG ON ( NAME = [CostaRicaSS282_DB_LOG], FILENAME='C:CostaRicaSS282_testsqlservrdataCostaRicaSS282_DB.ldf', SIZE=100MB )
  • 20.
    Creación de latabla DDL
  • 21.
    Creación de latabla DDL CREATE TABLE DDL Generación y Compilación del código Tabla DDL generada Tabla DDL cargada
  • 22.
    Almacenamiento de laTabla  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)
  • 23.
     Se utilizael 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)
  • 24.
    Procedimientos Almacenados enmemoria  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
  • 25.
    Procedimientos Almacenados enmemoria  Generación CREATE PROC DDL Optimización de la consulta Generación y Compilación de Código Procedimiento DDL generada Procedimiento DDL cargada
  • 26.
    Procedimientos Almacenados enmemoria  Creación
  • 27.
    Usando la arquitecturade 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
  • 28.
     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
  • 29.
    Recolector de basuraen 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)
  • 30.
    Recolector de basuraen 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
  • 31.
    Recolector de basuraen 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
  • 32.
  • 33.
  • 34.
    Requerimientos  Utiliza todoel 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
  • 35.
    Requerimientos  No, nopuede 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
  • 36.
  • 37.
  • 38.
    Limitaciones  El tamañode 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
  • 39.
    Limitaciones  No haydesencadenadores '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
  • 40.
    Limitaciones  Database Mirroringno 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
  • 41.
  • 42.
    Herramientas para identificarescenarios candidatos  Herramientas (AMR) – Analizar, Migrar y Reportar  SSMS  Management Data Warehouse (MDW)  Data Collection
  • 43.
  • 44.
  • 45.
    MS SQL Server2014 In Memory OLTP Jose Redondo – MS SQL Server MVP Correo: redondoj@gmail.com Twitter: @redondoj Blog: redondoj.wordpress.com
  • 46.
    MS SQL Server2014 In Memory OLTP Kenneth Ureña – MCSA, MCTS, MCITP, MTC Correo: urecak@gmail.com Twitter: @sqlcr Blog: www.sqlcr.com
  • 47.
  • 48.
    Muchas gracias porsu participación

Notas del editor

  • #33 Primera y Segunda demo
  • #37 Tercera y Cuarta demo
  • #44 Quinta y Sexta Demo