Topik ini menjelaskan desain, proses, dan hasil uji Sysbench di PolarDB-X untuk MySQL 5.7 dan MySQL 8.0.
Informasi latar belakang
Sysbench adalah alat sumber terbuka dan modular yang dapat menggunakan beberapa thread untuk menguji kinerja database di berbagai platform, termasuk CPU, memori, thread, dan I/O. Topik ini memverifikasi kinerja uji Sysbench PolarDB-X dalam berbagai skenario.
Desain pengujian
Amount of test data
Hasil uji Sysbench yang dijelaskan dalam topik ini diperoleh berdasarkan 16 tabel, masing-masing berisi 10 juta baris data.
Instance specifications for the test
Spesifikasi instance
Jumlah node
4C32G
2
4C32G
4
8C64G
2
8C64G
4
ECS instance type for stress testing
ecs.g7ne.8xlarge (32 vCPU, 128 GB memori)
Prosedur
Buat instance Elastic Compute Service (ECS) untuk uji stres.
Buat instance ECS yang digunakan untuk menyiapkan data dan melakukan uji stres. Untuk mencegah hambatan performa saat menguji instance PolarDB-X dengan spesifikasi tinggi, disarankan membuat instance ECS dengan 32 vCPU dan 128 GB memori.
CatatanInstance ECS harus ditempatkan di virtual private cloud (VPC). Catat nama dan ID VPC untuk digunakan selanjutnya. Semua instance database yang dijelaskan dalam langkah-langkah berikutnya harus ditempatkan di VPC tersebut.
Buat instance PolarDB-X untuk uji stres.
Buat instance PolarDB-X. Pilih mesin database MySQL 5.7 atau MySQL 8.0 sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang cara membuat instance PolarDB-X, lihat Buat instance PolarDB-X.
CatatanPastikan bahwa instance PolarDB-X dan instance ECS berada di VPC yang sama.
Buat database (nama database adalah sbtest dalam contoh ini) di instance tersebut. Untuk informasi lebih lanjut, lihat Buat database.
CREATE DATABASE sbtest;
Ubah parameter instance.
CatatanUntuk mencapai performa optimal dalam uji stres, ubah parameter tertentu dari node komputasi instance PolarDB-X.
Atur parameter ENABLE_COROUTINE menjadi true dan parameter XPROTO_MAX_DN_CONCURRENT serta XPROTO_MAX_DN_WAIT_CONNECTION menjadi 4000. Untuk informasi lebih lanjut, lihat Pengaturan parameter.
Hubungkan ke instance PolarDB-X menggunakan klien baris perintah. Kemudian, jalankan pernyataan SQL berikut dalam sesi yang sama untuk menonaktifkan logging dan pengambilan sampel statistik CPU:
set global RECORD_SQL=false; set global MPP_METRIC_LEVEL=0; set global ENABLE_CPU_PROFILE=false; set global ENABLE_TRANS_LOG=false;
Siapkan data untuk uji stres.
Unduh paket alat uji stres benchmarksql.tar.gz dan jalankan perintah berikut untuk mengekstraknya:
tar xzvf sysbench.tar.gz cd sysbench/Jalankan perintah berikut untuk menginstal dan mengompilasi dependensi:
yum -y install make automake libtool pkgconfig libaio-devel mysql-devel ./autogen.sh ./configure make -j make installJalankan perintah
synben --version. Jikasysbench 1.1.0dikembalikan, alat uji stres telah terinstal.Anda juga dapat mengunduh Sysbench sumber terbuka dari GitHub. Untuk informasi lebih lanjut, lihat sysbench di GitHub.
Konfigurasikan data untuk uji stres.
Buat file konfigurasi sysb.conf dan masukkan informasi koneksi PolarDB-X dalam file konfigurasi. Contoh berikut menunjukkan isi file konfigurasi. Parameter dalam file konfigurasi dijelaskan setelah contoh.
mysql-host='{HOST}' mysql-port='{PORT}' mysql-user='{USER}' mysql-password='{PASSWORD}' mysql-db='sbtest' db-driver='mysql' percentile='95' histogram='on' report-interval='1' time='60' rand-type='uniform'Parameter dalam file konfigurasi:
percentile: Persentil berdasarkan mana waktu respons diambil sampelnya.
histogram: Menentukan apakah akan menampilkan histogram distribusi waktu respons.
report-interval: Interval di mana hasil real-time ditampilkan (dalam detik).
time: Durasi uji stres (dalam detik).
rand-type: Jenis distribusi yang digunakan untuk menghasilkan angka acak.
Impor data uji stres.
sysbench --config-file='sysb.conf' --create-table-options='dbpartition by hash(id)' --tables='16' --table-size='10000000' --threads='16' --auto_inc='off' oltp_point_select prepareParameter dalam perintah:
config-file: File konfigurasi umum.
create-table-options: Mode yang digunakan untuk membuat tabel.
tables: Jumlah tabel.
table-size: Jumlah data yang dapat ditampung dalam sebuah tabel.
threads: Jumlah thread konkuren yang digunakan untuk mengimpor data.
auto_inc: Menentukan apakah akan menggunakan auto_increment.
Lakukan uji stres.
Jalankan perintah berikut untuk melakukan pengujian dalam enam skenario yang didefinisikan oleh Sysbench. Disarankan meningkatkan durasi uji stres pertama.
CatatanParameter dalam perintah:
db-ps-mode: Menentukan apakah akan mengaktifkan mode persiapan.
mysql-ignore-errors: Kode kesalahan MySQL yang akan diabaikan, seperti beberapa kode kesalahan MySQL yang disebabkan oleh konflik kunci.
range-size: Rentang berdasarkan mana kueri rentang dilakukan.
oltp_point_select:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={Jumlah thread konkuren} oltp_point_select runoltp_read_only:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={Jumlah thread konkuren} oltp_read_only runoltp_read_write:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={Jumlah thread konkuren} oltp_read_write runoltp_update_index:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={Jumlah thread konkuren} oltp_update_index runoltp_update_non_index:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={Jumlah thread konkuren} oltp_update_non_index runoltp_write_only:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={Jumlah thread konkuren} oltp_write_only run
Hasil pengujian
MySQL 5.7
Versi PolarDB-X: polardb-2.4.0_5.4.19-20240610_xcluster5.4.19-20240527. Untuk informasi lebih lanjut, lihat Catatan Rilis.
Dalam hasil pengujian berikut, nilai QPS digunakan untuk mengukur kinerja database.
point_select

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 1000 | 201462,73 |
4C32G*4 | 1000 | 324683,03 |
8C64G*2 | 1000 | 308174,91 |
8C64G*4 | 2000 | 635865,65 |
read_only

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 600 | 62446,59 |
4C32G*4 | 1000 | 94930,57 |
8C64G*2 | 1000 | 88487,24 |
8C64G*4 | 2000 | 162330,95 |
read_write

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 600 | 43098,16 |
4C32G*4 | 600 | 68750,24 |
8C64G*2 | 600 | 57730,62 |
8C64G*4 | 600 | 111261,22 |
update_index

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 600 | 49530,87 |
4C32G*4 | 600 | 86850,17 |
8C64G*2 | 600 | 65750,01 |
8C64G*4 | 1000 | 137154,16 |
update_non_index

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 400 | 50627,05 |
4C32G*4 | 1000 | 90555,72 |
8C64G*2 | 1000 | 68838,02 |
8C64G*4 | 1000 | 137071,73 |
write_only

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 400 | 38636,02 |
4C32G*4 | 600 | 70974,3 |
8C64G*2 | 600 | 52344,94 |
8C64G*4 | 600 | 101282,38 |
MySQL 8.0
Versi PolarDB-X: polardb-2.4.0_5.4.19-20240610_xcluster8.4.19-20240523. Untuk informasi lebih lanjut, lihat Catatan Rilis.
Dalam hasil pengujian berikut, nilai QPS digunakan untuk mengukur kinerja database.
point_select

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 1000 | 166590,48 |
4C32G*4 | 1000 | 288516,53 |
8C64G*2 | 1000 | 350510,72 |
8C64G*4 | 2000 | 637414,68 |
read_only

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 600 | 59770,01 |
4C32G*4 | 1000 | 71259,87 |
8C64G*2 | 1000 | 69829,69 |
8C64G*4 | 2000 | 128366,39 |
read_write

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 600 | 56134,05 |
4C32G*4 | 600 | 55817,45 |
8C64G*2 | 600 | 60482,86 |
8C64G*4 | 600 | 92855,15 |
update_index

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 600 | 37474,15 |
4C32G*4 | 600 | 57344,42 |
8C64G*2 | 600 | 55856,94 |
8C64G*4 | 1000 | 87618,81 |
update_non_index

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 400 | 38017,57 |
4C32G*4 | 1000 | 60779,25 |
8C64G*2 | 1000 | 58065,02 |
8C64G*4 | 1000 | 91060,65 |
write_only

Spesifikasi instance | Jumlah thread konkuren | QPS |
4C32G*2 | 400 | 29476,72 |
4C32G*4 | 600 | 47558,73 |
8C64G*2 | 600 | 41032,61 |
8C64G*4 | 600 | 65794,57 |