Como administrador de bases de datos de SQL Server, es importante mantenerse actualizado con los últimos consejos y mejores prácticas para garantizar un rendimiento y eficiencia óptimos. En esta publicación de blog, discutiremos algunos conceptos y consejos útiles de SQL Server que pueden ayudarte en tu trabajo diario.
Consejo #1 – Mejores prácticas de configuración de SQL Server
Cuando configures SQL Server en un entorno de producción, se recomienda instalarlo en una máquina dedicada. Esto significa que la máquina debe estar destinada únicamente a ejecutar la instancia de SQL Server y no tener otras aplicaciones instaladas en ella. Al hacerlo, SQL Server puede maximizar la utilización de recursos y funcionar al máximo rendimiento. Es importante estimar la cantidad correcta de recursos (CPU, memoria y E/S) e instalar SQL Server en una máquina adecuada. Ya sea una máquina física o una máquina virtual, siempre y cuando tenga la cantidad adecuada de recursos, funcionará de manera eficiente.
Cuando se trata de servicios de SQL Server, el enfoque recomendado ha cambiado con el tiempo. Antes de SQL Server 2012 y Windows 2008 R2, se recomendaba utilizar cuentas de dominio para una mejor administración centralizada y seguridad. Sin embargo, con la introducción de las Cuentas de Servicio Administrado (MSA) en Windows 2008 R2 y SQL Server 2012, ahora se recomienda utilizar MSA para instancias independientes de SQL Server. Para entornos de clúster, como Instancias de Agrupación de Conmutación por Error o Grupos de Disponibilidad, todavía se recomiendan las cuentas de dominio. En SQL Server 2016 en Windows 2012 y versiones posteriores, se pueden utilizar Cuentas de Servicio Administrado en Grupo (gMSA) en varios hosts.
La Inicialización Instantánea de Archivos (IFI) sigue siendo necesaria incluso con almacenamiento flash. Si bien el impacto de IFI es menor con almacenamiento flash en comparación con el almacenamiento magnético, aún puede ahorrar minutos valiosos de tiempo de inactividad al restaurar bases de datos grandes en almacenamiento flash.
Configurar la memoria mínima del servidor (min server memory) y la memoria máxima del servidor (max server memory) es importante en escenarios donde tienes múltiples instancias de SQL Server o múltiples procesos en ejecución en el mismo host. Al configurar la memoria máxima del servidor para cada instancia, puedes equilibrar el uso de memoria entre los procesos. La memoria mínima del servidor también se puede configurar para garantizar que la instancia mantenga una cantidad mínima de memoria. Sin embargo, en escenarios donde SQL Server es el único proceso significativo que se ejecuta en el servidor, es suficiente configurar la memoria máxima del servidor con un valor inferior a la cantidad total de memoria física.
Consejo #2 – Contención en páginas de asignación en tempdb
En cuanto a tempdb, colocar cada archivo de datos en una unidad separada puede mejorar el rendimiento de E/S, ya que se utilizarán múltiples unidades en paralelo. Sin embargo, incluso si todos los archivos de datos se encuentran en la misma unidad, aún se beneficiará de múltiples subprocesos de trabajo que se ejecutan en paralelo y de una reducción de la contención en las páginas de asignación. El tamaño recomendado de cada archivo de datos de tempdb depende de varios factores, como el tamaño de las bases de datos de usuario, las cargas de trabajo y las características utilizadas en la instancia. Es importante crear todos los archivos de datos con el mismo tamaño inicial y configuración de crecimiento automático para garantizar una distribución y carga óptimas entre los archivos.
Para tempdb, se recomienda colocar sus archivos en matrices RAID optimizadas para un rendimiento de escritura, como RAID 0 o RAID 10. Incluso con almacenamiento flash, las configuraciones RAID 0 o RAID 10 aún pueden mejorar el rendimiento.
Consejo #4 – El problema de ARITHABORT
Se recomienda el uso de Eventos Extendidos en lugar de Perfilador para capturar eventos en SQL Server debido a su menor sobrecarga y funcionalidad adicional. Microsoft ha descontinuado el Perfilador y recomienda utilizar Eventos Extendidos en su lugar.
En cuanto a las opciones SET, existen configuraciones recomendadas que garantizan la compatibilidad y el correcto funcionamiento de SQL Server. Estas configuraciones incluyen SET ANSI_NULLS ON, SET ANSI_PADDING ON, SET ANSI_WARNINGS ON, SET ARITHABORT ON, SET QUOTED_IDENTIFIER ON, SET CONCAT_NULL_YIELDS_NULL ON y SET NUMERIC_ROUNDABORT OFF.
Cuando se compara el rendimiento de una aplicación con SSMS, es importante entender que la diferencia en los planes de ejecución no se debe a la configuración de ARITHABORT. La diferencia suele deberse al “parameter sniffing”, donde la aplicación y SSMS utilizan diferentes valores de parámetros. Investigar la razón detrás de los planes diferentes puede ayudar a encontrar formas de garantizar que la aplicación obtenga el mismo plan.
Consejo #8 – Durabilidad retrasada
La durabilidad retrasada se puede configurar a nivel de base de datos con opciones como DISABLED, ALLOWED y FORCED. Es importante comprender las implicaciones de cada opción y elegir la que se adapte a tus requisitos. La durabilidad retrasada no se configura a nivel de tabla.
Preguntas generales
En cuanto a la seguridad de la aplicación, generalmente se recomienda utilizar la autenticación de Windows en lugar de la autenticación de SQL Server para una mejor seguridad y una administración de cuentas simplificada. Separar el contexto de seguridad de los usuarios y el contexto de seguridad en el que el servidor de aplicaciones se conecta a la base de datos proporciona más flexibilidad y facilidad de mantenimiento.
El indicador de seguimiento 4199 ya no es necesario en SQL Server 2016 y versiones posteriores. A partir del nivel de compatibilidad 130, todas las correcciones previamente incluidas en el indicador de seguimiento ahora están habilitadas de forma predeterminada. El indicador de seguimiento ahora se utiliza para recopilar nuevas correcciones de optimización de consultas.
Utilizar múltiples grupos de archivos (filegroups) para bases de datos de usuario puede proporcionar beneficios de rendimiento, opciones de disponibilidad durante la recuperación ante desastres y niveles de almacenamiento. Sin embargo, si la base de datos de usuario funciona bien, no es muy grande y solo hay un tipo de almacenamiento, utilizar el grupo de archivos PRIMARY es suficiente.
Separar los índices no agrupados e índices agrupados en diferentes discos puede proporcionar beneficios de rendimiento, especialmente en cuanto a la velocidad de E/S. Colocar tablas frecuentemente unidas o tablas y sus índices no agrupados correspondientes en diferentes grupos de archivos puede optimizar la distribución de disco.
Existen muchas pautas para prevenir problemas con el “parameter sniffing”. Comprender la parametrización en SQL Server e implementar las mejores prácticas puede ayudar a lidiar con problemas de “parameter sniffing”. Para obtener más información, consulta la serie de publicaciones de blog sobre parametrización.
Estos son solo algunos conceptos y consejos de SQL Server que pueden ayudarte en tu trabajo como DBA. ¡Mantente atento a más artículos y consejos sobre SQL Server!