2. Dandy Weyn . SQL Server 2014 – Features Drilldown
MSD Library
http://msdn.microsoft.com/en-us/library/bb500435(v=sql.120).aspx
3. XML ● KPIs
SQL Server
2000
Management Studio ● Mirroring
SQL Server
2005
SQL Server
● Compresión basada en directivas Mgmt ● Programación
2008
PowerPivot ● Integración de SharePoint ● Master Data Services
SQL Server
2008 R2
SQL
AlwaysOn ● Índice de columnas ● Servicios de datos de calidad ● ● Power View Nube Conectividad Server
2012
In-Memory A través de las cargas de trabajo ●Rendimiento y Escala ●Híbrido Nube Optimizado ●HDInsight ● Nube BI
SQL Server
2014
4.
5. In-Memory Incorporado
Promedio de 10 veces más rápido para aplicaciones nuevas y
existentes
Seguro y escalable
Más seguro utilizando Windows Server
Alta Disponibilidad
SLA con AlwaysOn
Soporte a aplicación críticas
Diseñado para ofrecer soluciones de misión crítica
9. Motor OLTP nuevo de alto rendimiento, optimizado para memoria integrado en SQL Server y diseñado
para hardware moderno
Beneficios para los clientes
Baja latencia
Hasta 10 veces de mejora en el rendimiento
2-5x mejora en la escalabilidad
Toma ventaja de las inversiones en SQL Server
10. SQL Server engine
In-Memory OLTP
compiler
Parser,
catalog,
optimizer
Native compiled SPs
& schema
Alto rendimiento, procesamiento de transacciones en
línea con memoria optimizada (OLTP) del motor
integrado en SQL Server y architected para las
tendencias modernas de hardware
Proc/plan cache for
ad-hoc, T-SQL;
interpreter, plans, etc.
In-Memory OLTP
engine: Memoryoptimized tables &
indexes
Buffer pool for tables
& indexes
Lock Manager
Memory-optimized
table file group
Transaction log
Data file group
10
11. Beneficios
En memoria OLTP Tech
Pilares
Drivers
De alto rendimiento
operaciones sobre
datos
Fácil escalabilidad
Eficiente,
procesamiento de
lógica de negocio
Motor híbrido e
integrado
Memoria principal
optimizada
Alto concurrencia
T-SQL compilado a
máquina coda
Integración SQL Server
• Optimizado para in-memory
datos
• Índices (Hash y rango) sólo
existen en la memoria
• No hay buffer piscina
• Almacenamiento basada en
secuencias para una mayor
durabilidad
• Control de concurrencia
optimista multiversión con el
soporte ACID completo
• Motor Core utiliza
algoritmos libres de bloqueo
• No hay administrador de
bloqueos, latches, o
spinlocks
• T-SQL compilado a código
máquina a través del
generador y el código C
Visual C compilador
• La invocación de un
procedimiento es un DLL de
punto de entrada
• Optimizaciones agresivas en
tiempo de compilación
• Misma administración y
experiencia de desarrollo
• Consultas integradas y
transacciones
• HA Integrado y copia de
seguridad / restauración
Hardware trends
La disminución constante
del precio de la memoria
NVRAM
Procesadores con muchos
núcleos
Tasa de reloj de la CPU
Negocios
TCO
12.
13. 101-millones filas y espacio utilizado por los índices
20.0
19.7 GB
15.0
10.0
10.9 GB
6.9 GB
5.0
5.0 GB
4.0 GB
1.8 GB
0.0
Table with
customary
indexing
Table with
customary
indexing (page
compression)
Table with no
indexing
Table with no
indexing (page
compression)
Table with
columnstore
index
Clustered
columnstore
16. Opciones de compresión de la tabla:
DATA_COMPRESSION = {NINGUNO | ROW | PÁGINA | COLUMNSTORE
|COLUMNSTORE_ARCHIVE
1. COLUMNSTORE Compresión
• Se utiliza compresión por defecto al crear una tabla con índice columna
• Cargas de trabajo típicas obtiene ratios de compresión 5-7x
TPCH
TPCDS
Cliente 1
Cliente 2
3.1X
2.8X
3.9x
4,3 X
** Compresión se compara con archivo de datos brutos
2. Compresión para ARCHIVAL
• Permite adicional 30% compresión para toda la tabla y / o particiones seleccionados.
• Se puede cambiar entre columnstore and columnstore_archive compressions.
• sys.partitions expone la información de compresión (3 – columnstore, 4 – columnstore_archive)
22
17. Mecanismo básico
CREATE TABLE <table> ( … ) As usual
CREATE CLUSTERED COLUMNSTORE INDEX <name> on <table>
Converts entire table to Columnstore format
BULK INSERT, SELECT INTO
INSERT
UPDATE
DELETE
17
19. Create Table DDL
CREATE TABLE [Customer](
[CustomerID] INT NOT NULL
PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000000),
[Name] NVARCHAR(250) NOT NULL
Hash index
INDEX [IName] HASH WITH (BUCKET_COUNT = 1000000),
[CustomerSince] DATETIME NULL
Secondary indexes are
)
specified inline
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);
Optimizada para memoria
Tabla es persisitente
20. Create Procedimiento almacenado DDL
CREATE PROCEDURE [dbo].[InsertOrder] @id INT, @date DATETIME
WITH
NATIVE_COMPILATION,
SCHEMABINDING,
EXECUTE AS OWNER
AS
BEGIN ATOMIC
WITH
(TRANSACTION
ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = 'us_english')
-- insert T-SQL here
END
Compilación nativa
Native procs must be
schema-bound
Contexto de ejecución
Bloques atómicos
• Crear transacción si no
existe
• Sino crear un savepoint
21. Mito # 1
SQL Server en memoria OLTP es una
respuesta reciente a ofertas de la
competencia
Realidad
Proyecto "Hekaton" se inició hace alrededor de 4 años, en
respuesta a las tendencias de negocios y hardware
22. Mito # 2
In-Memory OLTP es como DBCC PINTABLE
Realidad
En memoria OLTP es completamente nuevo diseño para
optimizar las operaciones de datos eficientes en memoria.
No hay pages o buffer pool para memory-optimized tables
23. Mito # 3
In-Memory bases de datos son nuevos
productos separados
Realidad
In-Memory OLTP es una característica totalmente integrada
en SQL Server 2014
24. Mito # 4
Usted puede utilizar In-Memory OLTP en una
aplicación SQL Server existente, sin cambios
de ningún tipo
Realidad
Hay por lo menos algunos cambios, como mínimo cambio
algunos esquemas
25. Mito # 5
Dado que las tablas están en la memoria, los datos no son
duraderos o de alta disponibilidad - Voy a perder después de
caída del servidor
Realidad
In-Memory OLTP es totalmente duradero, e incluye varias
características de HA, incluyendo AlwaysOn
Los datos se conserva en el disco, y sobrevivirá caída del
servidor
29. • ¿Qué se está liberado
• Tres nuevos permisos (CONNECT ANY DATABASE, IMPERSONATE ANY LOGIN, and SELECT ALL
USER SECURABLES)
• Principales beneficios
• Una mayor separación de funciones
• Capacidad de crear nuevas funciones para los administradores de bases de datos que no son
sysadmin (superusuario)
• Capacidad de crear nuevas funciones para los usuarios o aplicaciones con fines específicos
Ejemplos:
1. Administradores de bases de datos, pero no pueden ver los datos de usuario
2. Administradores de bases de datos, pero no puede modificar los inicios de sesión
3. Administradores de bases de datos, pero no pueden suplantar a los inicios de sesión
4. Nuevos roles (Por ejemplo, los auditores) para leer todos los datos, pero no son administradores de
bases de datos
5. Nuevas funciones para leer todos los metadatos para propósitos de monitoreo (Por ejemplo, SCOM)
pero no puede ver los datos de usuario
6. Nuevas funciones para aplicaciones de nivel medio para impersonalizar a cualquier sesión excepto
sa, sysadmin, or other high privilege logins
30.
31. • ¿Qué se está entregado
• Utilizar de unidades no volátiles (SSD) para extender buffer pool
• NUMA-Aware manejo de páginas
• Principal beneficios
• BP extensión para SSDs
• Mejorar el rendimiento de las consultas OLTP sin cambios en las aplicaciones
• No hay riesgo de pérdida de datos (utilizando las páginas limpias solamente)
• Fácil configuración optimizada para cargas de trabajo OLTP en los servidores
communes (32 GB RAM)
32. • ¿Qué se está entregado
• Reconstrucción en línea de índices para particiones individuales
• Administración del Lock Priority para los table SWITCH y reconstrucción de
índice en línea
• Diagnóstico incorporado
• Principales beneficios
• El aumento de la concurrencia y la disponibilidad de las aplicaciones
• Nueva granularidad a nivel de particiones para reconstrucción de índices
en línea permite uso de recursos inferior (CPU / memoria) para los clientes
que necesitan acceso ininterrumpido
• Proporcionar a los clientes mayor control sobre el impacto de las
transacciones en ejecución si se utiliza switch partition o comandos de
reconstrucción de índice en línea
45. Buffer Pool Manager
Query Plan
Optimizer
Cmd
Parser
Query
Executo
r
Results
Relational
Engine
Command
Data
Query Tree
TDS
TDS
Result Sets
SNI
Protocol
Layer
Plan Cache
Transaction Log
GetPage
Access
Methods
D
Data Cache
Cached Pages
Transaction
Manager
Data
Files
Write
I/O
Storage Engine
Buffer
Manager
Buffer Pool
Read
I/O
48. - Ver Buffer Pool Detalles de la extensión para ver si está
habilitado o no
SELECT * FROM sys.dm_os_buffer_pool_extension_configuration
GO
- Monitor de Buffer Pool extensión de uso para ver si alguno de
los datos o la página (s) índice están en Buffer Pool o no (última columna del resultado de la consulta)
SELECT * FROM sys.dm_os_buffer_descriptors
GO
- Desactivar Buffer Pool extensión es muy fácil
ALTER CONFIGURACIÓN DEL SERVIDOR SET BUFFER DE PISCINA DE
EXTENSIÓN OFF
GO
61. Opciones prioritarias bloqueo administrado
Mata a todos los
bloqueadores
Cancelar las transacciones de
usuario que bloquean
Espere a que los bloqueadores
terminen
Inmediatamente o
especificado esperar tiempo
MAX_DURATION *
Salir DDL después de
esperar
Cambie a la cola de la
normalidad
MAX_DURATION * =n minutos]
Regular cerrar cola
Esperar bloqueadores
MAX_DURATION *
Termina DDL (SWITCH / OIR)
Cola de bloqueo de baja prioridad
* Si no hay bloqueadores, otorga el bloqueo inmediato y la sentencia DDL se completar con éxito
62. Managed lock priority syntax
Nuevo estatuto T-SQL DDL para ALTER TABLE y para ALTER INDEX
<low_priority_lock_wait>::=
{
WAIT_AT_LOW_PRIORITY (
MAX_DURATION = <time>[MINUTES],
ABORT_AFTER_WAIT = { NONE
| SELF | BLOCKERS } )
}
NONE - current behavior
SELF - abort DDL
BLOCKERS – abort user blockers
Syntax
ALTER TABLE stgtab SWITCH PARTITION
1 TO parttab PARTITION 1
WITH (WAIT_AT_LOW_PRIORITY
MAX_DURATION= 60 minutes,
ABORT_AFTER_WAIT=BLOCKERS))
ALTER INDEX clidx ON parttable
REBUILD WITH ( ONLINE=ON
WAIT_AT_LOW_PRIORITY
(MAX_DURATION= 300,
ABORT_AFTER_WAIT=SELF)) )
Examples
63. Diagnóstico
Errorlog
Diagnóstico de sesiones
abortadas
Deadlock diagnostics mediante
el deadlock graph
DMV extensions
sys.dm_tran_locks
“request_status” extensions
LOW_PRIORITY_CONVERT,
LOW_PRIORITY_WAIT, or
ABORT_BLOCKERS
sys.dm_os_wait_stats
“wait_type” extensions
…LOW_PRIORITY and
..ABORT_BLOCKERS
Extended Events
lock_request_priority_state
process_killed_by_abort_blocke
rs
ddl_with_wait_at_low_priority
64. Syntax
<single_partition_rebuild_index_option> ::=
{
…. | ONLINE = { ON [ (
<low_priority_lock_wait> ) ] | OFF }
}
<low_priority_lock_wait>::=
{
WAIT_AT_LOW_PRIORITY ( MAX_DURATION =
<time>[MINUTES],
ABORT_AFTER_WAIT = { NONE | SELF |
BLOCKERS } )
}
Syntax
ALTER INDEX clidx ON part_table REBUILD
PARTITION= 3
WITH ( ONLINE=ON
(WAIT_AT_LOW_PRIORITY
(MAX_DURATION=
300,
ABORT_AFTER_WAIT=NONE)) )
Example