Crea una instancia de SQL Server de alto rendimiento

En este instructivo, se muestra cómo crear una instancia de VM de Compute Engine que ejecute SQL Server y que esté optimizada para el rendimiento. Aprenderás a crear la instancia y a configurar SQL Server para un rendimiento óptimo en Google Cloud Platform. Además, obtendrás información sobre una serie de opciones de configuración disponibles que te ayudarán a ajustar el rendimiento del sistema.

En este instructivo, se usa SQL Server Standard Edition 2014, por lo que no todas las opciones de configuración que se presentan en esta guía funcionan para todos los usuarios, y no todas ofrecen beneficios de rendimiento notables para cada carga de trabajo.

Objetivos

  • Configurar los discos y la instancia de Compute Engine
  • Configurar el sistema operativo Windows
  • Configurar SQL Server

Costos

En este instructivo, se usan los siguientes componentes facturables de Cloud Platform:

  • Instancia de memoria alta de Compute Engine
  • Almacenamiento en disco persistente SSD de Compute Engine
  • Almacenamiento en disco SSD local de Compute Engine
  • Imagen preconfigurada de SQL Server Standard

La calculadora de precios puede estimar el costo en función del uso del proyecto. El vínculo provisto muestra el costo estimado de los productos que se usan en este instructivo, que pueden tener un valor más de USD 4 por hora y más USD 3,000 por mes. Los usuarios nuevos de Cloud Platform pueden ser aptos para una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Si no usas Windows en tu máquina local, instala un cliente de RDP de terceros, como Chrome RDP de FusionLabs.

Crea los discos y la instancia de Compute Engine

Crea la instancia de Compute Engine con SQL Server y dos discos persistentes.

  • Un SSD local proporciona una ubicación de alto rendimiento para tempdb y el archivo de paginación de Windows.

    Existen algunas consideraciones importantes que se deben tener en cuenta cuando se usa un SSD local. Cuando cierras tu instancia desde Windows o la restableces con la API, se quita el SSD local. Esta acción hace que la instancia no pueda iniciarse. Para que la máquina vuelva a funcionar, deberás separar tus discos persistentes, crear una instancia nueva con ellos y, luego, definir un SSD local nuevo. Después del inicio, también deberás formatear el disco nuevo y reiniciar. Por lo tanto, no debes almacenar datos críticos de forma permanente en un SSD local ni apagar la instancia, a menos que estés listo para volver a compilarla.

  • Un disco persistente SSD proporciona un almacenamiento de alto rendimiento para los archivos de la base de datos.

    El rendimiento del disco persistente SSD se basa en un cálculo que utiliza la cantidad de CPU y el tamaño del disco. Con 32 CPU virtuales y un disco de 1 TB, el rendimiento alcanza un máximo de 40,000 operaciones de lectura por segundo (ops) y 30,000 operaciones de escritura. El rendimiento total sostenido de lecturas y escrituras es de 800 MB/s y 400 MB/s respectivamente. Estas medidas representan una suma de todos los discos persistentes conectados a la máquina virtual, incluido C:\` drive. This is why you should create a local SSD to offload all the IOPS needed for the paging file,tempdb`, staging data, and backups.

Para obtener más información sobre el rendimiento del disco, consulta cómo optimizar el disco persistente y el rendimiento del SSD local.

Crea la instancia de Compute Engine

Crea una VM que tenga SQL Server 2014 Standard preinstalado en Windows Server 2012.

  1. En Google Cloud Platform Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en el botón Crear instancia.

  3. Asigna el nombre “ms-sql-server” a tu instancia.

  4. Establece la Configuración de la máquina en 16 CPU virtuales, 104 GB, n1-highmem-16.

  5. En la sección Disco de arranque, haz clic en Cambiar para configurarlo.

  6. En la pestaña Imágenes de la aplicación, selecciona SQL Server 2014 Standard en Windows Server 2012 R2.

  7. En la sección Tipo de disco de arranque, selecciona Disco persistente estándar.

  8. En la sección Tamaño (GB), configura el tamaño del disco de arranque en 50 GB.

  9. Haz clic en Seleccionar.

  10. Expande Administración, seguridad, discos, redes, instancia única.

  11. Haz clic en Discos.

  12. En Discos adicionales, haz clic en Agregar disco nuevo para crear un disco adicional.

  13. Deja el campo Nombre sin modificar.

  14. En Tipo, selecciona Disco SSD local para instalación nueva (máximo 8).

  15. Haz clic en Listo para terminar de crear este disco.

  16. En Discos adicionales, vuelve a hacer clic en Agregar disco nuevo para crear un segundo disco adicional.

  17. Deja el campo Nombre sin modificar.

  18. En Tipo, selecciona Disco persistente SSD.

  19. En Tipo de fuente, selecciona Disco en blanco.

  20. Haz clic en Listo para terminar de crear el segundo disco.

  21. Haz clic en Crear para crear la instancia.

