SlideShare una empresa de Scribd logo
SQL Server 2016
InMemory Tables OLTP
Bienvenida
• Ing. Eduardo Castro, PhD
• MVP de Microsoft SQL Server
• PASS Regional de Mentor
• PASS Board of Directors
• http://www.youtube.com/eduardocastrom
Material de Referencia
SQL Server Evolution. SQL 2016 new innovations. Lindsey Allen Principal Group Program
Manager, Borko Novakovic
Program Manager
New in Master Data Services and Integration Services in SQL Server 2016. Matt Masson
SQL Server Evolution. Shawn Bice Engineering Partner Director
Operational Analytics in SQL Server. Sunil Agarwal Principal Program Manager
SQL Server 2016
inMemory OLTP
27
En memoria Mejoras OLTP
• Artículo Delaware Referencia:
http: //bit.ly/sql2016-in-memory-oltp
• Aaron Bertrand Blog:
http: //sqlperformance.com/2015/05/sql-server-2016/in-
memory-oltp-enhancements
Qué es inMemory OLTP en SQL Server 2014+
29
• Un totalmente nuevo, renovado motor para el almacenamiento de
datos, co-located en la misma base de datos con el motor existente
• Creado para dar soporte a escenarios y casos específicos
• La terminología puede ser confusa
• Tabla Tradicionales: Home - On-Disk, pero idealmente en cache In-Memory
• Tablas In-Memory: Home - In-Memory: pero respaldado en On-Disk Structures
• Si tiene suficiente memoria RAM, On-Disk Tables también se
encuentran en la memoria
• Sin embargo, la aplicación es muy muy diferente
• InMemory tables es fácil de utilizar pero hay que saber cuando aplica
Introducción a InMemory OLTP
• ¿Dónde estamos gastando más tiempo de
ejecución?
• Estos son los resultados de los análisis de Microsoft.
I/O, Thread
Management
Storage Engine Relational Engine
Communication
Stack
10% 80% 10%
Access Methods,
Transaction, Lock, Log,
Managers
T-SQL Interpreter, Query
Execution, Expressions
Introducción a OLTP en memoria
• Hekaton Proyecto - Palabra griega ἑκατόν (houndred).
• El objetivo es mejorar el rendimiento en 100x.
• Estrategia tradicional se basa en las estructuras en los datos almacenados en el
disco.
• Al utilizar plenamente las capacidades de memoria podemos tener estructuras más
simples.
• Disponible a partir de SQL Server 2014.
• Muy mejorada en SQL Server 2016.
In-memory engine en SQL 2016
32
Velocidad de las consultas 100x y
la compresión de datos
significativos con
In-Memory ColumnStore
Hasta 30 veces más rápido
procesamiento de transacciones con
In-Memory OLTP
Las consultas más
rápidas
IN-MEMORY DW
Las transacciones más
rápidas
IN-MEMORY OLTP
Por qué Hekaton ¿es más rápido?
• Elimina locks y latching.
• Aplica Optimistic model
Por qué Hekaton ¿es más rápido?
• Los objetos compilados.
• Todos los pasos para interpretar el código se evitan.
In-memory OLTP
SQL Server Integration
• Same manageability,
administration &
development experience
• Integrated queries &
transactions
• Integrated HA and
backup/restore
Main-Memory
Optimized
• Optimized for in-memory
data
• Indexes (hash and range)
exist only in memory
• No buffer pool, B-trees
• Stream-based storage
T-SQL Compiled to
Machine Code
• T-SQL compiled to machine
code via C code generator
• Invoking a procedure is just
a DLL entry-point
• Aggressive optimizations @
compile-time
Steadily declining memory
price, NVRAM
Many-core processorsStalling CPU clock rate TCO
Hardware trends Business
Hybrid engine and
integrated experience
High performance data
operations
Efficient business-logic
processing
Customer
Benefits
ArchitecturalPillarsDrivers
High Concurrency
• Multi-version optimistic
concurrency control with full
ACID support
• Core engine uses lock-free
algorithms
• No lock manager, latches or
spinlocks
Frictionless scale-up
Aplicación de cliente
Tabular Data Stream (TDS) Handler / Administrador de Sesiones
Ejecución de T-SQL
Buffer Pool para tablas
e índices
Parser,
Catalog,
Optimizer
InMemory
Native Compiler
Motor de almacenamiento
para tablas e índices de
optimizadas para memoria
Nativas Native
Compiled Stored
Procedures Schema
Sqlserv.exe
Memory Optimized
Table Filegroup
Transaction Log Data Filegroup
DLL generado
Componente
InMemory
Componente SQL
existente
Checkpoint Files / Recovery
Query
interoperability
Arquitectura
Implementación física
(Técnicamente el cambio está en el software!)
39
• In-Mem data structures coexistente en la base de datos con los
On-Disk structures
• Los datos se almacenan en la memoria RAM, y una copia de
seguridad en Delta Filies y Transaction Logs
• Delta files se almacenan como filestream storage
• El registro de transacciones es el mismo de siempre (con una utilización
más liviana)
• Tablas e índices están muy acoplados
• MVCC (Multi-Valued Concurrency Control) se utliza para
aislamiento
Creación de objetos de almacenamiento - Tablas
40
• La sintaxis es la misma que en el disco, con algunos ajustes adicionales
• Existen opciones de durabilidad
• Individual In-Mem Table: SCHEMA_ONLY or SCHEMA_AND_DATA
• Database level for transactions: Delayed (también para on-disk tables)
• Es básicamente Asynchronous Log Writes
• Existe otras restricciones...
• Rowsize limitado a 8060 bytes (Enforced at Create Time)
• No se permiten todos los tipos de datos (LOB types,CLR,sql_variant, datetimeoffset,
rowversion)*
• No check constraints *
• No foreign keys *
• Just one unique index per table *
• Cada Durable Table (SCHEMA_AND_DATA) debe tener un unique
index/ primary key
Cómo manejar tipos no soportados...
41
• Digamos que tiene una tabla con 10 columnas, pero 1 no está
permitido en una tabla en memoria
• En primer lugar: Pregúntate si la tabla realmente se ajusta a los
criterios
• En segundo lugar: Si es así, considere la partición vertical
• CREATE TABLE In_Mem (KeyValue, Column1, Column2, Column3)
CREATE TABLE On_Disk (KeyValue, Column4)
• Nota: 2016 permite LOB (varbinary(Max), nvarchar(Max), varchar
(max)) pero todavía es algo que se puede tener en cuenta, debido a
que la memoria no es gratis...
Creación de objetos de almacenamiento - la creación del
índice
42
• Sintaxis está en el CREATE TABLE
• Los índices se vinculan directamente a la tabla
• 8 max índices por tabla
• Sólo un índice único permitido (the primary key) *
• Los índices no se persisten, pero se reconstruyen en el reinicio
• Dos tipos
• Hash
• Ideal para las búsquedas de una sola fila
• tamaño fijo, se elige el número de recipientes de hash (aprox 1-2 * # de valores
únicos http://msdn.microsoft.com/en-us/library/dn494956.aspx)
• Bw Tree
• Lo mejor para búsquedas por rango
• Muy similar a una BTree índice como usted (con suerte) lo sepa, pero optimizado
para MVCC y la conexión puntero a la tabla
Estructura física
43
• registro de datos básicos para una fila
• Header
Begin Timestamp End Timestamp StatementId IndexCount IndexPointers ...
1
2
3
8
Record Header Data For Columns (Payload)
Tamaño de las tablas en memoria
• SQL Server 2014
Tamaño de las durable tables en una base de datos <= 256 GB
• SQL Server 2016
• Soporta 2 TB de durable tables en la base de datos
Seguridad (TDE)
• SQL Server 2014
• No hay soporte para TDE.
• Solo tiene que elegir: rendimiento o seguridad?
• SQL Server 2016
• Admite el cifrado de datos transparente.
• Ahora usted tiene rendimiento y seguridad
Escalado de almacenamiento
• SQL Server 2014
• Escalabilidad limitada: hasta 2 sockets / 64 núcleos.
• Cuanto más núcleos, más log records son creados.
• Sólo hay un hilo " Offline Checkpoint ".
Single Offline Checkpoint Thread
Del Tran2
(TS 450)
Del Tran3
(TS 250)
Insert into
Hekaton T1
Log in SQL
Table
Del Tran1
(TS150)
SQL Transaction log
disk
To update DATA
and DELTA files.
Escalado de almacenamiento
• SQL Server 2016
• No más límites!
• Ahora hay múltiples hilos " Offline Checkpoint " por cada contenedor.
Offline Checkpoint Thread
Del Tran2
(TS 450)
Del Tran3
(TS 250)
Insert into
Hekaton T1
Log in SQL
Table
Del Tran1
(TS150)
SQL Transaction log
disk
Offline Checkpoint ThreadOffline Checkpoint Thread
Desarrollo
• SQL Server 2014
• No se permiten modificaciones!
• Afinamiento de la base de datos
• En respuesta a los cambios en los patrones de datos.
• Desarrollo de aplicaciones / modificación.
• Métodos ágiles de desarrollo / iterativos.
• Necesidad de ser capaz de modificar el esquema de base de datos.
Desarrollo
• SQL Server 2016
• ALTER es sportado!!
• ALTER PROC y sp_recompile soportado
• ALTER TABLE
• add/alter/drop column/constraint
• ALTER INDEX
• Add/drop index supported
• Change HASH index bucket_count through index REBUILD
Desarrollo
• SQL Server 2016
• Todavía hay algunas limitaciones ...
• ALTER TABLE es una operación fuera de línea; requiere memoria 2X
• sp_rename sin embargo, no está soportado
Cambio en procesamiento de consultas
• SQL Server 2014
• Planes paralelos se utilizan para las tablas de en memoria
• Optimizado para OLTP.
• Si se une a una tabla optimizada para memoria con un Column Store
utilizará DOP = 1.
• Se pierde el beneficio del ColumnStore
Cambio en procesamiento de consultas
• SQL Server 2016
• Planes paralelos ahora son compatibles!
• Ahora usted puede tener el beneficio de Column Store mientras hace join
con Memory Optimized Tables.
• Análisis en tiempo real son ahora posibles, más velocidad!
T-SQL Soportado
• SQL 2016
• Más fácil convertir las aplicaciones existentes!
• Ahora es compatible con:
• {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
T-SQL Soportado
• SQL 2016
• Ahora es compatible con:
• DML Triggers are now supported.
• AFTER triggers, natively compiled.
Migración / Manejabilidad
• SQL 2016
• En SQL Server 2014 existe una limitación de collation
• Ahora soportan todas las collations.
• Non-BIN2 collations en index key columns
• Non-Latin code pages para (var)char columns
• Non-BIN2 collations para comparación y ordenamiento
Resumen de mejoras en SQL 2016
• Tamaño máximo de tabla en memoria pasa de 256MB-> 2 TB
• Collations además BIN2 permitieron columnas en los índices (aconsejado que no se
desempeñan tan bien)
• ALTER TABLE se puede utilizar en las tablas de memoria para agregar, eliminar o alterar
las columnas, o para agregar, eliminar o reconstruir los índices.
• ALTER PROCEDURE se puede usar en forma nativa compilado procedimientos
almacenados
• Procedimientos compilados de forma nativa permite sintaxis adicional (LEFT JOIN, SELECT
DISTINCT, UNION, todas las funciones matemáticas)
• Permite escalar con mayor cantidad de sockets
• AlwaysOn replicas ven in-memory cambios de datos “undelayed”.
• Mejor garbage collection
Mejoras en En memoria OLTP
Característica / Límite SQL Server 2014 SQL Server 2016
El tamaño máximo de la tabla duradera 256 GB 2 TB
LOB (varbinary (max), [n] varchar (max)) No soportado Soportado*
Cifrado de datos transparente (TDE) No soportado Soportado
Desconectado Checkpoint Hilos 1 1 por contenedor
ALTER PROCEDURE / sp_recompile No soportado Apoyado (totalmente en línea)
llamadas a procedimientos anidados nativas No soportado Soportado
De forma nativa-compilado UDF escalares No soportado Soportado
ALTER TABLE
No soportado
(DROP / re-crear)
admite de forma parcial
(fuera de línea - detalles a continuación)
disparadores DML No soportado
admite de forma parcial
(DESPUÉS, de forma nativa compilado)
Los índices de las columnas anulables No soportado Soportado
colaciones no BIN2 en columnas de clave de índice No soportado Soportado
No latino páginas de códigos para [var] columnas
CHAR
No soportado Soportado
la comparación no BIN2 / clasificación en módulos
nativos
No soportado Soportado
Llaves extranjeras No soportado Soportado
Compruebe / Restricciones de unicidad No soportado Soportado
Paralelismo No soportado Soportado
OUTER JOIN, O, NO, UNION [ALL], distinto, EXISTE,
EN
No soportado Soportado
Múltiples conjuntos de resultados activos (MARS)
(Medios mejor soporte de Entity Framework).
No soportado Soportado
Diseñador de tablas SSMS No soportado Soportado
Fuente: http: //sqlperformance.com/2015/05/sql-server-2016/in-memory-OLTP-enhancements
CREATE DATABASE HowInMemObjectsAffectDesign
ON PRIMARY
( NAME = N'HowInMemObjectsAffectDesign', FILENAME =
N‘Drive:HowInMemObjectsAffectDesign.mdf' , SIZE = 2GB , MAXSIZE =
UNLIMITED, FILEGROWTH = 10% ),
FILEGROUP [MemoryOptimizedFG] CONTAINS
MEMORY_OPTIMIZED_DATA
( NAME = N'HowInMemObjectsAffectDesign_inmemFiles', FILENAME =
N'Drive:InMemfiles' , MAXSIZE = UNLIMITED)
LOG ON
( NAME = N'HowInMemObjectsAffectDesign_log', FILENAME =
N'Drive:HowInMemObjectsAffectDesign_log.ldf' , SIZE = 1GB , MAXSIZE
= 2GB , FILEGROWTH = 10%);
GO
33
Permitir in memory tables en la base
de datos
Agregar un filegroup para
almacenar los delta files
Creación de Tabla Memory Optimized Permanent
34
CREATE TABLE Customers.Customer
(
CustomerId integer NOT NULL IDENTITY ( 1,1 ) ,
CustomerNumber char(10)
COLLATE Latin1_General_100_BIN2 NOT NULL,
CONSTRAINT XPKCustomer PRIMARY KEY NONCLUSTERED
HASH ( CustomerId) WITH ( BUCKET_COUNT = 50000),
INDEX CustomerNumber NONCLUSTERED ( CustomerNumber)
) WITH ( MEMORY_OPTIMIZED = ON ,
DURABILITY = SCHEMA_AND_DATA)
go
CREATE TABLE Customers.Customer
(
CustomerId integer NOT NULL IDENTITY ( 1,1 ) ,
CustomerNumber char(10)
COLLATE Latin1_General_100_BIN2 NOT NULL,
CONSTRAINT XPKCustomer PRIMARY KEY NONCLUSTERED
HASH ( CustomerId) WITH ( BUCKET_COUNT = 50000),
INDEX CustomerNumber NONCLUSTERED ( CustomerNumber)
) WITH ( MEMORY_OPTIMIZED = ON ,
DURABILITY = SCHEMA_AND_DATA)
go
35
Creación de Tabla Memory
Optimized Permanent
Character column debe ser binario
para index/compare en código
nativo
Tabla es durable
Hash Index usado para
Primary Key. Estimated
Rows in Table 25000
Indicar que es tabla en
memoria
Bw Tree Index sobre
Customer Number
El acceso a los datos utilizando el código compilado (Nativo)
68
• En lugar de ser interpretado, el procedimiento almacenado se
compila a código máquina
• Sintaxis limitada
• Sintaxis permitida
• http://msdn.microsoft.com/en-us/library/dn452279.aspx
Demostración
InMemory Tables
73

Más contenido relacionado

PPT
Prototype model of SDLC
PDF
Transiciones de Procesos
PDF
Software engineering unit 1
PPTX
INTER PROCESS COMMUNICATION (IPC).pptx
PPTX
SOFTWARE TESTING UNIT-4
PPTX
Diagrama de 7 estados
PPTX
Sistemas operativos procesos
PPT
UML diagrams and symbols
Prototype model of SDLC
Transiciones de Procesos
Software engineering unit 1
INTER PROCESS COMMUNICATION (IPC).pptx
SOFTWARE TESTING UNIT-4
Diagrama de 7 estados
Sistemas operativos procesos
UML diagrams and symbols

La actualidad más candente (20)

PPTX
Sistemas operativos procesos
PPTX
Unidad 4 tópicos avanzados de programación
PPT
CPU Scheduling Algorithms
PPTX
Estados y transiciones de los procesos
PDF
tipos de pruebas.
PPT
Pruebas del Software
PPTX
Software Configuration Management (SCM)
PPT
Software Quality Assurance
PPT
Use case Diagram
PPTX
process and thread.pptx
PPTX
Base de datos propiedades acid
PPTX
SDLC, Iterative Model
DOCX
Herramientas CASE
PDF
Rayleigh model
PPTX
Software project planning
PPTX
Software Quality Assurance
PPTX
Conceptos basicos de analisis y diseño
PPTX
Software Engineering Unit 1
Sistemas operativos procesos
Unidad 4 tópicos avanzados de programación
CPU Scheduling Algorithms
Estados y transiciones de los procesos
tipos de pruebas.
Pruebas del Software
Software Configuration Management (SCM)
Software Quality Assurance
Use case Diagram
process and thread.pptx
Base de datos propiedades acid
SDLC, Iterative Model
Herramientas CASE
Rayleigh model
Software project planning
Software Quality Assurance
Conceptos basicos de analisis y diseño
Software Engineering Unit 1
Publicidad

Destacado (20)

PPTX
Cuadros de mando de BI con SQL Server
PPTX
Mejores prácticas desarrollo de base de datos
PPTX
Azure sql database escalabilidad
PPTX
Microsoft R Server
PPTX
SQL Server Query Processor
PPTX
MVC: La Vista
PPTX
SQL 2016 Column Store Index
PDF
PowerQueryy el Lenguaje M
PPTX
Smart Grid Big Data e IoT
PPTX
Servicios cognitivos y su integración
PPTX
Consideraciones de memoria sql server hardware
PPTX
Consideraciones de sql server hardware
PPTX
Consideraciones de discos sql server hardware
PPTX
Introduccion a SQL Server 2016 Stretch Databases
PPTX
Microsoft R Server
PPTX
Servicios cognitivos y su integración
PPTX
Vistazo a lo nuevo en SQL Server 2016
PDF
Análisis de datos con Apache Spark
PPTX
SQL Server 2016 Reporting Services
PPTX
Introduccion a Big Data stack
Cuadros de mando de BI con SQL Server
Mejores prácticas desarrollo de base de datos
Azure sql database escalabilidad
Microsoft R Server
SQL Server Query Processor
MVC: La Vista
SQL 2016 Column Store Index
PowerQueryy el Lenguaje M
Smart Grid Big Data e IoT
Servicios cognitivos y su integración
Consideraciones de memoria sql server hardware
Consideraciones de sql server hardware
Consideraciones de discos sql server hardware
Introduccion a SQL Server 2016 Stretch Databases
Microsoft R Server
Servicios cognitivos y su integración
Vistazo a lo nuevo en SQL Server 2016
Análisis de datos con Apache Spark
SQL Server 2016 Reporting Services
Introduccion a Big Data stack
Publicidad

Similar a SQL Server 2016 Tablas en Memoria (20)

PPTX
In-Memory OLTP en SQL Server 2016
PPTX
Conociendo los cambios de SQL Server a partir de 2012 a 2016
PPTX
Vistazo a SQL Server 2016
PPTX
SQL Server 2014 Mejoras del DB Engine
PPTX
Novedades deSQL Server 2014 en Motor Relacional | SolidQ Summit 2014
PPTX
Tech day sql server 2014 nuevas características - g-taylor
PDF
Novedades de SQL Server 2014 en motor relacional
PDF
Nuevo motor relacional In-memory OLTP
PPTX
Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
PDF
SQL Server 2014 Nuevas Capacidades
PDF
In memory
PDF
In-Memory OLTP en SQL Server 2014
PDF
Migración a sql server 2016
PDF
Sql server 2016 novedades para desarrolladores
PPTX
MS SQL Server 2014 - In-Memory OLTP
PPTX
SQL Server 2014 y La Plataforma de Datos
PPTX
Sql server 2014 y la plataforma de datos
PPTX
Introducción a bases de datos en memoria oltp
PDF
Column stored index
PPTX
Indices Columnares en SQL Server 2014
In-Memory OLTP en SQL Server 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016
Vistazo a SQL Server 2016
SQL Server 2014 Mejoras del DB Engine
Novedades deSQL Server 2014 en Motor Relacional | SolidQ Summit 2014
Tech day sql server 2014 nuevas características - g-taylor
Novedades de SQL Server 2014 en motor relacional
Nuevo motor relacional In-memory OLTP
Cómo nos va a ayudar la tecnología de in memory en sql server 2014 para desem...
SQL Server 2014 Nuevas Capacidades
In memory
In-Memory OLTP en SQL Server 2014
Migración a sql server 2016
Sql server 2016 novedades para desarrolladores
MS SQL Server 2014 - In-Memory OLTP
SQL Server 2014 y La Plataforma de Datos
Sql server 2014 y la plataforma de datos
Introducción a bases de datos en memoria oltp
Column stored index
Indices Columnares en SQL Server 2014

Más de Eduardo Castro (20)

PPTX
Introducción a polybase en SQL Server
PPTX
Creando tu primer ambiente de AI en Azure ML y SQL Server
PPTX
Seguridad en SQL Azure
PPTX
Azure Synapse Analytics MLflow
PPTX
SQL Server 2019 con Windows Server 2022
PPTX
Novedades en SQL Server 2022
PPTX
Introduccion a SQL Server 2022
PPTX
Machine Learning con Azure Managed Instance
PPTX
Novedades en sql server 2022
PDF
Sql server 2019 con windows server 2022
PDF
Introduccion a databricks
PDF
Pronosticos con sql server
PDF
Data warehouse con azure synapse analytics
PPTX
Que hay de nuevo en el Azure Data Lake Storage Gen2
PPTX
Introduccion a Azure Synapse Analytics
PPTX
Seguridad de SQL Database en Azure
PPTX
Python dentro de SQL Server
PDF
Servicios Cognitivos de de Microsoft
TXT
Script de paso a paso de configuración de Secure Enclaves
PDF
Introducción a conceptos de SQL Server Secure Enclaves
Introducción a polybase en SQL Server
Creando tu primer ambiente de AI en Azure ML y SQL Server
Seguridad en SQL Azure
Azure Synapse Analytics MLflow
SQL Server 2019 con Windows Server 2022
Novedades en SQL Server 2022
Introduccion a SQL Server 2022
Machine Learning con Azure Managed Instance
Novedades en sql server 2022
Sql server 2019 con windows server 2022
Introduccion a databricks
Pronosticos con sql server
Data warehouse con azure synapse analytics
Que hay de nuevo en el Azure Data Lake Storage Gen2
Introduccion a Azure Synapse Analytics
Seguridad de SQL Database en Azure
Python dentro de SQL Server
Servicios Cognitivos de de Microsoft
Script de paso a paso de configuración de Secure Enclaves
Introducción a conceptos de SQL Server Secure Enclaves

Último (20)

PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
clase auditoria informatica 2025.........
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Maste clas de estructura metálica y arquitectura
Influencia-del-uso-de-redes-sociales.pdf
Estrategia de apoyo tecnología grado 9-3
Power Point Nicolás Carrasco (disertación Roblox).pptx
Sesion 1 de microsoft power point - Clase 1
Calidad desde el Docente y la mejora continua .pdf
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
REDES INFORMATICAS REDES INFORMATICAS.pptx
clase auditoria informatica 2025.........
Propuesta BKP servidores con Acronis1.pptx
CyberOps Associate - Cisco Networking Academy
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
historia_web de la creacion de un navegador_presentacion.pptx
Presentación PASANTIAS AuditorioOO..pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Maste clas de estructura metálica y arquitectura

SQL Server 2016 Tablas en Memoria

  • 2. Bienvenida • Ing. Eduardo Castro, PhD • MVP de Microsoft SQL Server • PASS Regional de Mentor • PASS Board of Directors • http://www.youtube.com/eduardocastrom
  • 3. Material de Referencia SQL Server Evolution. SQL 2016 new innovations. Lindsey Allen Principal Group Program Manager, Borko Novakovic Program Manager New in Master Data Services and Integration Services in SQL Server 2016. Matt Masson SQL Server Evolution. Shawn Bice Engineering Partner Director Operational Analytics in SQL Server. Sunil Agarwal Principal Program Manager
  • 5. En memoria Mejoras OLTP • Artículo Delaware Referencia: http: //bit.ly/sql2016-in-memory-oltp • Aaron Bertrand Blog: http: //sqlperformance.com/2015/05/sql-server-2016/in- memory-oltp-enhancements
  • 6. Qué es inMemory OLTP en SQL Server 2014+ 29 • Un totalmente nuevo, renovado motor para el almacenamiento de datos, co-located en la misma base de datos con el motor existente • Creado para dar soporte a escenarios y casos específicos • La terminología puede ser confusa • Tabla Tradicionales: Home - On-Disk, pero idealmente en cache In-Memory • Tablas In-Memory: Home - In-Memory: pero respaldado en On-Disk Structures • Si tiene suficiente memoria RAM, On-Disk Tables también se encuentran en la memoria • Sin embargo, la aplicación es muy muy diferente • InMemory tables es fácil de utilizar pero hay que saber cuando aplica
  • 7. Introducción a InMemory OLTP • ¿Dónde estamos gastando más tiempo de ejecución? • Estos son los resultados de los análisis de Microsoft. I/O, Thread Management Storage Engine Relational Engine Communication Stack 10% 80% 10% Access Methods, Transaction, Lock, Log, Managers T-SQL Interpreter, Query Execution, Expressions
  • 8. Introducción a OLTP en memoria • Hekaton Proyecto - Palabra griega ἑκατόν (houndred). • El objetivo es mejorar el rendimiento en 100x. • Estrategia tradicional se basa en las estructuras en los datos almacenados en el disco. • Al utilizar plenamente las capacidades de memoria podemos tener estructuras más simples. • Disponible a partir de SQL Server 2014. • Muy mejorada en SQL Server 2016.
  • 9. In-memory engine en SQL 2016 32 Velocidad de las consultas 100x y la compresión de datos significativos con In-Memory ColumnStore Hasta 30 veces más rápido procesamiento de transacciones con In-Memory OLTP Las consultas más rápidas IN-MEMORY DW Las transacciones más rápidas IN-MEMORY OLTP
  • 10. Por qué Hekaton ¿es más rápido? • Elimina locks y latching. • Aplica Optimistic model
  • 11. Por qué Hekaton ¿es más rápido? • Los objetos compilados. • Todos los pasos para interpretar el código se evitan.
  • 12. In-memory OLTP SQL Server Integration • Same manageability, administration & development experience • Integrated queries & transactions • Integrated HA and backup/restore Main-Memory Optimized • Optimized for in-memory data • Indexes (hash and range) exist only in memory • No buffer pool, B-trees • Stream-based storage T-SQL Compiled to Machine Code • T-SQL compiled to machine code via C code generator • Invoking a procedure is just a DLL entry-point • Aggressive optimizations @ compile-time Steadily declining memory price, NVRAM Many-core processorsStalling CPU clock rate TCO Hardware trends Business Hybrid engine and integrated experience High performance data operations Efficient business-logic processing Customer Benefits ArchitecturalPillarsDrivers High Concurrency • Multi-version optimistic concurrency control with full ACID support • Core engine uses lock-free algorithms • No lock manager, latches or spinlocks Frictionless scale-up
  • 13. Aplicación de cliente Tabular Data Stream (TDS) Handler / Administrador de Sesiones Ejecución de T-SQL Buffer Pool para tablas e índices Parser, Catalog, Optimizer InMemory Native Compiler Motor de almacenamiento para tablas e índices de optimizadas para memoria Nativas Native Compiled Stored Procedures Schema Sqlserv.exe Memory Optimized Table Filegroup Transaction Log Data Filegroup DLL generado Componente InMemory Componente SQL existente Checkpoint Files / Recovery Query interoperability Arquitectura
  • 14. Implementación física (Técnicamente el cambio está en el software!) 39 • In-Mem data structures coexistente en la base de datos con los On-Disk structures • Los datos se almacenan en la memoria RAM, y una copia de seguridad en Delta Filies y Transaction Logs • Delta files se almacenan como filestream storage • El registro de transacciones es el mismo de siempre (con una utilización más liviana) • Tablas e índices están muy acoplados • MVCC (Multi-Valued Concurrency Control) se utliza para aislamiento
  • 15. Creación de objetos de almacenamiento - Tablas 40 • La sintaxis es la misma que en el disco, con algunos ajustes adicionales • Existen opciones de durabilidad • Individual In-Mem Table: SCHEMA_ONLY or SCHEMA_AND_DATA • Database level for transactions: Delayed (también para on-disk tables) • Es básicamente Asynchronous Log Writes • Existe otras restricciones... • Rowsize limitado a 8060 bytes (Enforced at Create Time) • No se permiten todos los tipos de datos (LOB types,CLR,sql_variant, datetimeoffset, rowversion)* • No check constraints * • No foreign keys * • Just one unique index per table * • Cada Durable Table (SCHEMA_AND_DATA) debe tener un unique index/ primary key
  • 16. Cómo manejar tipos no soportados... 41 • Digamos que tiene una tabla con 10 columnas, pero 1 no está permitido en una tabla en memoria • En primer lugar: Pregúntate si la tabla realmente se ajusta a los criterios • En segundo lugar: Si es así, considere la partición vertical • CREATE TABLE In_Mem (KeyValue, Column1, Column2, Column3) CREATE TABLE On_Disk (KeyValue, Column4) • Nota: 2016 permite LOB (varbinary(Max), nvarchar(Max), varchar (max)) pero todavía es algo que se puede tener en cuenta, debido a que la memoria no es gratis...
  • 17. Creación de objetos de almacenamiento - la creación del índice 42 • Sintaxis está en el CREATE TABLE • Los índices se vinculan directamente a la tabla • 8 max índices por tabla • Sólo un índice único permitido (the primary key) * • Los índices no se persisten, pero se reconstruyen en el reinicio • Dos tipos • Hash • Ideal para las búsquedas de una sola fila • tamaño fijo, se elige el número de recipientes de hash (aprox 1-2 * # de valores únicos http://msdn.microsoft.com/en-us/library/dn494956.aspx) • Bw Tree • Lo mejor para búsquedas por rango • Muy similar a una BTree índice como usted (con suerte) lo sepa, pero optimizado para MVCC y la conexión puntero a la tabla
  • 18. Estructura física 43 • registro de datos básicos para una fila • Header Begin Timestamp End Timestamp StatementId IndexCount IndexPointers ... 1 2 3 8 Record Header Data For Columns (Payload)
  • 19. Tamaño de las tablas en memoria • SQL Server 2014 Tamaño de las durable tables en una base de datos <= 256 GB • SQL Server 2016 • Soporta 2 TB de durable tables en la base de datos
  • 20. Seguridad (TDE) • SQL Server 2014 • No hay soporte para TDE. • Solo tiene que elegir: rendimiento o seguridad? • SQL Server 2016 • Admite el cifrado de datos transparente. • Ahora usted tiene rendimiento y seguridad
  • 21. Escalado de almacenamiento • SQL Server 2014 • Escalabilidad limitada: hasta 2 sockets / 64 núcleos. • Cuanto más núcleos, más log records son creados. • Sólo hay un hilo " Offline Checkpoint ". Single Offline Checkpoint Thread Del Tran2 (TS 450) Del Tran3 (TS 250) Insert into Hekaton T1 Log in SQL Table Del Tran1 (TS150) SQL Transaction log disk To update DATA and DELTA files.
  • 22. Escalado de almacenamiento • SQL Server 2016 • No más límites! • Ahora hay múltiples hilos " Offline Checkpoint " por cada contenedor. Offline Checkpoint Thread Del Tran2 (TS 450) Del Tran3 (TS 250) Insert into Hekaton T1 Log in SQL Table Del Tran1 (TS150) SQL Transaction log disk Offline Checkpoint ThreadOffline Checkpoint Thread
  • 23. Desarrollo • SQL Server 2014 • No se permiten modificaciones! • Afinamiento de la base de datos • En respuesta a los cambios en los patrones de datos. • Desarrollo de aplicaciones / modificación. • Métodos ágiles de desarrollo / iterativos. • Necesidad de ser capaz de modificar el esquema de base de datos.
  • 24. Desarrollo • SQL Server 2016 • ALTER es sportado!! • ALTER PROC y sp_recompile soportado • ALTER TABLE • add/alter/drop column/constraint • ALTER INDEX • Add/drop index supported • Change HASH index bucket_count through index REBUILD
  • 25. Desarrollo • SQL Server 2016 • Todavía hay algunas limitaciones ... • ALTER TABLE es una operación fuera de línea; requiere memoria 2X • sp_rename sin embargo, no está soportado
  • 26. Cambio en procesamiento de consultas • SQL Server 2014 • Planes paralelos se utilizan para las tablas de en memoria • Optimizado para OLTP. • Si se une a una tabla optimizada para memoria con un Column Store utilizará DOP = 1. • Se pierde el beneficio del ColumnStore
  • 27. Cambio en procesamiento de consultas • SQL Server 2016 • Planes paralelos ahora son compatibles! • Ahora usted puede tener el beneficio de Column Store mientras hace join con Memory Optimized Tables. • Análisis en tiempo real son ahora posibles, más velocidad!
  • 28. T-SQL Soportado • SQL 2016 • Más fácil convertir las aplicaciones existentes! • Ahora es compatible con: • {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
  • 29. T-SQL Soportado • SQL 2016 • Ahora es compatible con: • DML Triggers are now supported. • AFTER triggers, natively compiled.
  • 30. Migración / Manejabilidad • SQL 2016 • En SQL Server 2014 existe una limitación de collation • Ahora soportan todas las collations. • Non-BIN2 collations en index key columns • Non-Latin code pages para (var)char columns • Non-BIN2 collations para comparación y ordenamiento
  • 31. Resumen de mejoras en SQL 2016 • Tamaño máximo de tabla en memoria pasa de 256MB-> 2 TB • Collations además BIN2 permitieron columnas en los índices (aconsejado que no se desempeñan tan bien) • ALTER TABLE se puede utilizar en las tablas de memoria para agregar, eliminar o alterar las columnas, o para agregar, eliminar o reconstruir los índices. • ALTER PROCEDURE se puede usar en forma nativa compilado procedimientos almacenados • Procedimientos compilados de forma nativa permite sintaxis adicional (LEFT JOIN, SELECT DISTINCT, UNION, todas las funciones matemáticas) • Permite escalar con mayor cantidad de sockets • AlwaysOn replicas ven in-memory cambios de datos “undelayed”. • Mejor garbage collection
  • 32. Mejoras en En memoria OLTP Característica / Límite SQL Server 2014 SQL Server 2016 El tamaño máximo de la tabla duradera 256 GB 2 TB LOB (varbinary (max), [n] varchar (max)) No soportado Soportado* Cifrado de datos transparente (TDE) No soportado Soportado Desconectado Checkpoint Hilos 1 1 por contenedor ALTER PROCEDURE / sp_recompile No soportado Apoyado (totalmente en línea) llamadas a procedimientos anidados nativas No soportado Soportado De forma nativa-compilado UDF escalares No soportado Soportado ALTER TABLE No soportado (DROP / re-crear) admite de forma parcial (fuera de línea - detalles a continuación) disparadores DML No soportado admite de forma parcial (DESPUÉS, de forma nativa compilado) Los índices de las columnas anulables No soportado Soportado colaciones no BIN2 en columnas de clave de índice No soportado Soportado No latino páginas de códigos para [var] columnas CHAR No soportado Soportado la comparación no BIN2 / clasificación en módulos nativos No soportado Soportado Llaves extranjeras No soportado Soportado Compruebe / Restricciones de unicidad No soportado Soportado Paralelismo No soportado Soportado OUTER JOIN, O, NO, UNION [ALL], distinto, EXISTE, EN No soportado Soportado Múltiples conjuntos de resultados activos (MARS) (Medios mejor soporte de Entity Framework). No soportado Soportado Diseñador de tablas SSMS No soportado Soportado Fuente: http: //sqlperformance.com/2015/05/sql-server-2016/in-memory-OLTP-enhancements
  • 33. CREATE DATABASE HowInMemObjectsAffectDesign ON PRIMARY ( NAME = N'HowInMemObjectsAffectDesign', FILENAME = N‘Drive:HowInMemObjectsAffectDesign.mdf' , SIZE = 2GB , MAXSIZE = UNLIMITED, FILEGROWTH = 10% ), FILEGROUP [MemoryOptimizedFG] CONTAINS MEMORY_OPTIMIZED_DATA ( NAME = N'HowInMemObjectsAffectDesign_inmemFiles', FILENAME = N'Drive:InMemfiles' , MAXSIZE = UNLIMITED) LOG ON ( NAME = N'HowInMemObjectsAffectDesign_log', FILENAME = N'Drive:HowInMemObjectsAffectDesign_log.ldf' , SIZE = 1GB , MAXSIZE = 2GB , FILEGROWTH = 10%); GO 33 Permitir in memory tables en la base de datos Agregar un filegroup para almacenar los delta files
  • 34. Creación de Tabla Memory Optimized Permanent 34 CREATE TABLE Customers.Customer ( CustomerId integer NOT NULL IDENTITY ( 1,1 ) , CustomerNumber char(10) COLLATE Latin1_General_100_BIN2 NOT NULL, CONSTRAINT XPKCustomer PRIMARY KEY NONCLUSTERED HASH ( CustomerId) WITH ( BUCKET_COUNT = 50000), INDEX CustomerNumber NONCLUSTERED ( CustomerNumber) ) WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA) go
  • 35. CREATE TABLE Customers.Customer ( CustomerId integer NOT NULL IDENTITY ( 1,1 ) , CustomerNumber char(10) COLLATE Latin1_General_100_BIN2 NOT NULL, CONSTRAINT XPKCustomer PRIMARY KEY NONCLUSTERED HASH ( CustomerId) WITH ( BUCKET_COUNT = 50000), INDEX CustomerNumber NONCLUSTERED ( CustomerNumber) ) WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA) go 35 Creación de Tabla Memory Optimized Permanent Character column debe ser binario para index/compare en código nativo Tabla es durable Hash Index usado para Primary Key. Estimated Rows in Table 25000 Indicar que es tabla en memoria Bw Tree Index sobre Customer Number
  • 36. El acceso a los datos utilizando el código compilado (Nativo) 68 • En lugar de ser interpretado, el procedimiento almacenado se compila a código máquina • Sintaxis limitada • Sintaxis permitida • http://msdn.microsoft.com/en-us/library/dn452279.aspx