Ahmad Yaseen

Nuevas características y mejoras en SQL Server 2016 SP1

April 21, 2017 by

SQL Server 2016 SP1 fue lanzado como Microsoft anunció. Viene con un puñado de nuevas características y mejoras como resultado de retroalimentación de los clientes y la comunidad. En este artículo, le presentará estas nuevas características y mejoras.

Características añadidas a las ediciones Standard, Web, Express y Local DB

En SQL Server 2016 SP1, un grupo de características que estaban disponibles sólo en la Edición Enterprise ahora están disponibles en las ediciones de SQL Server Standard, Web, Express y Local DB. La lista de características incluye Instantánea de Base de Datos, Almacén de Columnas, Particionamiento de Tablas, Compresión, Siempre Encriptado, Auditoría Granular, Contenedores Múltiples Filestream y PolyBase. En cuando a Captura de Cambios de Datos, está disponible sólo en las Ediciones de SQL Server Standard y Web, ya que esta característica requiere SQL Server Agent, el cual no está disponible en las Ediciones Express y Local DB. Para la característica de OLTP en Memoria, está disponible en todas las Ediciones de SQL Server, excepto la Edición Local DB, ya que requiere crear grupos de archivos Filestream, lo cual no es posible en Local DB debido a permisos insuficientes.

El principal objetivo de este cambio es permitir a los desarrolladores desarrollar y construir las aplicaciones que dependen de estas características en cualquier Edición de SQL Server instalada en el ambiente del cliente. Pero puede que usted se pregunte, ¿por qué aún necesitaría la Edición SQL Server Enterprise si Microsoft provee todas estas características en las otras ediciones más económicas? La respuesta es las limitaciones de RAM y CPU que aún existen en estas Ediciones de SQL Server, donde estamos limitados a 16 núcleos y 128 GB de RAM en la Edición Standard, por ejemplo. Si usted necesita sobrepasar estos valores, usted aún necesitará comprar SQL Server Edición Enterprise.

Usando la Memoria de Clase de Almacenamiento para impulsar el proceso de Transacción

En un sistema transaccional altamente cargado, enviar al registro de transacciones es uno de los problemas más significativos que afecta al desempeño general. SQL Server 2016 SP1 viene con una nueva características que permite emplear la Memoria de Clase de Almacenamiento, que es soportada en Windows Server 2016, para impulsar el proceso de envío de transacciones por orden de magnitud.

Nueva sentencia CREATE OR ALTER

SQL Server 2016 SP1 presenta una nueva sentencia T-SQL CREATE OR ALTER para módulos que nos permite correr un script para objetos de base de datos como una vista, procedimiento almacenado, función o desencadenador sin la necesidad de saber si este objeto de la base de datos existe o no, donde trabajará como una sentencia CREATE normal si el objeto no existe o trabajará como una sentencia ALTER normal si el objeto ya existe.

Si usted trata de crear un procedimiento almacenado que ya existe:

CREATE PROCEDURE CreateOrALterDemo
 AS
 BEGIN
   PRINT N'Hello from SQLShack.com';
 END
 GO

Usted verá el siguiente error:

Pero usted puede correr las siguientes sentencias CREATE OR ALTER muchas veces sin ningún error:

USE SQLShackDemo 
GO
CREATE OR ALTER PROCEDURE CreateOrALterDemo
 AS
 BEGIN
   PRINT N'Hello from SQLShack.com';
 END
 GO

Opción de consultas USE HINT

Como un reemplazo para la sentencia de sugerencia de consulta OPTION(QUERYTRACEON), que necesitaba permisos de sysadmin para ser ejecutada, SQL Server 2016 SP1 presenta la sugerencia de consulta OPTION(USE HINT (‘ ’)) sin necesitar los permisos sysadmin o recordar el número de marca de seguimiento, con 9 sugerencias soportadas que pueden ser listadas consultando el objeto de sistemasys.dm_exec_valid_use_hints con el resultado ordenado siguiente:

Donde usar la sugerencia ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS es el equivalente de encender la marca de seguimiento 9476, la sugerencia ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES es equivalente a habilitar las banderas de rastreo 4137 y 9471, la sugerencia DISABLE_PARAMETER_SNIFFING es equivalente a habilitar la bandera de rastro 4136, la sugerencia DISABLE_OPTIMIZER_ROWGOAL es equivalente a habilitar la marca de seguimiento 4138, la sugerencia DISABLE_OPTIMIZED_NESTED_LOOP es equivalente a habilitar la marca de seguimiento 2340, la sugerencia ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS es equivalente a habilitar la marca de seguimiento 2389, la sugerencia ENABLE_QUERY_OPTIMIZER_HOTFIXES es equivalente a habilitar la marca de seguimiento 4199, la sugerencia FORCE_DEFAULT_CARDINALITY_ESTIMATION es equivalente a habilitar la marca de seguimiento 2312 y la sugerencia FORCE_LEGACY_CARDINALITY_ESTIMATION es equivalente a habilitar la marca de seimiento 9481.

