Creazione di un'istanza SQL Server ad alte prestazioni


Questo tutorial mostra come creare un'istanza VM Compute Engine che esegue SQL Server ottimizzata per le prestazioni. Questo tutorial descrive la procedura per creare l'istanza e configurare SQL Server per ottenere le prestazioni ottimali su Google Cloud. Scoprirai una serie di opzioni di configurazione disponibili per aiutarti a regolare le prestazioni del sistema.

Questo tutorial utilizza SQL Server Standard Edition 2022, pertanto non tutte le opzioni di configurazione presentate in questa guida sono adatte a tutti e non tutte offrono vantaggi di prestazioni evidenti per ogni carico di lavoro.

Obiettivi

  • Configurazione dell'istanza Compute Engine e dei dischi.
  • Configurazione del sistema operativo Windows.
  • Configurazione di SQL Server.

Costi

Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:

  • Istanza Compute Engine con molta memoria
  • Archiviazione su disco permanente SSD di Compute Engine
  • Spazio di archiviazione su disco SSD locale di Compute Engine
  • Immagine preconfigurata di SQL Server Standard

Il Calcolatore prezzi può generare una stima dei costi in base all'utilizzo previsto. Il link fornito mostra la stima del costo per i prodotti utilizzati in questo tutorial, che può costare più di 4 dollari per ora e più di 3000 dollari al mese. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

Creazione della VM Compute Engine con i dischi

Per creare un'istanza SQL Server ad alte prestazioni, devi prima creare un'istanza VM con SQL Server e due dischi permanenti.

Considerazioni sui dischi permanenti

Per selezionare il tipo di dischi permanenti per la tua VM, esamina le seguenti considerazioni:

  • Un SSD locale fornisce una posizione ad alte prestazioni per tempdb e il file di paging di Windows.

    Quando utilizzi un'unità SSD locale, devi tenere presente alcune considerazioni importanti. Quando arresti l'istanza da Windows o la reimposti utilizzando l'API, l'SSD locale viene rimosso. Questa azione rende l'istanza non avviabile. Per far funzionare di nuovo la macchina, devi scollegare i dischi permanenti, creare una nuova istanza con questi dischi e definire una nuova unità SSD locale. Dopo l'avvio, dovrai anche formattare il nuovo disco e riavviare. Pertanto, non dovresti archiviare in modo permanente dati critici su un'unità SSD locale o spegnere l'istanza, a meno che tu non sia pronto a ricostruirla.

  • Un disco permanente SSD offre spazio di archiviazione ad alte prestazioni per i file del database.

    Le prestazioni di Persistent Disk si basano su un calcolo che utilizza il numero di CPU e le dimensioni del disco. Con 32 vCPU e un disco da 1 TB, il picco di prestazioni è di 40.000 operazioni di lettura al secondo (ops) e 30.000 operazioni di scrittura. La velocità effettiva totale sostenuta per le letture e le scritture è rispettivamente di 800 MB al secondo e 400 MB al secondo. Queste misurazioni rappresentano la somma di tutti i dischi permanenti collegati alla macchina virtuale, incluso il drive C:\. Ecco perché devi creare un'unità SSD locale per scaricare tutte le IOPS necessarie per il file di paging, tempdb, i dati di staging e i backup.

Per scoprire di più sulle prestazioni dei dischi, consulta Configurare i dischi per soddisfare i requisiti di prestazioni.

Creazione di una VM Compute Engine con dischi