Configura Windows

Ahora que tienes una instancia de trabajo que ejecuta SQL Server, conéctate a ella y configura el sistema operativo Windows. Luego, en una próxima sección, aprenderás a configurar SQL Server.

Conéctate a tu instancia

  1. Ve a la página Instancias de VM en GCP Console.

    Ir a la página Instancias de VM

  2. En la columna Nombre, haz clic en el nombre de tu instancia, ms-sql-server.

  3. En la parte superior de la página de detalles de la instancia, haz clic en el botón Configurar contraseña de Windows.

  4. Especifica un nombre de usuario.

  5. Haz clic en Configurar a fin de generar una contraseña nueva para esta instancia de Windows.

  6. Toma nota del nombre de usuario y la contraseña para acceder a la instancia.

  7. Conéctate a tu instancia con RDP:

    • Si instalaste Chrome RDP de FusionLabs, haz clic en el botón RDP en la parte superior de la página de detalles de la instancia.
    • Si usas un cliente RDP diferente, como la Conexión a escritorio remoto de Windows, haz clic en el Menú ampliado del botón RDP y descarga el archivo RDP. Abre el archivo RDP con tu cliente.

Configura volúmenes de disco

Crea y formatea los volúmenes:

  1. En el menú Inicio, busca “Administrador del servidor” y ábrelo.
  2. Selecciona Servicios de archivos y almacenamiento y, luego, Discos.

    El SSD local se llama Google EphemeralDisk. Tanto el SSD local como el SSD persistente se marcan como con particiones Unknown:

    Encuentra la entrada de Google EphemeralDisk

  3. Haz clic derecho en el disco SSD local de 375 GB llamado “Disco efímero de Google” (Google Ephemeral Disk) y, luego, selecciona Volumen nuevo.

  4. Continúa con los valores predeterminados y selecciona P: como etiqueta del disco, ya que este será el disco del archivo de paginación.

  5. Cuando llegues al paso de Configuración del sistema de archivos (File System Settings), cambia el Tamaño de unidad de asignación (Allocation unit size) a 8192 y, luego, ingresa “pagefile” en Etiqueta de volumen (Volume label).

    Asistente de volumen nuevo

  6. Repite los mismos pasos anteriores para el segundo disco persistente SSD, pero con los tres cambios siguientes:

  • Selecciona D: como letra de unidad.
  • Configura el Tamaño de unidad de asignación (Allocation unit size) en “32k”.

    Microsoft recomienda que los discos de registro y los datos de SQL Server se formateen en 64k, sin embargo, la tecnología de disco persistente dentro de GCP se alinea mejor con 32k. Este cambio también disminuye la cantidad de operaciones en disco que se tienen en cuenta para el límite de E/S del disco persistente.

  • Ingresa “sqldata” en Etiqueta de volumen (Volume label).

Corrección del error Failed to mount path - Invalid Parameter

Si detectas este error, sigue estos pasos:

  1. Haz clic en Cerrar.
  2. Haz clic en el ícono actualizar discos en la parte superior derecha.
  3. Haz clic en el disco persistente de 500 GB de la lista.
  4. En el panel Volúmenes (Volumes), haz clic derecho en el volumen y, luego, selecciona Administrar letra de unidad y rutas de acceso (Manage Drive Letter and Access Paths).

    Gestiona letras de unidad y rutas de acceso

  5. Selecciona D: como letra de unidad.

  6. Haz clic en Aceptar.

Mueve el archivo de paginación de Windows