DBCC CLONEDATABASE

La sentencia DBCC CLONEDATABASE es usada para crear una copia vacía de la base de datos del usuario con sus estadísticas para propósitos de resolución de problemas. En SQL Server 2016 SP1, DBCC CLONEDATABASE soporta clonar objetos CLR, Filestream, Filetable, OLTP en Memoria y Almacén de Consultas. Las nuevas opciones están disponibles ahora para elegir entre sólo Almacén de Consultas, sólo estadísticas, o esquema sólo sin estadísticas o almacén de consultas.

La consulta de abajo creará una copia clonada por defecto de la base de datos SQLShackDemo con esquema, estadísticas y metadatos del almacén de consultas:

DBCC CLONEDATABASE  (SQLShackDemo, SQLShackDemoClone)

Donde la siguiente consulta excluirá a las estadísticas cuando se esté creando una copia clonada de la base de datos:

DBCC CLONEDATABASE  (SQLShackDemo, SQLShackDemoClone) WITH NO_STATISTICS

Y la consulta de abajo excluirá las estadísticas cuando se esté creando una copia clonada de la base de datos:

DBCC CLONEDATABASE  (SQLShackDemo, SQLShackDemoClone) WITH NO_QUERYSTORE

La última sentencia incluirá el esquema sólo cuando se esté creando una copia de la base de datos:

DBCC CLONEDATABASE  (SQLShackDemo, SQLShackDemoClone) WITH NO_STATISTICS,NO_QUERYSTORE

Bloquear Páginas en la Memoria e información de inicialización de archivo instantánea

Es aplicable ahora en SQL Server 2016 SP1 para revisar si el modelo de Bloqueo de Páginas en la Memoria está habilitado consultando sql_memory_model desde el DMV de sistema sys.dm_os_sys_info, donde 1 indica un modelo de memoria CONVENTIONAL, 2 indica LOCK_PAGES y 3 indica LARGE_PAGES, como sigue:

SELECT sql_memory_model, sql_memory_model_desc
FROM sys.dm_os_sys_info

El resultado en nuestro caso será:

También, la inicialización instantánea de archivos puede ser seleccionada consultando el DMV de sistema sys.dm_server_services por el valor instant_file_initialization_enabled:

SELECT instant_file_initialization_enabled
FROM sys.dm_server_services;

El resultado en nuestro caso será:

Mensaje de error de Revisión de TemDB

Hay un nuevo mensaje del registro mostrado cuando el servicio de SQL Server es reiniciado, indicando que los archivos tempdb no están configurados con los mismos ajustes de tamaño y crecimiento, mostrando también el número de archivos tempdb, como sigue:

Cambiar la limpieza manual de Rastreo

Si el tamaño de las tablas de rastreo de cambios se vuelve incontrolable y si el trabajo de limpieza automática no está corriendo lo suficientemente rápido para mantenerse al paso, el nuevo procedimiento almacenado sys.sp_flush_CT_internal_table_on_demand para mantener limpias las tablas de rastreo de cambios en SQL Server 2016 SP1.

Menos detalle de registro para OLTP en Memoria

En SQL Server 2016, OLTOP en Memoria comenzó a registrar información adicional al Registro de Errores de SQL Server para hacer más fácil la resolución de problemas y, en algunos casos, estaba abrumando al Registro de Errores con estos mensajes excesivos. En SQL Server 2016 PS1, estos mensajes de registro de OLTP en Memoria son reducidos.

Perfilar Consultas Ligeras

En SQL Server 2016 SP1, la carga adicional por operador en el desempeño de las estadísticas de ejecución de consultas es reducido encendiendo la nueva característica de perfil de consultas ligeras. Puede ser habilitada encendiendo la marca de seguimiento 7412 globalmente o puede ser habilitada automáticamente si la sesión de eventos extendidos está corriendo con query_thread_profile. Una vez que la característica de perfil ligero está habilitada, sys.dm_exec_query_profiles puede ser usada para monitorear el progreso de consultas en tiempo real mientras que la consulta está en ejecución, la característica de estadísticas de consulta en línea puede ser usada en SQL Server Management Studio y la nueva DMF sys.dm_exec_query_statistics_xml puede ser usada para retornar el plan de ejecución de la consulta para las solicitudes que están corriendo, proveyendo solamente la ID de la sesión.