Per creare una VM con SQL Server 2022 Standard preinstallato su Windows Server 2022, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. In Nome, inserisci ms-sql-server.

  3. Nella sezione Configurazione macchina, seleziona General Purpose, quindi procedi nel seguente modo:

    1. Nell'elenco Serie, fai clic su N2.
    2. Nell'elenco Tipo di macchina, fai clic su n2-highmem-16 (16 vCPU, 128 GB di memoria).
  4. Nella sezione Disco di avvio, fai clic su Cambia e poi:

    1. Nella scheda Immagini pubbliche, fai clic sull'elenco Sistema operativo e poi seleziona SQL Server su Windows Server.
    2. Nell'elenco Versione, fai clic su SQL Server 2022 Standard su Windows Server 2022 Datacenter.
    3. Nell'elenco Tipo di disco di avvio, fai clic su Disco permanente standard.
    4. Nel campo Dimensioni (GB), imposta la dimensione del disco di avvio su 50 GB.
    5. Per salvare la configurazione del disco di avvio, fai clic su Seleziona.
  5. Espandi la sezione Opzioni avanzate e segui questi passaggi:

    1. Espandi la sezione Dischi.
    2. Per creare i dischi locali, fai clic su Aggiungi SSD locale e poi segui questi passaggi:

      1. Nell'elenco Interfaccia, seleziona il protocollo che soddisfa i requisiti di prestazioni del sistema.
      2. Nell'elenco Capacità del disco, seleziona una capacità del disco che supporti le dimensioni previste dei file tempdb.
      3. Per completare la creazione del disco, fai clic su Salva.
    3. Per creare altri dischi, fai clic su Aggiungi nuovo disco.

      1. Mantieni invariato il campo Name (Nome).
      2. Nell'elenco Tipo di disco di origine, seleziona Disco vuoto.
      3. Nell'elenco Tipo di disco, seleziona Disco permanente SSD.
      4. Nel campo Dimensione, inserisci la dimensione del disco che può contenere le dimensioni del database.
      5. Per completare la creazione del secondo disco, fai clic su Salva.
  6. Per creare la VM, fai clic su Crea.

Configurazione di Windows

Ora che hai un'istanza funzionante che esegue SQL Server, connettiti all'istanza e configura il sistema operativo Windows. Successivamente, scoprirai come configurare SQL Server in una sezione successiva.

Connettiti all'istanza

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Nella colonna Nome, fai clic sul nome dell'istanza, ms-sql-server.

  3. Nella parte superiore della pagina dei dettagli dell'istanza, fai clic sul pulsante Imposta password Windows.

  4. Specifica un nome utente.

  5. Fai clic su Imposta per generare una nuova password per questa istanza Windows.

  6. Prendi nota del nome utente e della password per poter accedere all'istanza.

  7. Connettiti all'istanza utilizzando RDP.

Configurazione dei volumi dei dischi

Crea e formatta i volumi:

  1. Dal menu Start, cerca "Gestione computer" e apri l'app.
  2. Nella sezione Archiviazione, seleziona Gestione disco.
  3. Quando ti viene chiesto di inizializzare i dischi, accetta le selezioni predefinite e fai clic su OK.
  4. Crea una partizione per i dischi SSD locali:

    Per individuare un disco SSD locale, fai clic con il tasto destro del mouse su un disco e seleziona Proprietà. Il nome delle proprietà del disco SSD locale sarà Google EphemeralDisk per un'interfaccia SCSI o nvme_card per un'interfaccia NVMe. Sia le unità SSD locali che quelle permanenti sono contrassegnate come con partizioni Unallocated.

    1. Se la VM contiene un solo disco SSD locale, segui questi passaggi:

      1. Nell'elenco dei dischi, fai clic con il tasto destro del mouse sul disco SSD locale da 374,98 GB e seleziona Nuovo volume semplice.
      2. Nella schermata di benvenuto, fai clic su Avanti per avviare la procedura guidata per i volumi del disco.
      3. Nel passaggio Specifica la dimensione del volume, lascia la dimensione del volume sul valore predefinito e fai clic su Avanti per continuare.
      4. Nel passaggio Assegna lettera o percorso unità, scegli P: per la lettera dell'unità e fai clic su Avanti per continuare.
      5. Nel passaggio Formatta volume, modifica la Dimensione unità di allocazione in 8192 e inserisci "file di pagina" per l'Etichetta volume. Fai clic su Avanti per continuare.

        Assistente per la creazione di un nuovo volume

      6. Fai clic su Fine per completare la procedura guidata del volume del disco.

    2. Se la VM contiene più unità SSD locali:

      1. Nell'elenco dei dischi, fai clic con il tasto destro del mouse sul primo disco SSD locale da 374,98 GB e seleziona Nuovo volume a strisce.
      2. Nella schermata di benvenuto, fai clic su Avanti per avviare la procedura guidata per i volumi del disco.
      3. Nel passaggio Seleziona dischi, aggiungi alla sezione Selezionati tutti i dischi disponibili con dimensioni pari a 383.982 MB. Fai clic su Avanti per continuare.

        Aggiungere dischi a strisce

      4. Nel passaggio Assegna lettera o percorso unità, scegli P: per la lettera dell'unità e fai clic su Avanti per continuare.

      5. Nel passaggio Formatta volume, modifica la Dimensione unità di allocazione in 8192 e inserisci "file di pagina" per l'Etichetta volume. Fai clic su Avanti per continuare.

        Assistente per la creazione di un nuovo volume

      6. Fai clic su Fine per completare la procedura guidata del volume del disco.

  5. Ripeti i passaggi precedenti per creare un Nuovo volume semplice per il disco SSD, con le seguenti tre modifiche:

    • Scegli D: per la lettera del volume.

    • Imposta Dimensione unità di allocazione su 64k.

      Per informazioni dettagliate sulla selezione della dimensione dell'unità di allocazione, consulta Best practice per le istanze SQL Server.

    • Inserisci sqldata per l'Etichetta del volume.

