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. 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 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 componentes facturables de Google Cloud Platform, que incluyen lo siguiente:

  • 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

Con la calculadora de precios puedes estimar el costo en función del uso previsto. El vínculo provisto muestra el costo estimado de los productos que se usan en este instructivo, que pueden tener un valor de más de $4 por hora y más $3,000 por mes. Los usuarios nuevos de Google 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.

    Hay algunas consideraciones importantes a tener en cuenta si se usa un SSD local. El SSD local se quita cuando cierras tu instancia de Windows o la restableces con la API. Llevar a cabo esta acción hace que la instancia no pueda iniciarse. Para que la máquina vuelva a ejecutarse, necesitarías separar tus discos persistentes, crear una nueva instancia con ellos y, luego, definir un nuevo SSD local. Después del inicio, también deberías 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 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/s y 400 MB/s 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.

Para obtener más información sobre el rendimiento del disco, consulta Optimiza el rendimiento de los discos persistentes y SSD locales.

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 estás usando un cliente de RDP diferente, como 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. El SSD local y el SSD persistente se marcan como 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) por 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. Con 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.

Soluciona el 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 la letra de unidad y las 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 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 2014 vienen con Management Studio instalado, pero si usas la imagen de SQL Server 2016, debes descargarla y, también, instalarla de forma manual. 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 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 principales 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. 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 para la cuenta de servicio de SQL Server se evita este intercambio.

Sigue estos pasos:

  1. Haz clic en Inicio y, luego, busca Editar política de grupo para abrir la consola.
  2. Expande Política de computadora local (Local Computer Policy) > Configuración de computadora (Computer Configuration) > Configuración de Windows (Windows Settings) > Políticas 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 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 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:\.

Moviste 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 la configuración nueva surta 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.

Realiza una limpieza

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, sigue estos pasos:

  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.

Borra instancias

Para borrar una instancia de Compute Engine, sigue estos pasos:

  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, sigue estos 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...

Compute Engine: Virtual Machines (VMs)