Questo tutorial mostra come utilizzare HammerDB per eseguire test di carico su una Compute Engine SQL Server. Puoi scoprire come installare un'istanza SQL Server utilizzando i seguenti tutorial:
Sono disponibili numerosi strumenti per i test di carico. Alcune sistemazioni sono gratuite e aperte mentre altri richiedono licenze. HammerDB è uno strumento open source che in genere funziona bene di dimostrare le prestazioni del tuo database SQL Server. Questo tutorial tratta i passaggi di base per utilizzare HammerDB, ma sono disponibili altri strumenti e devi selezionare gli strumenti più in linea con i tuoi carichi di lavoro specifici.
Obiettivi
Questo tutorial copre i seguenti obiettivi:- Configurazione di SQL Server per i test di carico
- Installazione ed esecuzione di HammerDB
- Raccolta delle statistiche di runtime
- Esecuzione del benchmark per l'elaborazione delle transazioni ricavato dal TPC "C" test di carico della specifica (TPROC-C)
Costi
Oltre a eventuali istanze SQL Server esistenti in esecuzione Compute Engine, utilizza componenti fatturabili di Google Cloud, tra cui:
- Compute Engine
- Windows Server
Il Calcolatore prezzi può generare un costo
stimata in base all'utilizzo previsto. Il link fornito mostra il costo
per i prodotti usati in questo tutorial, che può raggiungere in media 16 dollari
(USA) al giorno.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Se non utilizzi Windows sul tuo computer locale, installa un'app di terze parti Client RDP (Remote Desktop Protocol). Per ulteriori informazioni, consulta l'articolo sui client di Microsoft Remote Desktop.
Configurazione dell'istanza SQL Server per i test di carico
Prima di iniziare, verifica che il firewall di Windows regole sono configurati in modo da consentire il traffico dall'indirizzo IP della nuova istanza Windows è stato creato. Quindi, crea un nuovo database per i test di carico TPCC e configura un procedendo nel seguente modo:
- Fai clic con il pulsante destro del mouse sulla cartella Database in SQL Server Management Studio e quindi scegli Nuovo database.
- Assegna al nuovo database il nome "TPCC".
- Impostare la dimensione iniziale del file di dati su 190.000 MB e il file di log su 65.000 MB.
Imposta i limiti di Crescita automatica su valori più alti facendo clic sui puntini di sospensione. come mostrato nello screenshot seguente:
Imposta le dimensioni del file di dati in modo che aumentino di 64 MB fino a dimensioni illimitate.
Imposta il file di log in modo da disattivare la crescita automatica.
Fai clic su OK.
Nella finestra di dialogo Nuovo database, nel riquadro a sinistra, scegli Opzioni .
Imposta Livello di compatibilità su SQL Server 2022 (160).
Imposta il Modello di recupero su Semplice, in modo che il caricamento non si riempia. i log delle transazioni.
Fai clic su OK per creare il database TPCC. L'operazione può richiedere alcuni minuti completato.
L'immagine SQL Server preconfigurata include solo l'autenticazione di Windows quindi dovrai attivare l'autenticazione in modalità mista in SSMS, persone che seguo questa guida.
Segui questi passaggi per creare un nuovo account utente SQL Server sul server del database che abbia Autorizzazione DBOwner. Assegna all'account il nome "loaduser" e dai una protezione password.
Prendi nota del tuo indirizzo IP interno di SQL Server utilizzando la proprietà
Get-NetIPAddress
, perché è importante per le prestazioni e la sicurezza per utilizzare l'IP interno.
Installazione di HammerDB
Puoi eseguire HammerDB direttamente sulla tua istanza SQL Server. Tuttavia, per una maggiore un test accurato, creare una nuova istanza Windows e testare l'istanza SQL Server da remoto.
Creazione di un'istanza
Segui questi passaggi per creare una nuova istanza Compute Engine:
Nella console Google Cloud, vai alla pagina Crea un'istanza.
In Nome, inserisci
hammerdb-instance
.Nella sezione Configurazione macchina, seleziona il di tipo di macchina con almeno la metà del numero di CPU come database in esecuzione in un'istanza Compute Engine.
Nella sezione Disco di avvio, fai clic su Cambia, quindi segui questi passaggi:
- Nella scheda Immagini pubbliche, scegli un sistema operativo Windows Server.
- Nell'elenco Versione, fai clic su Windows Server 2022 Datacenter.
- Nell'elenco Tipo di disco di avvio, seleziona Disco permanente standard.
- Per confermare le opzioni del disco di avvio, fai clic su Seleziona.
Per creare e avviare la VM, fai clic su Crea.
Installazione del software
Quando è pronta, utilizza un client RDP per connetterti alla nuova istanza Windows Server e installa il seguente software:
Esecuzione di HammerDB
Dopo aver installato HammerDB, esegui il file hammerdb.bat
. HammberDB
non verranno visualizzate nell'elenco delle applicazioni del menu Start. Utilizza il seguente comando
per eseguire HammerDB:
C:\Program Files\HammerDB-VERSION
\hammerdb.bat
Sostituisci VERSION
con la versione del software installato
HammerDB
Creazione della connessione e dello schema in corso...
Quando l'applicazione è in esecuzione, la prima cosa da fare è configurare la connessione per creare lo schema.
- Fai doppio clic su SQL Server nel riquadro Benchmark.
- Seleziona TPROC-C.
Dal sito di HammerDB:
TPROC-C è il carico di lavoro OLTP implementato in HammerDB, derivato dalla specifica TPROC-C, con modifiche per rendere l'esecuzione di HammerDB semplice ed economica in tutti gli ambienti di database supportati. Il carico di lavoro TPROC-C di HammerDB è un carico di lavoro open source derivato dallo standard di benchmark TPROC-C e in quanto tale non è paragonabile ai risultati TPROC-C pubblicati, poiché i risultati sono conformi a un sottoinsieme anziché allo standard di benchmark TPROC-C completo. Il nome per il carico di lavoro HammerDB TPROC-C significa "Transaction Processing Benchmark derivato dal TPC "C" specifiche".
Fai clic su OK.
Fai clic su Schema e poi su Opzioni.
Compila il modulo utilizzando il tuo indirizzo IP, il tuo nome utente e la tua password, come mostrato nell'immagine seguente:
Imposta il driver ODBC di SQL Server su OBDC Driver 18 per SQL Server
In questo caso, il Numero di magazzini (la scala) è impostato su 460, ma puoi scegliere un valore diverso. Alcune linee guida suggeriscono da 10 a 100 magazzini per CPU. Per questo tutorial, imposta questo valore su 10 volte il numero di core: per un'istanza a 16 core.
Per Virtual Users to Build Schema (Utenti virtuali per lo schema di creazione), scegli un numero compreso tra 1 e Due volte il numero di vCPU client. Puoi fare clic sulla barra grigia accanto dispositivo di scorrimento per incrementare il numero.
Deseleziona Utilizza opzione BPC.
Fai clic su OK.
Fai doppio clic sull'opzione Crea sotto la sezione Creazione schema per crea lo schema e carica le tabelle. Al termine, fai clic sul pulsante l'icona di una torcia in alto al centro dello schermo per distruggere l'utente virtuale e vai al passaggio successivo.
Se hai creato il database con il modello di recupero Simple
, potresti
cambiarlo di nuovo a Full
per ottenere un test più accurato di una
scenario di produzione. Questa modifica avrà effetto solo dopo che avrai eseguito un
di backup differenziale per attivare l'inizio della nuova catena di log.
Creazione dello script del driver
HammerDB utilizza lo script del driver per orchestrare il flusso di SQL al database per generare il carico richiesto.
- Nel riquadro Benchmark, espandi la sezione Script driver e Fai doppio clic su Opzioni.
- Verifica che le impostazioni corrispondano a quelle utilizzate nella finestra di dialogo Creazione schema.
- Scegli Timed Driver Script (Script del driver con timestamp).
- L'opzione Checkpoint al completamento forza la scrittura del database al termine del test, quindi controlla questa opzione solo se prevedi di usare eseguendo più test consecutivi.
- Per garantire un test accurato, imposta Minuti di tempo di accelerazione su 5 e Minuti per durata del test a 20.
- Fai clic su OK per uscire dalla finestra di dialogo.
- Fai doppio clic su Carica nella sezione Script driver del Benchmark. per attivare lo script del driver.
Creazione di utenti virtuali
La creazione di un carico realistico solitamente richiede l'esecuzione di script sotto forma di utenti diversi. Crea alcuni utenti virtuali per il test.
- Espandi la sezione Utenti virtuali e fai doppio clic su Opzioni.
- Se imposti il conteggio dei magazzini (scala) su 160, imposta Utenti virtuali a 16, perché le linee guida TPROC-C consigliano un rapporto 10x per impedire il blocco delle righe. Seleziona la casella di controllo Mostra output per abilitare l'errore. messaggi nella console.
- Fai clic su OK.
Raccolta delle statistiche di runtime
HammerDB e SQL Server non raccolgono facilmente statistiche di runtime dettagliate per
te. Sebbene le statistiche siano disponibili all'interno di SQL Server, devono
essere acquisiti e calcolati regolarmente. Se non disponi già di un
una procedura o uno strumento per l'acquisizione di questi dati, puoi utilizzare la procedura riportata di seguito per
acquisire alcune metriche utili durante i test. I risultati verranno scritti in
un file CSV nella directory temp
di Windows. Puoi copiare i dati in un cluster Google
Foglio usando lo strumento Incolla speciale > Opzione Incolla CSV.
Per utilizzare questa procedura, devi prima abilitare temporaneamente Procedure di automazione OLE per scrivere il file su disco. Ricordati di disattivarla dopo il test:
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO
Ecco il codice per creare la procedura sp_write_performance_counters
in SQL
Server Management Studio. Prima di iniziare il test di carico, devi eseguire questo
in Management Studio:
USE [master] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*** LogFile path has to be in a directory that SQL Server can Write To. */ CREATE PROCEDURE [dbo].[sp_write_performance_counters] @LogFile varchar (2000) = 'C:\\WINDOWS\\TEMP\\sqlPerf.log', @SecondsToRun int =1600, @RunIntervalSeconds int = 2 AS BEGIN --File writing variables DECLARE @OACreate INT, @OAFile INT, @FileName VARCHAR(2000), @RowText VARCHAR(500), @Loops int, @LoopCounter int, @WaitForSeconds varchar (10) --Variables to save last counter values DECLARE @LastTPS BIGINT, @LastLRS BIGINT, @LastLTS BIGINT, @LastLWS BIGINT, @LastNDS BIGINT, @LastAWT BIGINT, @LastAWT_Base BIGINT, @LastALWT BIGINT, @LastALWT_Base BIGINT --Variables to save current counter values DECLARE @TPS BIGINT, @Active BIGINT, @SCM BIGINT, @LRS BIGINT, @LTS BIGINT, @LWS BIGINT, @NDS BIGINT, @AWT BIGINT, @AWT_Base BIGINT, @ALWT BIGINT, @ALWT_Base BIGINT, @ALWT_DIV BIGINT, @AWT_DIV BIGINT SELECT @Loops = case when (@SecondsToRun % @RunIntervalSeconds) > 5 then @SecondsToRun / @RunIntervalSeconds + 1 else @SecondsToRun / @RunIntervalSeconds end SET @LoopCounter = 0 SELECT @WaitForSeconds = CONVERT(varchar, DATEADD(s, @RunIntervalSeconds , 0), 114) SELECT @FileName = @LogFile + FORMAT ( GETDATE(), '-MM-dd-yyyy_m', 'en-US' ) + '.txt' --Create the File Handler and Open the File EXECUTE sp_OACreate 'Scripting.FileSystemObject', @OACreate OUT EXECUTE sp_OAMethod @OACreate, 'OpenTextFile', @OAFile OUT, @FileName, 2, True, -2 --Write the Header EXECUTE sp_OAMethod @OAFile, 'WriteLine', NULL,'Transactions/sec, Active Transactions, SQL Cache Memory (KB), Lock Requests/sec, Lock Timeouts/sec, Lock Waits/sec, Number of Deadlocks/sec, Average Wait Time (ms), Average Latch Wait Time (ms)' --Collect Initial Sample Values SET ANSI_WARNINGS OFF SELECT @LastTPS= max(case when counter_name = 'Transactions/sec' then cntr_value end), @LastLRS = max(case when counter_name = 'Lock Requests/sec' then cntr_value end), @LastLTS = max(case when counter_name = 'Lock Timeouts/sec' then cntr_value end), @LastLWS = max(case when counter_name = 'Lock Waits/sec' then cntr_value end), @LastNDS = max(case when counter_name = 'Number of Deadlocks/sec' then cntr_value end), @LastAWT = max(case when counter_name = 'Average Wait Time (ms)' then cntr_value end), @LastAWT_Base = max(case when counter_name = 'Average Wait Time base' then cntr_value end), @LastALWT = max(case when counter_name = 'Average Latch Wait Time (ms)' then cntr_value end), @LastALWT_Base = max(case when counter_name = 'Average Latch Wait Time base' then cntr_value end) FROM sys.dm_os_performance_counters WHERE counter_name IN ( 'Transactions/sec', 'Lock Requests/sec', 'Lock Timeouts/sec', 'Lock Waits/sec', 'Number of Deadlocks/sec', 'Average Wait Time (ms)', 'Average Wait Time base', 'Average Latch Wait Time (ms)', 'Average Latch Wait Time base') AND instance_name IN( '_Total' ,'') SET ANSI_WARNINGS ON WHILE @LoopCounter <= @Loops BEGIN WAITFOR DELAY @WaitForSeconds SET ANSI_WARNINGS OFF SELECT @TPS= max(case when counter_name = 'Transactions/sec' then cntr_value end) , @Active = max(case when counter_name = 'Active Transactions' then cntr_value end) , @SCM = max(case when counter_name = 'SQL Cache Memory (KB)' then cntr_value end) , @LRS = max(case when counter_name = 'Lock Requests/sec' then cntr_value end) , @LTS = max(case when counter_name = 'Lock Timeouts/sec' then cntr_value end) , @LWS = max(case when counter_name = 'Lock Waits/sec' then cntr_value end) , @NDS = max(case when counter_name = 'Number of Deadlocks/sec' then cntr_value end) , @AWT = max(case when counter_name = 'Average Wait Time (ms)' then cntr_value end) , @AWT_Base = max(case when counter_name = 'Average Wait Time base' then cntr_value end) , @ALWT = max(case when counter_name = 'Average Latch Wait Time (ms)' then cntr_value end) , @ALWT_Base = max(case when counter_name = 'Average Latch Wait Time base' then cntr_value end) FROM sys.dm_os_performance_counters WHERE counter_name IN ( 'Transactions/sec', 'Active Transactions', 'SQL Cache Memory (KB)', 'Lock Requests/sec', 'Lock Timeouts/sec', 'Lock Waits/sec', 'Number of Deadlocks/sec', 'Average Wait Time (ms)', 'Average Wait Time base', 'Average Latch Wait Time (ms)', 'Average Latch Wait Time base') AND instance_name IN( '_Total' ,'') SET ANSI_WARNINGS ON SELECT @AWT_DIV = case when (@AWT_Base - @LastAWT_Base) > 0 then (@AWT_Base - @LastAWT_Base) else 1 end , @ALWT_DIV = case when (@ALWT_Base - @LastALWT_Base) > 0 then (@ALWT_Base - @LastALWT_Base) else 1 end SELECT @RowText = '' + convert(varchar, (@TPS - @LastTPS)/@RunIntervalSeconds) + ', ' + convert(varchar, @Active) + ', ' + convert(varchar, @SCM) + ', ' + convert(varchar, (@LRS - @LastLRS)/@RunIntervalSeconds) + ', ' + convert(varchar, (@LTS - @LastLTS)/@RunIntervalSeconds) + ', ' + convert(varchar, (@LWS - @LastLWS)/@RunIntervalSeconds) + ', ' + convert(varchar, (@NDS - @LastNDS)/@RunIntervalSeconds) + ', ' + convert(varchar, (@AWT - @LastAWT)/@AWT_DIV) + ', ' + convert(varchar, (@ALWT - @LastALWT)/@ALWT_DIV) SELECT @LastTPS = @TPS, @LastLRS = @LRS, @LastLTS = @LTS, @LastLWS = @LWS, @LastNDS = @NDS, @LastAWT = @AWT, @LastAWT_Base = @AWT_Base, @LastALWT = @ALWT, @LastALWT_Base = @ALWT_Base EXECUTE sp_OAMethod @OAFile, 'WriteLine', Null, @RowText SET @LoopCounter = @LoopCounter + 1 END --CLEAN UP EXECUTE sp_OADestroy @OAFile EXECUTE sp_OADestroy @OACreate print 'Completed Logging Performance Metrics to file: ' + @FileName END GO
Esecuzione del test di carico TPROC-C
In SQL Server Management Studio, esegui la procedura di raccolta utilizzando script seguente:
Use master Go exec dbo.sp_write_performance_counters
Nell'istanza Compute Engine in cui hai installato HammerDB, avvia il test nell'applicazione HammerDB:
- Nel riquadro Benchmark, nella sezione Utenti virtuali, fai doppio clic su Crea. per creare gli utenti virtuali, che attiverà il Virtual User Output .
- Fai doppio clic su Esegui appena sotto l'opzione Crea per avviare il test.
- Al termine del test, verranno visualizzate le transazioni al minuto (TPM). nella scheda Output utente virtuale.
- Puoi trovare i risultati della procedura di raccolta dei dati nel
Directory
c:\Windows\temp
. - Salva tutti questi valori in un foglio Google e utilizzali per confrontare più le esecuzioni di test.
Esegui la pulizia
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettono di usare la quota e comportano addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione creato per il tutorial.
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Eliminazione di istanze
Per eliminare un'istanza di Compute Engine:
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Seleziona la casella di controllo per l'istanza che vuoi eliminare.
- Per eliminare l'istanza, fai clic su Altre azioni, quindi su Elimina e segui le istruzioni.
Passaggi successivi
- Esamina SQL Server guida alle best practice.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.