Spostare il file di paging di Windows

Ora che i nuovi volumi sono stati creati e montati, sposta il file di paging di Windows sull'unità SSD locale, liberando le IOPS del disco permanente e migliorando il tempo di accesso della memoria virtuale.

  1. Dal menu Start, cerca Visualizza impostazioni di sistema avanzate e poi apri la finestra di dialogo.
  2. Fai clic sulla scheda Avanzate e nella sezione Rendimento, fai clic su Impostazioni.
  3. Nella sezione Memoria virtuale, fai clic sul pulsante Cambia.
  4. Deseleziona la casella di controllo Gestisci automaticamente le dimensioni dei file di paging per tutti i dischi. Il sistema dovrebbe aver già configurato il file di paging sul drive C:\ e devi spostarlo.
  5. Fai clic su C: e poi sul pulsante di opzione Nessun file di paging.
  6. Fai clic sul pulsante Imposta.
  7. Per creare il nuovo file di paging, fai clic sul disco P: e poi sul pulsante di opzione Dimensione gestita dal sistema.
  8. Fai clic sul pulsante Imposta.
  9. Fai clic su OK tre volte per uscire dalle proprietà di sistema avanzate.

    L'Assistenza Microsoft ha pubblicato ulteriori suggerimenti per le impostazioni della memoria virtuale.

Impostazione del profilo di alimentazione

Imposta il profilo di alimentazione su High-Performance anziché Balanced.

  1. Nel menu Start, cerca "Scegli un piano di risparmio energetico" e apri le opzioni di risparmio energetico.
  2. Seleziona il pulsante di opzione Elevate prestazioni.
  3. Esci dalla finestra di dialogo.

Configurazione di SQL Server

Utilizza SQL Server Management Studio per eseguire la maggior parte delle attività amministrative. Le immagini preconfigurate per SQL Server sono fornite con Management Studio già installato. Avvia Management Studio e fai clic su Connetti per collegarti al database predefinito.

Spostare i file di dati e log

L'immagine preconfigurata per SQL Server include tutto ciò che è installato sul disco C:\, inclusi i database di sistema. Per ottimizzare la configurazione, sposta questi file nel nuovo account D:\ che hai creato. Ricorda inoltre di creare tutti i nuovi database sul drive D:\. Poiché utilizzi un'unità SSD, non è necessario archiviare i file di dati e i file di log su partizioni del disco separate.

Esistono due modi per spostare l'installazione sul disco secondario: utilizzando il programma di installazione o spostando i file manualmente.

Utilizzo del programma di installazione

Per utilizzare il programma di installazione, esegui c:\setup.exe e seleziona un nuovo percorso di installazione sul disco secondario.

Spostare i file manualmente

