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. En este instructivo, se describe cómo crear la instancia y, luego, configurar SQL Server para obtener un rendimiento óptimo en Google Cloud. También aprenderás sobre una serie de opciones de configuración que están disponibles para ayudarte a ajustar el rendimiento del sistema.

En este instructivo, se usa SQL Server Standard Edition 2022, 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 componentes facturables de Google Cloud, que incluyen los siguientes:

  • Instancia con capacidad 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 que se proporciona muestra el costo estimado de los productos que se usan en este instructivo, que pueden tener un costo de más de $4 (dólares estadounidenses) por hora y más de $3,000 por mes. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

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

    Descubre cómo puedes habilitar la facturación

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

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

    Descubre cómo puedes habilitar la facturación

Crea la VM de Compute Engine con discos

Para crear una instancia de SQL Server de alto rendimiento, primero debes crear una instancia de VM con SQL Server y dos discos persistentes.

Consideraciones de discos persistentes

Si deseas seleccionar el tipo de discos persistentes para tu VM, revisa las siguientes consideraciones:

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

    Hay algunas consideraciones importantes para tener en cuenta si usas un SSD local. El SSD local se quita cuando cierras tu instancia de Windows o la restableces con la API. Esta acción hace que la instancia no pueda iniciarse. Para que la máquina vuelva a ejecutarse, deberás desconectar tus discos persistentes, crear una nueva instancia con ellos y definir un nuevo SSD local. Después del inicio, también deberás formatear el nuevo disco y reiniciar la máquina. 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. La capacidad de procesamiento sostenida total de operaciones de lectura y escritura es de 800 MB por segundo y 400 MB por segundo, respectivamente. Estas mediciones representan una suma de todos los discos persistentes adjuntados a la máquina virtual, incluida la unidad C:\. Por este motivo, debes crear un SSD local con el fin de descargar todas las IOPS necesarias para el archivo de paginación, tempdb, los datos de etapa de pruebas y las copias de seguridad.

Si quieres obtener más información sobre el rendimiento del disco, consulta Configura discos para cumplir con los requisitos de rendimiento.

Crea VM de Compute Engine con discos

Para crear una VM que tenga SQL Server 2022 Standard preinstalado en Windows Server 2012, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Crear una instancia.

    Ir a Crear una instancia

  2. En Nombre, ingresa ms-sql-server.

  3. En la sección Configuración de la máquina, selecciona Uso general y, luego, haz lo siguiente:

    1. En la lista Series, haz clic en N2.
    2. En la lista Tipo de máquina, haz clic en n2-highmem-16 (16 CPU virtuales, 128 GB de memoria).
  4. En la sección Disco de arranque, haz clic en Cambiar y, luego, haz lo siguiente:

    1. En la pestaña Imágenes públicas, haz clic en la lista Sistema operativo y, luego, selecciona SQL Server en Windows Server.
    2. En la lista Versión, haz clic en SQL Server 2022 Standard on Windows Server 2022 Datacenter.
    3. En la lista Tipo de disco de arranque, haz clic en Disco persistente estándar.
    4. En el campo Tamaño (GB), configura el tamaño del disco de arranque en 50 GB.
    5. Para guardar la configuración del disco de arranque, haz clic en Seleccionar.
  5. Expande la sección Opciones avanzadas y sigue estos pasos:

    1. Expande la sección Discos.
    2. Para crear discos locales, haz clic en Agregar SSD local y, luego, haz lo siguiente:

      1. En la lista Interfaz, selecciona el protocolo que cumpla con los requisitos de rendimiento de tu sistema.
      2. En la lista Capacidad del disco, selecciona una capacidad del disco que admita el tamaño previsto de archivos tempdb.
      3. Para terminar de crear este disco, haz clic en Guardar.
    3. Para crear discos adicionales, haz clic en Agregar discos nuevos.

      1. Deja el campo Nombre sin modificar.
      2. En la lista Tipo de fuente, selecciona Disco en blanco.
      3. En la sección Tipo de disco de arranque, selecciona Disco persistente SSD.
      4. En el campo Tamaño, ingresa el tamaño del disco que pueda adaptarse al tamaño de la base de datos.
      5. Para terminar de crear el segundo disco, haz clic en Guardar.
  6. Para crear la VM, haz clic en Crear.

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éctese a su instancia

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

    Ir a 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 la instancia mediante RDP.

Configura volúmenes de disco