Ahora que se crearon y activaron los volúmenes nuevos, mueve el archivo de paginación de Windows al SSD local. Esto libera IOPS del disco persistente y mejora el tiempo de acceso de la memoria virtual.

  1. En el menú Inicio, busca Ver configuración avanzada del sistema y, luego, abre el cuadro de diálogo.
  2. Haz clic en la pestaña Avanzada y, en la sección Rendimiento, haz clic en Configuración.
  3. En la sección Memoria virtual, haz clic en el botón Cambiar.
  4. Desmarca la casilla Administrar automáticamente el tamaño del archivo de paginación para todas las unidades. El sistema ya debería haber configurado el archivo de paginación en la unidad “C:”, y debes moverlo.
  5. Haz clic en C: y, luego, en el botón de selección Sin archivo de paginación.
  6. Haz clic en el botón Configurar.
  7. Para crear el archivo de paginación nuevo, haz clic en la unidad P: y, luego, en el botón de selección Tamaño administrado por el sistema.
  8. Haz clic en el botón Configurar.
  9. Haz clic tres veces en Aceptar para salir de las propiedades avanzadas del sistema.

    El Soporte técnico de Microsoft publicó consejos adicionales para la configuración de la memoria virtual.

Configura el perfil de energía

Configura el perfil de energía en High-Performance en lugar de Balanced.

  1. En el menú Inicio, busca “Seleccionar un plan de energía” y, luego, abre las opciones de energía.
  2. Elige el botón de selección Alto rendimiento.
  3. Sal del cuadro de diálogo.

Configura SQL Server

Usa SQL Server Management Studio para realizar la mayoría de las tareas administrativas. Las imágenes preconfiguradas para SQL Server 2014 vienen con Management Studio instalado, pero si usas la imagen de SQL Server 2016, debes descargarla y, también, instalarla manualmente. Después de la instalación, inicia Management Studio y, luego, haz clic en Conectar para conectarte a la base de datos predeterminada.

Mueve los datos y los archivos de registro

La imagen preconfigurada para SQL Server viene con todo instalado en C:\` drive, including the system databases. In order to optimize your setup, move those files to the newD:` drive you created. Además, recuerda crear todas las bases de datos nuevas en la unidad “D:”. Dado que estás usando un disco persistente SSD, no es necesario que almacenes los archivos de datos y los archivos de registro en particiones de disco diferentes.

Hay dos maneras de mover la instalación al disco secundario: usar el instalador o mover los archivos de forma manual.

Usa el instalador

Para usar el instalador, ejecuta c:\setup.exe y selecciona una ruta de instalación nueva en tu disco secundario.

Mueve los archivos de forma manual

Mueve las bases de datos del sistema y configura SQL Server para guardar los datos y los archivos de registro en el mismo volumen:

  1. Crea una nueva carpeta llamada D:\SQLData.
  2. Abre una ventana de comandos.
  3. Ingresa el siguiente comando para otorgar acceso completo a NT Service\MSSQLSERVER:

    icacls D:\SQLData /Grant "NT Service\MSSQLServer":(OI)(CI)F
    
  4. Usa Management Studio y las siguientes guías para mover las bases de datos del sistema y cambiar las ubicaciones predeterminadas de los archivos de las bases de datos nuevas.

  5. Si planeas usar las funciones del Servidor de informes, también debes mover los archivos ReportServer y ReportServerTempDB.

Después de mover los archivos maestros y reiniciar, deberás configurar el sistema para que apunte a la nueva ubicación del modelo y las bases de datos MSDB. Debajo hay una secuencia de comandos auxiliar para ejecutar en Management Studio:

ALTER DATABASE model MODIFY FILE ( NAME = modeldev , FILENAME = 'D:\SQLData\model.mdf' )
ALTER DATABASE model MODIFY FILE ( NAME = modellog , FILENAME = 'D:\SQLData\modellog.ldf' )
ALTER DATABASE msdb MODIFY FILE ( NAME = MSDBData , FILENAME = 'D:\SQLData\MSDBData.mdf' )
ALTER DATABASE msdb MODIFY FILE ( NAME = MSDBlog , FILENAME = 'D:\SQLData\MSDBLog.ldf' )

Después de ejecutar estos comandos, sigue estos pasos:

  1. Usa el complemento services.msc para detener el servicio de base de datos de SQL Server.
  2. Utiliza el explorador de archivos de Windows para mover los archivos físicos de C:\` drive where theMasterdatabase was located to theD:\SQLData` directory.
  3. Inicia el servicio de base de datos de SQL Server.

Configura permisos del sistema

Después de mover las bases de datos del sistema, modifica algunos parámetros de configuración adicionales. Comienza con los permisos de la Cuenta de usuario de Windows que se creó para ejecutar el proceso de SQL Server, que se denomina NT Service\MSSQLSERVER.

