Questo tutorial mostra come creare un'istanza VM di Compute Engine che esegue SQL Server ottimizzato per le prestazioni. Questo tutorial ti guida nella creazione dell'istanza e nella successiva configurazione di SQL Server per ottenere prestazioni ottimali su Google Cloud. Scoprirai una serie di opzioni di configurazione disponibili per regolare le prestazioni del sistema.
Questo tutorial utilizza SQL Server Standard Edition 2022, quindi non tutte le opzioni di configurazione presentate in questa guida funzionano per tutti e non tutte offrono vantaggi in termini 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 componenti fatturabili di Google Cloud, tra cui:
- Istanza Compute Engine ad alta 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 dei costi per i prodotti utilizzati in questo tutorial, che possono costare oltre 4 dollari (USA) all'ora e oltre 3000 dollari al mese.
Prima di iniziare
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Creazione della VM Compute Engine con dischi
Per creare un'istanza SQL Server ad alte prestazioni, devi prima creare un'istanza VM con SQL Server e due volumi Persistent Disk.
Considerazioni su Persistent Disk
Per selezionare il tipo di volumi di Persistent Disk per la tua VM, esamina le seguenti considerazioni:
Un disco SSD locale fornisce una posizione ad alte prestazioni per
tempdb
e il file di paging di Windows.Esistono alcune considerazioni importanti da tenere presenti quando si utilizza un disco SSD locale. Quando arresti l'istanza da Windows o la reimposti utilizzando l'API, il disco SSD locale viene rimosso. Questa azione rende l'istanza non avviabile. Per riavviare la macchina, devi scollegare i dischi permanenti, creare una nuova istanza con questi dischi e poi definire un nuovo disco SSD locale. Dopo l'avvio, dovrai anche formattare il nuovo disco e riavviare. Pertanto, non devi archiviare in modo permanente dati critici su un disco SSD locale o spegnere l'istanza, a meno che tu non sia pronto a ricrearla.
Un disco permanente SSD fornisce spazio di archiviazione ad alte prestazioni per i file di 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, le prestazioni raggiungono un picco 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 volumi del Persistent Disk collegati alla macchina virtuale, inclusa l'unità
C:\
. Per garantire prestazioni coerenti, crea un disco SSD locale e scarica tutte le IOPS necessarie per il file di paging,tempdb
, i dati di staging e i backup.
Per saperne di più sulle prestazioni del disco, consulta Configurare i dischi per soddisfare i requisiti di prestazioni.
Creazione di una VM di Compute Engine con dischi
Per creare una VM con SQL Server 2022 Standard preinstallato su Windows Server 2022, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Crea un'istanza.
In Nome, inserisci
ms-sql-server
.Nella sezione Configurazione macchina, seleziona Per uso generico, quindi procedi nel seguente modo:
- Nell'elenco Serie, fai clic su N2.
- Nell'elenco Tipo di macchina, fai clic su n2-highmem-16 (16 vCPU, 128 GB di memoria).
Nella sezione Disco di avvio, fai clic su Cambia e poi:
- Nella scheda Immagini pubbliche, fai clic sull'elenco Sistema operativo e seleziona SQL Server su Windows Server.
- Nell'elenco Versione, fai clic su SQL Server 2022 Standard su Windows Server 2022 Datacenter.
- Nell'elenco Tipo di disco di avvio, fai clic su Disco permanente standard.
- Nel campo Dimensioni (GB), imposta le dimensioni del disco di avvio su 50 GB.
- Per salvare la configurazione del disco di avvio, fai clic su Seleziona.
Espandi la sezione Opzioni avanzate e segui questi passaggi:
- Espandi la sezione Dischi.
Per creare dischi locali, fai clic su Aggiungi SSD locale e poi esegui le seguenti operazioni:
- Nell'elenco Interfaccia, seleziona il protocollo che soddisfa i requisiti di rendimento del tuo sistema.
- Nell'elenco Capacità disco, seleziona una capacità del disco che supporti
le dimensioni previste dei file
tempdb
. - Per completare la creazione di questo disco, fai clic su Salva.
Per creare dischi aggiuntivi, fai clic su Aggiungi nuovo disco.
- Lascia invariato il campo Name (Nome).
- Nell'elenco Tipo di disco di origine, seleziona Disco vuoto.
- Nell'elenco Tipo di disco, seleziona Disco permanente SSD.
- Nel campo Dimensioni, inserisci le dimensioni del disco in grado di ospitare le dimensioni del database.
- Per completare la creazione del secondo disco, fai clic su Salva.
Per creare la VM, fai clic su Crea.
Configurazione di Windows
Ora che hai un'istanza funzionante che esegue SQL Server, connettiti alla tua istanza e configura il sistema operativo Windows. Successivamente, imparerai a configurare SQL Server in una sezione successiva.
Connettiti all'istanza
Nella console Google Cloud , vai alla pagina Istanze VM.
Nella colonna Nome, fai clic sul nome dell'istanza,
ms-sql-server
.Nella parte superiore della pagina dei dettagli dell'istanza, fai clic sul pulsante Imposta password di Windows.
Specifica un nome utente.
Fai clic su Imposta per generare una nuova password per questa istanza Windows.
Prendi nota del nome utente e della password in modo da poter accedere all'istanza.
Connettiti all'istanza utilizzando RDP.
Configurazione dei volumi del disco
Crea e formatta i volumi:
- Dal menu Start, cerca "Gestione computer" e poi aprilo.
- Nella sezione Archiviazione, seleziona Gestione disco.
- Quando ti viene chiesto di inizializzare i dischi, accetta le selezioni predefinite e fai clic su Ok.
Crea la 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 onvme_card
per un'interfaccia NVMe. Sia i dischi SSD locali che gli SSD permanenti sono contrassegnati come aventi partizioniUnallocated
.Se la VM contiene un solo disco SSD locale, segui questi passaggi:
- Sotto l'elenco delle unità disco, fai clic con il tasto destro del mouse sul disco SSD locale da 374,98 GB e seleziona Nuovo volume semplice.
- Nella schermata di benvenuto, fai clic su Avanti per avviare la procedura guidata per il volume del disco.
- Nel passaggio Specifica le dimensioni del volume, lascia le dimensioni del volume al valore predefinito e fai clic su Avanti per continuare.
- Nel passaggio Assegna lettera o percorso unità, scegli P: per la lettera unità e fai clic su Avanti per continuare.
Nel passaggio Formatta volume, modifica le Dimensioni unità di allocazione a 8192 e inserisci "pagefile" per l'Etichetta volume. Fai clic su Avanti per continuare.
Fai clic su Fine per completare la procedura guidata per il volume del disco.
Se la VM contiene più unità SSD locali, segui questi passaggi:
- Sotto l'elenco delle unità disco, fai clic con il tasto destro del mouse sul primo disco SSD locale da 374,98 GB e seleziona Nuovo volume con striping.
- Nella schermata di benvenuto, fai clic su Avanti per avviare la procedura guidata per il volume del disco.
Nel passaggio Seleziona dischi, aggiungi tutti i dischi disponibili con dimensione 383.982 MB alla sezione Selezionati. Fai clic su Avanti per continuare.
Nel passaggio Assegna lettera o percorso unità, scegli P: per la lettera unità e fai clic su Avanti per continuare.
Nel passaggio Formatta volume, modifica le Dimensioni unità di allocazione a 8192 e inserisci "pagefile" per l'Etichetta volume. Fai clic su Avanti per continuare.
Fai clic su Fine per completare la procedura guidata per il volume del disco.
Ripeti i passaggi precedenti per creare un Nuovo volume semplice per il disco SSD, con le seguenti tre modifiche:
Scegli D: per la lettera di unità.
Imposta Dimensioni unità di allocazione su
64k
.Per informazioni dettagliate sulla selezione di una dimensione dell'unità di allocazione, consulta Best practice per le istanze SQL Server.
Inserisci
sqldata
per l'etichetta del volume.
Spostamento del file di paging di Windows
Ora che i nuovi volumi sono stati creati e montati, sposta il file di paging di Windows sul disco SSD locale, il che libera IOPS del disco permanente e migliora il tempo di accesso della memoria virtuale.
- Dal menu Start, cerca Visualizza impostazioni di sistema avanzate e poi apri la finestra di dialogo.
- Fai clic sulla scheda Avanzate e, nella sezione Rendimento, fai clic su Impostazioni.
- Nella sezione Memoria virtuale, fai clic sul pulsante Cambia.
- Deseleziona la casella di controllo Gestisci automaticamente le dimensioni del file di paging per tutte le unità. Il sistema dovrebbe aver già configurato il file di paging sull'unità
C:\
e devi spostarlo. - Fai clic su C: e poi sul pulsante di opzione Nessun file di paging.
- Fai clic sul pulsante Imposta.
- Per creare il nuovo file di paging, fai clic sull'unità P:, quindi fai clic sul pulsante di opzione Dimensioni gestite dal sistema.
- Fai clic sul pulsante Imposta.
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
.
- Nel menu Start, cerca "Scegli un risparmio energia" e apri le opzioni di risparmio energia.
- Seleziona il pulsante di opzione Prestazioni elevate.
- Chiudi la 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 dotate di Management Studio già installato. Avvia Management Studio e fai clic su Connetti per connetterti al database predefinito.
Spostamento dei file di dati e log
L'immagine preconfigurata per SQL Server viene fornita con tutto installato sull'unità C:\
, inclusi i database di sistema. Per ottimizzare la configurazione,
sposta questi file nella nuova unità D:\
che hai creato. Ricordati anche di creare
tutti i nuovi database sull'unità D:\
. Poiché utilizzi un SSD, non
devi 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 manualmente i file
Sposta i database di sistema e configura SQL Server per salvare i file di dati e log sullo stesso volume:
- Crea una nuova cartella denominata
D:\SQLData
. - Apri una finestra di comando.
Inserisci il seguente comando per concedere l'accesso completo a
NT Service\MSSQLSERVER
:icacls D:\SQLData /Grant "NT Service\MSSQLServer:(OI)(CI)F"
Utilizza Management Studio e le seguenti guide per spostare i database di sistema e modificare le posizioni predefinite dei file per i nuovi database.
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 riavviato, devi configurare il sistema in modo che punti alla nuova posizione dei database model e MSDB. 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:
- Utilizza lo snap-in
services.msc
per arrestare il servizio di database SQL Server. - Utilizza Esplora risorse di Windows per spostare i file fisici dall'unità
C:\
in cui si trovava il databasemaster
alla directoryD:\SQLData
. - Avvia il servizio di database SQL Server.
Impostazione delle autorizzazioni di sistema
Dopo aver spostato i database di sistema, modifica alcune impostazioni aggiuntive, a partire
dalle autorizzazioni per l'account utente Windows creato per eseguire il processo SQL
Server, denominato NT Service\MSSQLSERVER
.
Concessione dell'autorizzazione Lock Pages in Memory
L'autorizzazione del criterio di gruppo Lock Pages in Memory
impedisce a Windows di
spostare le pagine nella memoria fisica nella memoria virtuale. Per mantenere la memoria
fisica libera e organizzata, Windows tenta di scambiare le pagine vecchie e modificate raramente con
il file di paging della memoria virtuale sul disco.
SQL Server archivia in memoria informazioni importanti, come 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 Lock
Pages in Memory
del criterio di gruppo per l'account di servizio di SQL Server impedisce questo
scambio.
Segui questi passaggi:
- Fai clic su Start e poi cerca Modifica Criteri di gruppo per aprire la console.
- Espandi Criteri computer locale > Configurazione computer > Impostazioni di Windows > Impostazioni di sicurezza > Criteri locali > Assegnazione diritti utente.
- Cerca e fai doppio clic su Blocca pagine in memoria.
- Fai clic su Aggiungi utente o gruppo.
- Cerca "NT Service\MSSQLSERVER".
- Se vedi più nomi, fai doppio clic sul nome MSSQLSERVER.
- Fai clic su Ok due volte.
- Tieni aperta la console Editor Criteri di gruppo.
Concessione dell'autorizzazione Perform volume maintenance tasks
Per impostazione predefinita, quando un'applicazione richiede una porzione di spazio su disco a Windows, il sistema operativo individua un blocco di spazio su disco di dimensioni appropriate, quindi azzera l'intero blocco di disco prima di restituirlo all'applicazione. Poiché SQL Server è in grado di aumentare le dimensioni dei 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
denominata inizializzazione immediata dei file. Purtroppo, questa impostazione funziona solo per i file di dati, ma in una sezione successiva imparerai a gestire la crescita dei file di log. L'inizializzazione immediata dei file richiede che il account di servizio che esegue il processo SQL
Server disponga di un'altra autorizzazione di Criteri di gruppo, denominata Perform volume
maintenance tasks
.
- Nell'Editor Criteri di gruppo, cerca "Esegui attività di manutenzione del volume".
- Aggiungi l'account "NT Service\MSSQLSERVER" come nella sezione precedente.
- Riavvia il processo SQL Server per attivare entrambe le impostazioni.
Configurazione di tempdb
in corso…
In passato, la best practice prevedeva l'ottimizzazione dell'utilizzo della CPU di SQL Server
tramite la creazione di un file tempdb
per CPU. Tuttavia, poiché il numero di CPU è aumentato nel tempo, seguire questa linea guida può causare una riduzione delle prestazioni. Come punto di partenza, utilizza 4 file tempdb
. Man mano che misuri le prestazioni del sistema, in rari casi potresti dover aumentare in modo incrementale il numero di file tempdb
fino a un massimo di 8.
Puoi eseguire uno script Transact-SQL (T-SQL) all'interno di SQL Server Management Studio per
spostare i file tempdb
in una cartella nell'unità `p:`.
- Crea la directory
p:\tempdb
. Concedi l'accesso completo alla sicurezza all'account utente "NT Service\MSSQLSERVER":
icacls p:\tempdb /Grant "NT Service\MSSQLServer:(OI)(CI)F"
Esegui il seguente script in SQL Server Management Studio per spostare il file di dati
tempdb
e il file di log: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
Riavvia SQL Server.
Esegui il seguente script per modificare le dimensioni dei file e creare tre file di dati aggiuntivi 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 tre file
tempdb
:ALTER DATABASE [tempdb] REMOVE FILE temp2; ALTER DATABASE [tempdb] REMOVE FILE temp3; ALTER DATABASE [tempdb] REMOVE FILE temp4;
Riavvia di nuovo SQL Server.
Elimina i file
model
,MSDB
,master
etempdb
dalla posizione originale sull'unitàC:\
.
Hai spostato correttamente i file tempdb
nella partizione del disco SSD locale.
Questo spostamento comporta alcuni rischi, menzionati in precedenza, ma se vengono persi per qualsiasi
motivo,SQL Server ricompila i file tempdb
. Lo spostamento di tempdb
offre le
prestazioni aggiuntive dell'SSD locale e riduce le IOPS utilizzate nei
volumi Persistent Disk.
Impostazione di max degree of parallelism
L'impostazione predefinita consigliata per max degree of parallelism
è di farla corrispondere
al numero di CPU sul server. Tuttavia, esiste un punto in cui l'esecuzione di una
query in 16 o 32 blocchi paralleli e l'unione dei risultati è molto più lenta
rispetto all'esecuzione in un singolo processo. Se utilizzi un'istanza a 16 o 32 core, puoi impostare il valore max degree of parallelism
su 8 utilizzando il seguente 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
Impostazione di max server memory
Questa impostazione è impostata per impostazione predefinita su un numero molto elevato, ma devi impostarla sul numero di megabyte di RAM fisica disponibile, meno un paio di gigabyte per il sistema operativo e l'overhead. L'esempio T-SQL riportato di seguito regola max server memory
su
100 GB. Modificalo per aggiustare il valore in modo che corrisponda alla tua istanza. Per saperne di più, 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. Per saperne di più sulle attività operative, su altre considerazioni sul rendimento e sulle funzionalità di Enterprise Edition, consulta la Guida alle best practice per SQL Server.
Esegui la pulizia
Al termine del tutorial, puoi liberare spazio eliminando le risorse che hai creato in modo che non utilizzino più la quota e non generino addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Eliminazione del progetto
Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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:
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.
Eliminazione dei volumi del disco permanente
Per eliminare il Persistent Disk:
Nella console Google Cloud vai alla pagina Dischi.
Seleziona la casella di controllo accanto al nome del disco che vuoi eliminare.
Fai clic sul pulsante Elimina nella parte superiore della pagina.
Passaggi successivi
- Esegui un test di carico dell'istanza SQL Server.
- Consulta la guida alle best practice per SQL Server.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.