Crea y formatea los volúmenes:

  1. En el menú Inicio, busca “Administración de computadoras” y, luego, ábrelo.
  2. En la sección Almacenamiento, selecciona Administración de discos.
  3. Cuando se te solicite inicializar los discos, acepta las selecciones predeterminadas y haz clic en Aceptar.
  4. Crea una partición para discos SSD locales:

    Para ubicar un disco SSD local, haz clic con el botón derecho en él y selecciona Propiedades. El nombre de las propiedades del disco SSD local será Google EphemeralDisk para una interfaz SCSI o nvme_card para una interfaz NVMe. Los SSD locales y los persistentes se marcan como con particiones Unallocated.

    1. Si la VM contiene solo 1 unidad SSD local, sigue estos pasos:

      1. En la lista de unidades de disco, haz clic derecho en el disco SSD local de 374.98 GB y selecciona Nuevo volumen simple.
      2. En la pantalla de bienvenida, haz clic en Siguiente para iniciar el asistente de volumen de disco.
      3. En el paso Especificar el tamaño del volumen, deja el tamaño del volumen en el valor predeterminado y haz clic en Siguiente para continuar.
      4. En el paso Asignar letra de unidad o ruta de acceso, elige P: como letra de unidad y haz clic en Siguiente para continuar.
      5. En el paso Formato del volumen, cambia el Tamaño de unidad de asignación por 8192 y, luego, ingresa “pagefile” en Etiqueta de volumen. Haz clic en Siguiente para continuar.

        Asistente de volumen nuevo

      6. Haz clic en Finalizar para completar el asistente de volumen de disco.

    2. Si la VM contiene varias unidades SSD locales, sigue estos pasos:

      1. En la lista de unidades de disco, haz clic derecho en el primer disco SSD local de 374.98 GB y selecciona New Striped Volume.
      2. En la pantalla de bienvenida, haz clic en Siguiente para iniciar el asistente de volumen de disco.
      3. En el paso Select Disks, agrega todos los discos disponibles con el tamaño de 383,982 MB a la sección seleccionada. Haz clic en Siguiente para continuar.

        Agregar discos seccionados

      4. En el paso Asignar letra de unidad o ruta de acceso, elige P: como letra de unidad y haz clic en Siguiente para continuar.

      5. En el paso Formato del volumen, cambia el Tamaño de unidad de asignación por 8192 y, luego, ingresa “pagefile” en Etiqueta de volumen. Haz clic en Siguiente para continuar.

        Asistente de volumen nuevo

      6. Haz clic en Finalizar para completar el asistente de volumen de disco.

  5. Repite los pasos anteriores a fin de crear un New Simple Volume para el disco SSD, con los siguientes tres cambios:

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 de verificación Administrar de manera automática el tamaño del archivo de paginación para todas las unidades. El sistema ya debe haber configurado tu archivo de paginación en la unidad C:\. Es necesario que lo muevas.
  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

Establece el perfil de energía como 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 vienen con Management Studio instalado. 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 la unidad C:\, incluidas las bases de datos del sistema. Para optimizar tu configuración, mueve esos archivos a la nueva unidad D:\ que creaste. Recuerda también crear todas las bases de datos nuevas en la unidad D:\. Debido a que estás usando un disco persistente SSD, no necesitas almacenar los archivos de datos y los archivos de registro en particiones de disco separadas.

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 nueva ruta de instalación 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 por 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 de la base de datos de configuración principal y reiniciar, deberás configurar el sistema para que apunte a la nueva ubicación del modelo y las bases de datos MSDB. A continuación, se muestra 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. Usa el explorador de archivos de Windows para mover los archivos físicos de la unidad C:\ donde se encontraba la base de datos master al directorio D:\SQLData.
  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 algunas opciones de configuración adicionales. Comienza con los permisos para la cuenta de usuario de Windows creada con el fin de ejecutar tu proceso de SQL Server, que se llama NT Service\MSSQLSERVER.

Concede el permiso Lock Pages in Memory

El permiso de política de grupo Lock Pages in Memory evita que Windows mueva páginas de la memoria física a la memoria virtual. Para mantener la memoria física organizada y con espacio, Windows intenta intercambiar páginas antiguas y que se modifican poco 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. Cuando se otorga el permiso de política de grupo Lock Pages in Memory a la cuenta de servicio de SQL Server, se evita este intercambio.

Lleva a cabo los pasos siguientes:

  1. Haz clic en Inicio y, luego, busca Edit Group Policy para abrir la consola.
  2. Expande Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > 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 Aceptar (OK) dos veces.
  8. Mantén abierta la consola Editor de políticas 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. Por desgracia, esta configuración solo funciona con archivos de datos. En una sección próxima, obtendrás 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 política de grupo, llamado Perform volume maintenance tasks.

  1. En Editor de políticas 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 opciones de configuración.

Configura tempdb

Se solía recomendar optimizar el uso de CPU de SQL Server mediante la creación de un archivo tempdb por cada CPU. Sin embargo, debido a que el número de CPU ha crecido con el tiempo, seguir este consejo puede hacer que el rendimiento disminuya. Como punto de partida recomendado, usa 4 archivos tempdb. A medida que mides el rendimiento de tu sistema, en casos excepcionales puede que necesites aumentar de forma gradual el número de archivos tempdb hasta un máximo de 8.

Puedes ejecutar una secuencia de comandos de Transact-SQL (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 si quieres modificar los tamaños de archivo y crear tres archivos de datos adicionales para el 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, debes quitar 3 archivos tempdb adicionales 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 una vez más.

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

Transferiste con éxito tus archivos tempdb a la partición SSD local. Este movimiento conlleva algunos riesgos, que mencionamos antes, pero si se pierden por algún motivo, SQL Server vuelve a compilar los archivos tempdb. El cambio de ubicación de tempdb te brinda el rendimiento adicional del SSD local y disminuye las IOPS usadas en tus discos persistentes.

Configura max degree of parallelism

La configuración predeterminada recomendada para max degree of parallelism es hacerla coincidir 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 estás usando una instancia de 16 o 32 núcleos, puedes establecer el valor max degree of parallelism como 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. En el siguiente ejemplo de T-SQL, se ajusta max server memory a 100 GB. Modifícalo para que el valor coincida con tu instancia. Para obtener más información, consulta el documento de opciones de configuración de memoria del servidor.

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 las Recomendaciones para las instancias de SQL Server a fin de obtener más información sobre actividades operativas, otras consideraciones de rendimiento y capacidades de Enterprise Edition.

Limpia

Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. 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, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

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

Borra instancias

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

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

    Ir a Instancias de VM

  2. Selecciona tu instancia en la casilla de verificación de es la instancia que deseas borrar.
  3. Para borrar la instancia, haz clic en Más acciones, haz clic en Borrar y, luego, sigue las instrucciones.

Borra discos persistentes

Para borrar el disco persistente:

  1. En la consola de Google Cloud, ve a la página Discos.

    Ir a 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