Sposta i database di sistema e configura SQL Server in modo da salvare i dati e i file di log sullo stesso volume:

  1. Crea una nuova cartella denominata D:\SQLData.
  2. Apri una finestra di comando.
  3. Inserisci il seguente comando per concedere l'accesso completo a NT Service\MSSQLSERVER:

    icacls D:\SQLData /Grant "NT Service\MSSQLServer:(OI)(CI)F"
    
  4. Utilizza Management Studio e le seguenti guide per spostare i database di sistema e modificare le posizioni dei file predefinite per i nuovi database.

  5. Se prevedi di utilizzare le funzionalità di Report Server, sposta anche i file ReportServer e ReportServerTempDB.

Dopo aver spostato i file del database di configurazione principale e aver riavviato, devi configurare il sistema in modo che indichi la nuova posizione dei database MSDB e del modello. Ecco uno script di supporto da eseguire in 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' )

Dopo aver eseguito questi comandi:

  1. Utilizza lo snap-in services.msc per arrestare il servizio del database SQL Server.
  2. Utilizza Esplora risorse di Windows per spostare i file fisici dal drive C:\ dove si trovava il database master alla directory D:\SQLData.
  3. Avvia il servizio di database SQL Server.

Impostazione delle autorizzazioni di sistema

Dopo aver spostato i database di sistema, modifica alcune impostazioni aggiuntive, iniziando con le autorizzazioni per l'account utente Windows creato per eseguire il processo SQL Server, denominato NT Service\MSSQLSERVER.

Concedere l'autorizzazione Lock Pages in Memory

L'autorizzazione Lock Pages in Memory del criterio di gruppo impedisce a Windows di spostare le pagine nella memoria fisica nella memoria virtuale. Per mantenere la memoria fisica libera e organizzata, Windows tenta di spostare le pagine vecchie e raramente modificate nel file di paging della memoria virtuale su disco.

SQL Server memorizza informazioni importanti in memoria, ad esempio strutture di tabelle, piani di esecuzione e query memorizzate nella cache. Alcune di queste informazioni cambiano raramente, quindi diventano un target per il file di paging. Se queste informazioni vengono spostate nel file di paging, le prestazioni di SQL Server possono peggiorare. La concessione dell'autorizzazione del criterio di gruppo Lock Pages in Memory per l'account di servizio di SQL Server impedisce questo scambio.

Segui questi passaggi:

  1. Fai clic su Start, quindi cerca Modifica Criteri di gruppo per aprire la console.
  2. Espandi Criteri del computer locale > Configurazione computer > Impostazioni di Windows > Impostazioni di sicurezza > Criteri locali > Assegnazione diritti utente.
  3. Cerca Blocca pagine in memoria e fai doppio clic sull'opzione.
  4. Fai clic su Aggiungi utente o gruppo.
  5. Cerca "NT Service\MSSQLSERVER".
  6. Se vengono visualizzati più nomi, fai doppio clic sul nome MSSQLSERVER.
  7. Fai clic su OK due volte.
  8. Tieni aperta la console Editor Criteri di gruppo.

Bloccare le pagine

Concedere l'autorizzazione Perform volume maintenance tasks

Per impostazione predefinita, quando un'applicazione richiede a Windows uno spazio su disco, il sistema operativo individua uno spazio di dimensioni appropriate e azzera l'intero spazio prima di restituirlo all'applicazione. Poiché SQL Server è efficace nell'aumentare i file e riempire lo spazio su disco, questo comportamento non è ottimale.

Esiste un'API separata per l'allocazione di spazio su disco a un'applicazione, spesso menzionata come inizializzazione istantanea dei file. Purtroppo, questa impostazione funziona solo per i file di dati, ma nella prossima sezione scoprirai di più sulla crescita dei file di log. L'inizializzazione istantanea dei file richiede che l'account di servizio che esegue il processo SQL Server disponga di un'altra autorizzazione dei criteri di gruppo, denominata Perform volume maintenance tasks.

  1. In Editor Criteri di gruppo, cerca "Esegui attività di manutenzione del volume".
  2. Aggiungi l'account "NT Service\MSSQLSERVER" come nella sezione precedente.
  3. Riavvia il processo SQL Server per attivare entrambe le impostazioni.