Concede el permiso Lock Pages in Memory

El permiso Lock Pages in Memory de la directiva de grupo evita que Windows mueva páginas de la memoria física a la memoria virtual. Para mantener la memoria física libre y organizada, Windows intenta intercambiar páginas antiguas y poco modificadas por el archivo de paginación de memoria virtual en el disco.

SQL Server almacena información importante en la memoria, como estructuras de tablas, planes de ejecución y consultas en caché. Parte de esta información rara vez cambia, por lo que se convierte en un objetivo para el archivo de paginación. Si esta información se traslada al archivo de paginación, el rendimiento de SQL Server puede reducirse. Otorgar el permiso Lock Pages in Memory de la directiva de grupo para la cuenta de servicio de SQL Server evita este intercambio.

Sigue estos pasos:

  1. Haz clic en Inicio y, luego, busca Editar directiva de grupo para abrir la consola.
  2. Expande Directiva de equipo local (Local Computer Policy) >** Configuración del equipo** (Computer Configuration) > Configuración de Windows (Windows Settings) > Directivas locales (Local Policies) > Asignación de derechos de usuario (User Rights Assignment).
  3. Busca y, luego, haz doble clic en Bloquear páginas en la memoria (Lock pages in memory).
  4. Haz clic en Agregar usuario o grupo (Add User or Group).
  5. Busca "NT Service\MSSQLSERVER".
  6. Si ves varios nombres, haz doble clic en el nombre MSSQLSERVER.
  7. Haz clic en ** OK** (Aceptar) dos veces.
  8. Mantén abierta la consola del Editor de directivas de grupo (Group Policy Editor).

Bloquea páginas

Concede el permiso Perform volume maintenance tasks

De forma predeterminada, cuando una aplicación solicita a Windows una porción de espacio en disco, el sistema operativo localiza una sección del tamaño adecuado y, luego, pone en cero toda la sección del disco antes de devolverla a la aplicación. Debido a que SQL Server sirve para expandir archivos y llenar espacio en disco, este comportamiento no es óptimo.

Existe una API diferente para asignar espacio en disco a una aplicación. Con frecuencia, se la denomina inicialización instantánea de archivos. Lamentablemente, esta configuración solo funciona con archivos de datos. En una próxima sección, obtendrá información sobre la expansión de archivos de registro. La inicialización instantánea de archivos requiere que la cuenta de servicio que ejecuta el proceso de SQL Server tenga otro permiso de directiva de grupo, denominado Perform volume maintenance tasks.

  1. En el Editor de directivas de grupo, busca “Realizar tareas de mantenimiento del volumen”.
  2. Agrega la cuenta “NT Service\MSSQLSERVER”, como lo hiciste en la sección anterior.
  3. Reinicia el proceso de SQL Server para activar ambas configuraciones.

Configura TempDB

La optimización del uso de CPU de SQL Server mediante la creación de un archivo TempDB por CPU solía ser una práctica recomendada. Sin embargo, debido a que el recuento de CPU aumentó con el tiempo, seguir esta pauta puede reducir el rendimiento. Como punto de partida recomendado, usa 4 archivos TempDB. A medida que mides el rendimiento del sistema, en casos excepcionales, es posible que debas aumentar gradualmente la cantidad de archivos TempDB a un máximo de 8.

