全部产品
Search
文档中心

PolarDB:Uji Sysbench

更新时间:Jul 06, 2025

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

  1. 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.

    Catatan

    Instance 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.

  2. Buat instance PolarDB-X untuk uji stres.

    1. 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.

      Catatan

      Pastikan bahwa instance PolarDB-X dan instance ECS berada di VPC yang sama.

    2. Buat database (nama database adalah sbtest dalam contoh ini) di instance tersebut. Untuk informasi lebih lanjut, lihat Buat database.

      CREATE DATABASE sbtest;
  3. Ubah parameter instance.

    Catatan

    Untuk mencapai performa optimal dalam uji stres, ubah parameter tertentu dari node komputasi instance PolarDB-X.

    1. 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.

    2. 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;
  4. Siapkan data untuk uji stres.

    1. 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 install

      Jalankan perintah synben --version. Jika sysbench 1.1.0 dikembalikan, alat uji stres telah terinstal.

      Anda juga dapat mengunduh Sysbench sumber terbuka dari GitHub. Untuk informasi lebih lanjut, lihat sysbench di GitHub.

    2. 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.

    3. 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 prepare

      Parameter 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.

  5. Lakukan uji stres.

    Jalankan perintah berikut untuk melakukan pengujian dalam enam skenario yang didefinisikan oleh Sysbench. Disarankan meningkatkan durasi uji stres pertama.

    Catatan

    Parameter 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 run
    • oltp_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 run
    • oltp_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 run
    • oltp_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 run
    • oltp_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 run
    • oltp_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

Catatan
  • 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

image

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

image

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

image

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

image

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

image

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

image

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

Catatan
  • 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

image

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

image

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

image

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

image

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

image

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

image

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