Configurazione di tempdb in corso…

In passato, era buona prassi ottimizzare l'utilizzo della CPU di SQL Server creando un file tempdb per CPU. Tuttavia, poiché il numero di CPU è aumentato nel tempo, seguire questa linea guida può causare una diminuzione delle prestazioni. Come punto di partenza, utilizza 4 file tempdb. Mentre misuri le prestazioni del sistema, in rari casi potrebbe essere necessario aumentare gradualmente il numero di file tempdb fino a un massimo di 8.

Puoi eseguire uno script Transact-SQL (T-SQL) in SQL Server Management Studio per spostare i file tempdb in una cartella della unità "p".

  1. Crea la directory p:\tempdb.
  2. Concedi l'accesso completo alla sicurezza all'account utente "NT Service\MSSQLSERVER":

    icacls p:\tempdb /Grant "NT Service\MSSQLServer:(OI)(CI)F"
    
  3. Esegui il seguente script in SQL Server Management Studio per spostare il file di dati e il file di log 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. Riavvia SQL Server.

  5. Esegui il seguente script per modificare le dimensioni dei file e creare altri tre file di dati per il nuovo tempdb.

    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
    

    Se utilizzi SQL Server 2016, dopo aver eseguito i passaggi precedenti devi rimuovere altri 3 file tempdb:

    ALTER DATABASE [tempdb] REMOVE FILE temp2;
    ALTER DATABASE [tempdb] REMOVE FILE temp3;
    ALTER DATABASE [tempdb] REMOVE FILE temp4;
    
  6. Riavviare di nuovo SQL Server.

  7. Elimina i file model, MSDB, master e tempdb dalla posizione originale sul drive C:\.

Hai spostato correttamente i file tempdb nella partizione dell'unità SSD locale. Questa operazione comporta alcuni rischi, menzionati in precedenza, ma se per qualsiasi motivo vengono persi,SQL Server ricostruisce i file tempdb. Se sposti tempdb, puoi usufruire delle prestazioni aggiuntive dell'unità SSD locale e ridurre le IOPS utilizzate sui dischi permanenti.

Configurazione di max degree of parallelism in corso…

L'impostazione predefinita consigliata per max degree of parallelism è impostarla sul numero di CPU sul server. Tuttavia, esiste un punto in cui l'esecuzione di una query in 16 o 32 chunk paralleli e l'unione dei risultati è molto più lenta rispetto all'esecuzione in un'unica operazione. Se utilizzi un'istanza a 16 o 32 core, puoi impostare il valore max degree of parallelism su 8 utilizzando il seguente codice 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

Configurazione di max server memory in corso…

Per impostazione predefinita, questo valore è molto elevato, ma ti consigliamo di impostarlo sul numero di megabyte di RAM fisica disponibile, meno un paio di gigabyte per il sistema operativo e il sovraccarico. L'esempio T-SQL seguente modifica max server memory in 100 GB. Modificalo per regolare il valore in base alla tua istanza. Per ulteriori informazioni, consulta il documento Opzioni di configurazione del server di memoria del server.

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

Completamento in corso

Riavvia l'istanza un'altra volta per assicurarti che tutte le nuove impostazioni vengano applicate. Il sistema SQL Server è configurato e puoi creare i tuoi database e iniziare a testare i tuoi carichi di lavoro specifici. Consulta la guida alle best practice di SQL Server per ulteriori informazioni sulle attività operative, su altri aspetti relativi al rendimento e sulle funzionalità della versione Enterprise.

Esegui la pulizia

Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che smettano di utilizzare la quota e di generare addebiti. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Eliminazione di istanze

Per eliminare un'istanza di Compute Engine:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

Eliminazione dei dischi permanenti

Per eliminare il Persistent Disk:

  1. Nella console Google Cloud, vai alla pagina Dischi.

    Vai a Dischi

  2. Seleziona la casella di controllo accanto al nome del disco da eliminare.

  3. Fai clic sul pulsante Elimina nella parte superiore della pagina.

Passaggi successivi