Puedes ejecutar una secuencia de comandos T-SQL dentro de SQL Server Management Studio para mover los archivos TempDB a una carpeta en la unidad “P:”.

  1. Crea el directorio p:\tempdb.
  2. Otorga acceso de seguridad total a la Cuenta de usuario “NT Service\MSSQLSERVER”:

    icacls p:\tempdb /Grant "NT Service\MSSQLServer":(OI)(CI)F
    
  3. Ejecuta la siguiente secuencia de comandos dentro de SQL Server Management Studio para mover el archivo de registro y el archivo de datos TempDB:

    USE Master
    GO
    ALTER DATABASE [tempdb] MODIFY FILE (NAME = tempdev, FILENAME = 'p:\tempdb\tempdb.mdf')
    GO
    ALTER DATABASE [tempdb] MODIFY FILE (NAME = templog, FILENAME = 'p:\tempdb\templog.ldf')
    GO
    
  4. Reinicia SQL Server.

  5. Ejecuta la siguiente secuencia de comandos a fin de modificar los tamaños de archivo y crea tres archivos de datos adicionales para el archivo TempDB nuevo.

    ALTER DATABASE [tempdb] MODIFY FILE (NAME = tempdev, FILENAME = 'p:\tempdb\tempdb.mdf', SIZE=8GB)
    ALTER DATABASE [tempdb] MODIFY FILE (NAME = templog, FILENAME = 'p:\tempdb\templog.ldf' , SIZE = 2GB)
    ALTER DATABASE [tempdb] ADD FILE (NAME = 'tempdev1', FILENAME = 'p:\tempdb\tempdev1.ndf' , SIZE = 8GB, FILEGROWTH = 0);
    ALTER DATABASE [tempdb] ADD FILE (NAME = 'tempdev2', FILENAME = 'p:\tempdb\tempdev2.ndf' , SIZE = 8GB, FILEGROWTH = 0);
    ALTER DATABASE [tempdb] ADD FILE (NAME = 'tempdev3', FILENAME = 'p:\tempdb\tempdev3.ndf' , SIZE = 8GB, FILEGROWTH = 0);
    GO
    

    Si usas SQL Server 2016, hay 3 archivos TempDB adicionales que deberás quitar después de realizar los pasos anteriores:

    ALTER DATABASE [tempdb] REMOVE FILE temp2;
    ALTER DATABASE [tempdb] REMOVE FILE temp3;
    ALTER DATABASE [tempdb] REMOVE FILE temp4;
    
  6. Reinicia SQL Server nuevamente.

  7. Borra los archivos model, MSDB, master y tempdb de la ubicación original en la unidad “C:”.

Moviste los archivos TempDB a la partición SSD local de manera correcta. Este movimiento conlleva algunos riesgos, mencionados anteriormente, pero si los archivos TempDB se pierden por algún motivo, SQL Server los reconstruye. El movimiento de TempDB te brinda el rendimiento adicional del SSD local y disminuye las IOPS que se utilizan en los discos persistentes.

Establece max degree of parallelism

La configuración predeterminada recomendada para max degree of parallelism es lograr que coincida con la cantidad de CPU en el servidor. Sin embargo, hay un punto en el que ejecutar una consulta en 16 o 32 fragmentos paralelos y fusionar los resultados es mucho más lento que realizar la ejecución en un solo proceso. Si usas una instancia de 16 o 32 núcleos, puedes establecer el valor de max degree of parallelism en 8 con el siguiente T-SQL:

USE Master
GO
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'max degree of parallelism', 8
GO
RECONFIGURE WITH OVERRIDE
GO

Configura max server memory

El valor predeterminado de esta configuración es un número muy alto, pero debes establecerlo en la cantidad de megabytes de RAM física disponible, menos un par de Gigabytes para el sistema operativo y la sobrecarga. El siguiente ejemplo de T-SQL ajusta la max server memory a 100 GB. Modifícalo para que se ajuste a un valor que coincida con tu instancia. Consulta el documento de opciones de configuración del servidor de memoria para obtener más información.

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OVERRIDE
GO
exec sp_configure 'max server memory', 100000
GO
RECONFIGURE WITH OVERRIDE
GO

Últimos pasos

Reinicia la instancia una vez más para asegurarte de que todas las configuraciones nuevas surtan efecto. Se configuró el sistema de SQL Server y estás listo para crear tus propias bases de datos y comenzar a probar cargas de trabajo específicas. Consulta la guía de prácticas recomendadas de SQL Server para obtener más información sobre actividades operativas, otras consideraciones de rendimiento y capacidades de Enterprise Edition.

Limpia

Luego de finalizar el instructivo de SQL Server, puedes limpiar los recursos que creaste en GCP para que no consuman tu cuota y no se te facturen en el futuro. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, haz lo siguiente:

  1. En la GCP Console, dirígete a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar.
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Cómo borrar instancias

Para borrar una instancia de Compute Engine, haz lo siguiente:

  1. En GCP Console, dirígete a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en la casilla de verificación junto ala instancia que deseas borrar.
  3. Haz clic en el botón Borrar en la parte superior de la página para borrar la instancia.

Borra discos persistentes

Para borrar un disco persistente, realiza los siguientes pasos:

  1. En GCP Console, ve a la página Discos.

    Ir a la página Discos

  2. Selecciona la casilla de verificación junto al nombre del disco que deseas borrar.

  3. Haz clic en el botón Borrar en la parte superior de la página.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...