Tutorial ini menunjukkan cara menggunakan HammerDB untuk melakukan pengujian beban pada instance SQL Server Compute Engine. Anda dapat mempelajari cara menginstal instance SQL Server dengan mengikuti tutorial berikut:
Ada sejumlah alat pengujian beban yang tersedia. Beberapa di antaranya gratis dan bersifat open source, sementara yang lain memerlukan lisensi. HammerDB adalah alat open source yang umumnya berfungsi dengan baik untuk menunjukkan performa database SQL Server Anda. Tutorial ini membahas langkah-langkah dasar untuk menggunakan HammerDB, tetapi ada alat lain yang tersedia, dan Anda harus memilih alat yang paling sesuai dengan workload tertentu.
Tujuan
Tutorial ini membahas tujuan berikut:- Mengonfigurasi SQL Server untuk pengujian beban
- Menginstal dan menjalankan HammerDB
- Mengumpulkan statistik runtime
- Menjalankan Benchmark Pemrosesan Transaksi yang berasal dari uji beban spesifikasi TPC "C" (TPROC-C)
Biaya
Selain instance SQL Server yang ada yang berjalan di Compute Engine, tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- Compute Engine
- Windows Server
Kalkulator Harga dapat menghasilkan perkiraan biaya berdasarkan proyeksi penggunaan Anda. Link yang diberikan menunjukkan perkiraan biaya untuk produk-produk yang digunakan dalam tutorial ini, yang dapat mencapai rata-rata 16 dolar (AS) per hari.
Sebelum memulai
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
- Jika Anda tidak menggunakan Windows di komputer lokal, instal klien Protokol Desktop Jarak Jauh (RDP) pihak ketiga. Untuk informasi selengkapnya, lihat Klien Microsoft Desktop Jarak Jauh.
Mengonfigurasi instance SQL Server untuk pengujian beban
Sebelum memulai, Anda harus memeriksa kembali apakah aturan firewall Windows telah disiapkan untuk mengizinkan traffic dari alamat IP instance Windows baru yang Anda buat. Kemudian, buat database baru untuk pengujian beban TPCC dan konfigurasi akun pengguna menggunakan langkah-langkah berikut:
- Klik kanan folder Databases di SQL Server Management Studio, lalu pilih New Database.
- Beri nama untuk database baru itu dengan "TPCC".
- Tetapkan ukuran awal file data ke 190.000 MB dan file log ke 65.000 MB.
Tetapkan batas Autogrowth ke nilai yang lebih tinggi dengan mengklik tombol elipsis, seperti yang ditunjukkan pada screenshot berikut:
Atur ukuran file data agar bertambah sebesar 64 MB ke ukuran tak terbatas.
Setel file log untuk menonaktifkan pertumbuhan otomatis.
Klik Oke.
Pada dialog New Database, di panel kiri, pilih halaman Options.
Tetapkan Compatibility level ke SQL Server 2022 (160).
Setel Recovery model ke Simple, sehingga pemuatan tidak mengisi log transaksi.
Klik OK untuk membuat database TPCC, yang dapat memerlukan waktu beberapa menit untuk diselesaikan.
Image SQL Server yang telah dikonfigurasi sebelumnya hanya dilengkapi dengan autentikasi Windows sehingga Anda perlu mengaktifkan autentikasi mode campuran dalam SSMS, dengan mengikuti panduan ini.
Ikuti langkah-langkah berikut untuk membuat akun pengguna SQL Server baru di server database Anda yang memiliki izin DBOwner. Beri nama akun tersebut "loaduser" dan berikan sandi yang aman.
Catat alamat IP internal SQL Server Anda menggunakan commandlet
Get-NetIPAddress
. Hal ini penting untuk performa dan keamanan menggunakan IP internal.
Menginstal HammerDB
Anda dapat menjalankan HammerDB langsung di instance SQL Server. Namun, untuk pengujian yang lebih akurat, buat instance Windows baru dan uji instance SQL Server dari jarak jauh.
Membuat instance
Ikuti langkah-langkah berikut untuk membuat instance Compute Engine baru:
Di konsol Google Cloud, buka halaman Create an instance.
Untuk Name, masukkan
hammerdb-instance
.Di bagian Machine configuration, pilih jenis mesin dengan jumlah CPU minimal setengah sebagai instance database Anda.
Di bagian Boot disk, klik Change, lalu lakukan hal berikut:
- Pada tab Public image, pilih sistem operasi Windows Server.
- Di daftar Version, klik Windows Server 2022 Datacenter.
- Pada daftar Boot disk type, pilih Standard persistent disk.
- Untuk mengonfirmasi opsi boot disk, klik Select.
Untuk membuat dan memulai VM, klik Create.
Menginstal perangkat lunak
Jika sudah siap, gunakan klien RDP untuk terhubung ke instance Windows Server baru Anda, lalu instal software berikut:
Menjalankan HammerDB
Setelah Anda menginstal HammerDB, jalankan file hammerdb.bat
. HammberDB tidak muncul di daftar aplikasi menu Start. Gunakan perintah berikut untuk menjalankan HammerDB:
C:\Program Files\HammerDB-VERSION
\hammerdb.bat
Ganti VERSION
dengan versi HammerDB yang diinstal.
Membuat koneksi dan skema
Saat aplikasi berjalan, langkah pertama adalah mengonfigurasi koneksi untuk membangun skema.
- Klik dua kali SQL Server di panel Benchmark.
- Pilih TPROC-C.
Dari situs HammerDB:
TPROC-C adalah beban kerja OLTP yang diimplementasikan di HammerDB yang berasal dari spesifikasi TPROC-C dengan modifikasi untuk membuat HammerDB berjalan dengan mudah dan hemat biaya di lingkungan database apa pun yang didukung. Beban kerja HammerDB TPROC-C adalah beban kerja open source yang berasal dari Standar Benchmark TPROC-C dan karenanya tidak sebanding dengan hasil TPROC-C yang dipublikasikan, karena hasilnya mematuhi subset, bukan Standar Benchmark TPROC-C lengkap. Nama untuk beban kerja HammerDB TPROC-C berarti "Benchmark Pemrosesan Transaksi yang berasal dari spesifikasi TPC "C"".
Klik OK
Klik Schema, lalu klik dua kali Options.
Isi formulir menggunakan alamat IP, nama pengguna, dan sandi Anda seperti yang ditunjukkan pada gambar berikut:
Menetapkan SQL Server ODBC Driver ke OBDC Driver 18 untuk SQL Server
Dalam hal ini, Jumlah Gudang (skala) ditetapkan ke 460, tetapi Anda dapat memilih nilai yang berbeda. Beberapa pedoman menyarankan 10 hingga 100 warehouse per CPU. Untuk tutorial ini, tetapkan nilai ini ke 10 kali jumlah core: 160 untuk instance 16 core.
Untuk opsi Pengguna Virtual untuk Membuat Skema, pilih angka antara 1 dan 2 kali jumlah vCPU klien. Anda dapat mengeklik kotak abu-abu di samping penggeser untuk menambah angka.
Hapus centang pada Gunakan Opsi BPC
Klik OK
Klik dua kali opsi Build di bawah bagian Schema Build untuk membuat skema dan memuat tabel. Setelah selesai, klik ikon lampu flash merah di tengah atas layar untuk menghancurkan pengguna virtual dan melanjutkan ke langkah berikutnya.
Jika membuat database dengan model pemulihan Simple
, Anda mungkin ingin mengubahnya kembali ke Full
pada tahap ini untuk mendapatkan pengujian skenario produksi yang lebih akurat. Tindakan ini tidak akan diterapkan hingga Anda melakukan pencadangan penuh atau diferensial untuk memicu awal rantai log baru.
Membuat skrip driver
HammerDB menggunakan skrip driver untuk mengatur alur pernyataan SQL ke database guna menghasilkan beban yang diperlukan.
- Di panel Benchmark, luaskan bagian Driver Script dan klik dua kali Options.
- Pastikan setelan cocok dengan yang Anda gunakan dalam dialog Schema Build.
- Pilih Timed Driver Script.
- Opsi Checkpoint when complete memaksa database untuk menulis semuanya ke disk pada akhir pengujian. Jadi, periksa ini hanya jika Anda berencana menjalankan beberapa pengujian secara berturut-turut.
- Untuk memastikan pengujian yang menyeluruh, tetapkan Minutes of Rampup Time (Menit Waktu Rampup) ke 5 dan Minutes for Test Duration ke 20.
- Klik OK untuk keluar dari dialog.
- Klik dua kali Load di bagian Driver Script pada panel Benchmark untuk mengaktifkan skrip driver.
Membuat pengguna virtual
Pembuatan pemuatan yang realistis biasanya perlu menjalankan skrip sebagai beberapa pengguna yang berbeda. Buat beberapa pengguna virtual untuk pengujian.
- Luaskan bagian Virtual Users lalu klik dua kali Options.
- Jika Anda menetapkan jumlah (skala) warehouse ke 160, tetapkan Virtual Users ke 16, karena panduan TPROC-C merekomendasikan rasio 10x untuk mencegah penguncian baris. Pilih kotak centang Show Output untuk mengaktifkan pesan error di konsol.
- Klik OK
Mengumpulkan statistik runtime
HammerDB dan SQL Server tidak mengumpulkan statistik runtime mendetail dengan mudah
untuk Anda. Meskipun tersedia jauh di dalam SQL Server, statistik tersebut harus
dicatat dan dihitung secara teratur. Jika belum memiliki prosedur atau alat untuk membantu mengambil data ini, Anda dapat menggunakan prosedur di bawah ini untuk mencatat beberapa metrik yang berguna selama pengujian. Hasilnya akan ditulis ke
file CSV di direktori temp
Windows. Anda dapat menyalin data ke Google Spreadsheet menggunakan opsi Tempel Khusus > Tempel CSV.
Untuk menggunakan prosedur ini, Anda harus mengaktifkan Prosedur Otomatisasi OLE terlebih dahulu untuk menulis file ke disk. Jangan lupa menonaktifkannya setelah pengujian:
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO
Berikut adalah kode untuk membuat prosedur sp_write_performance_counters
di SQL
Server Management Studio. Sebelum memulai pengujian beban, Anda akan menjalankan prosedur
ini di 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
Menjalankan uji beban TPROC-C
Di SQL Server Management Studio, jalankan prosedur pengumpulan menggunakan skrip berikut:
Use master Go exec dbo.sp_write_performance_counters
Pada instance Compute Engine tempat Anda menginstal HammerDB, mulai pengujian di aplikasi HammerDB:
- Di panel Benchmark, di bagian Virtual Users, klik dua kali Create untuk membuat pengguna virtual, yang akan mengaktifkan opsi Virtual tab User Output.
- Klik dua kali Run tepat di bawah opsi Create untuk memulai pengujian.
- Setelah pengujian selesai, Anda akan melihat penghitungan Transaksi Per Menit (TPM) di tab Virtual User Output.
- Anda dapat menemukan hasil dari prosedur pengumpulan dalam direktori
c:\Windows\temp
. - Simpan semua nilai ini ke Google Spreadsheet dan gunakan untuk membandingkan beberapa pengujian.
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus instance
Untuk menghapus instance Compute Engine:
- Di konsol Google Cloud, buka halaman Instance VM.
- Pilih kotak centang untuk instance yang ingin Anda hapus.
- Untuk menghapus instance, klik Tindakan lainnya, klik Hapus, lalu ikuti petunjuknya.
Langkah berikutnya
- Tinjau panduan praktik terbaik SQL Server.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.