Mejoras en ShowPlan

Comenzando desde SQL Server 2016 SP1, una nueva mejora fue añadida a ShowPlan proveyendo información como aquella acerca de las banderas de rastreo habilitadas, como en la salida del plan abajo:

También un MemoryGrantWarning será incluido en la información de ShowPlan si el Motor de SQL Server detecta que la asignación de memoria no es suficiente. La información de memoria al nivel de la consulta es provista también dentro de la salida XML del plan generada, como en la captura de pantalla de abajo:

La información acerca de EstimatedRowsRead, los tipos de datos de parámetros, el tiempo de consultas transcurrió, las esperas más grandes y los derrames de tempdb están también incluidos en la salida del plan XML, dependiendo de la ejecución de la consulta.

INSERT…SELECT Paralelos para Tablas Temporales Locales

En SQL Server 2016, los INSERT…SELECT paralelos a tablas temporales locales está habilitado por defecto, sin la necesidad de usar la sugerencia TABLOCK, como en el caso de hacer un INSERT a una tabla de usuario, mejorando el desempeño de la consulta. Pero para cargas de trabajo pesadas y concurrentes, la inserción paralela causará una regresión. Comenzando desde SQL Server 2016 SP1, la operación paralela de INSERT…SELECT a las tablas temporales locales está deshabilitada por defecto y requiere la sugerencia TABLOCK para habilitarla.

Soporte DROP TABLE DLL para Artículos de Replicación

En SQL Server 2016 SP1, la tabla que actúa como un artículo en la publicación de replicación transaccional puede ser eliminada desde la base de datos y la publicación si la propiedad Allow_Drop está establecida a VERDADERO en todas las publicaciones en las que la tabla es un artículo. Si a tabla es eliminada, el agente del lector de registros realizará un comando de limpieza para la base de datos de distribución para limpiar los metadatos de la tabla eliminada.

Nuevo DMF de estadísticas incrementales

Un nuevo DMFsys.dm_db_incremental_stats_properties es presentado en SQL Server 2016 SP1 y es usado para retornar las propiedades de estadísticas incrementales por partición para una tabla específica de la base de datos.

Mejoras en el monitoreo de desempeño

En SQL Server 2016 SP1, nuevos Eventos Extendidos y capacidades de diagnóstico de Perfmon son añadidos para solucionar los problemas de Grupos de Disponibilidad AlwaysOn más eficientemente. Dos nuevas columnas de Eventos Extendidos BIGINT equivalentes a query_hash y query_plan son también añadidas para proveer una mejor correlación entre los Eventos Extendido y las DMVs.

En este artículo fuimos a través de las nuevas características presentadas en SQL Server 2016 SP1 y las mejoras a las características actuales, las cuales son útiles y valiosas.

La actualización más valiosa en este paquete de servicios es que muchas características Enterprise están disponibles ahora en las Ediciones Standard, Web, Express y Local DB. Esto permite un área de programación consistente para desarrolladores y organizaciones a través de las ediciones de SQL Server, permitiéndoles construir aplicaciones avanzadas que pueden escalarse a través de diferentes Ediciones de SQL Server. Descargue el SP1 desde el enlace mencionado abajo y disfrute de probar las nuevas características y mejoras.

Enlaces útiles:


Ahmad Yaseen

Ahmad Yaseen

Ahmad Yaseen es un DBA Senior de SQL Server en Aramex International Company con un grado en ingeniería de computadoras, así como experiencia en desarrollo .NET.

Él es un Microsoft Certified Professional con una buena experiencia en desarrollo de SQL Server, administración, mejoramiento del rendimiento, monitoreo y alta disponibilidad y tecnologías de recuperación de desastres. También está contribuyendo con sus consejos sobre SQL en muchos blogs.

Ver todas las entradas de Ahmad Yaseen
Ahmad Yaseen
SQL Server 2016

Acerca de Ahmad Yaseen

Ahmad Yaseen es un DBA Senior de SQL Server en Aramex International Company con un grado en ingeniería de computadoras, así como experiencia en desarrollo .NET.

Él es un Microsoft Certified Professional con una buena experiencia en desarrollo de SQL Server, administración, mejoramiento del rendimiento, monitoreo y alta disponibilidad y tecnologías de recuperación de desastres. También está contribuyendo con sus consejos sobre SQL en muchos blogs.

Ver todas las entradas de Ahmad Yaseen

473 Views