全部产品
Search
文档中心

PolarDB:Metode pengujian kinerja (OLTP)

更新时间:Jan 31, 2026

Topik ini menjelaskan cara menggunakan alat Sysbench untuk menguji kinerja beban online transactional processing (OLTP) pada kluster PolarDB for MySQL. Anda dapat mengikuti petunjuk dalam topik ini untuk menjalankan pengujian sendiri dan memahami kinerja sistem database Anda secara cepat.

Alat Uji

Sysbench adalah alat pengujian kinerja open source lintas platform yang terutama digunakan untuk benchmark database, seperti MySQL, serta pengujian kinerja sistem, termasuk CPU, memori, I/O, dan thread. Sysbench mendukung pengujian multi-threaded dan menggunakan skrip Lua untuk mengontrol logika pengujian secara fleksibel, sehingga cocok untuk evaluasi kinerja database dan uji stres.

Lingkungan Pengujian

  • Instance ECS yang digunakan untuk pengujian dan kluster PolarDB for MySQL harus berada dalam wilayah, zona, dan jaringan VPC yang sama.

    Catatan

    Instance ECS dan kluster PolarDB for MySQL harus berada dalam VPC yang sama. Hal ini memastikan latensi PING dari instance ECS kurang dari 0,2 ms, sehingga menjamin evaluasi kinerja yang valid.

  • Kluster PolarDB for MySQL yang digunakan untuk pengujian adalah sebagai berikut:

    • Pengujian kinerja read-only, write-only, dan read/write menggunakan kluster dua node (satu node primary dan satu node read-only).

    • Titik akhir yang digunakan mencakup titik akhir utama, titik akhir kluster, dan titik akhir kustom. Selama pengujian, kombinasi string koneksi disesuaikan sesuai kebutuhan untuk memaksimalkan pemanfaatan sumber daya kluster database.

  • Informasi instance ECS untuk pengujian adalah sebagai berikut:

    • Tipe instans: ecs.c5.4xlarge (16 core CPU, memori 32 GB).

    • Image: CentOS 7.0 64-bit.

    • Jumlah instance tergantung pada kluster PolarDB. Untuk node komputasi 8-core, gunakan satu instance ECS. Untuk tipe instans 16-core, gunakan dua instance ECS, dan seterusnya.

  • Pengaturan parameter kluster PolarDB for MySQL:

    • Saat pengujian konkurensi tinggi, error can't create more than max_prepared_stmt_count statements mungkin terjadi, menyebabkan pengujian gagal. Tingkatkan parameter max_prepared_stmt_count agar lebih banyak prepared statement dapat dibuat. Untuk informasi tentang pengaturan parameter, lihat Setel parameter kluster dan parameter node.

    • Dalam skenario konkurensi tinggi berskala besar, bahkan jika parameter max_prepared_stmt_count diatur ke nilai maksimumnya, hal tersebut mungkin tetap tidak cukup. Untuk memastikan pengujian kinerja berjalan lancar, tambahkan parameter --db-ps-mode=disable pada perintah pengujian untuk menonaktifkan fitur Prepared Statement.

    • Untuk kluster berskala sangat besar (88 core ke atas), diperlukan penyetelan parameter tambahan agar sumber daya kluster dapat dimanfaatkan secara optimal. Parameter penyetelan spesifik bergantung pada tipe instans dan skenario bisnis pada halaman pengujian. Sebelum menerapkan optimasi, lakukan evaluasi kinerja menyeluruh dan sesuaikan parameter berdasarkan hasil aktual.

Catatan

Pengujian menggunakan `tables=250` dan `table-size=25000`. Nilai `threads` ditingkatkan secara bertahap. Setiap halaman produk pengujian kinerja hanya menampilkan hasil puncak.

Skenario Pengujian

Pengujian ini mengukur kinerja OLTP untuk skenario read-only, write-only, dan read/write pada kluster dua node (satu node primary dan satu node read-only) di berbagai tipe instans Dedicated.

Metrik

  • TPS (Transactions Per Second): Jumlah transaksi yang dieksekusi database per detik, berdasarkan jumlah COMMIT yang berhasil.

  • QPS (Queries Per Second): Jumlah pernyataan SQL (termasuk INSERT, SELECT, UPDATE, dan DELETE) yang dieksekusi database per detik.

Instal Sysbench

Penting

Perintah dalam dokumen ini hanya dapat dijalankan oleh pengguna dengan izin root.

  1. Jalankan perintah berikut pada instance ECS untuk menginstal Sysbench.

    git clone https://github.com/akopytov/sysbench.git
    ## Unduh Sysbench dari Git
    
    cd sysbench
    ## Buka direktori Sysbench
    
    ./autogen.sh
    ## Jalankan autogen.sh
    
    ./configure
    
    make -j
    ## Kompilasi
    
    make install
  2. Jalankan perintah berikut untuk mengonfigurasi client Sysbench. Hal ini memungkinkan kernel menggunakan semua core CPU untuk memproses paket data (default hanya 2 core) dan mengurangi context switching antar core CPU.

    sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*; do echo ffff>$x/rps_cpus; done'
    Catatan

    ffff menunjukkan bahwa 16 core digunakan. Ubah nilai ini sesuai konfigurasi Anda. Misalnya, jika instance ECS Anda memiliki 8 core, masukkan ff. Jika memiliki 16 core, masukkan ffff, dan seterusnya.

    sudo sh -c "echo 32768 > /proc/sys/net/core/rps_sock_flow_entries"
    sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt"
    sudo sh -c "echo 4096 > /sys/class/net/eth0/queues/rx-1/rps_flow_cnt"

Metode pengujian

Catatan

Metode pengujian berikut menggunakan kluster PolarDB for MySQL Cluster Edition sebagai contoh.

  1. Dapatkan titik akhir dan port kluster PolarDB for MySQL. Untuk informasi selengkapnya, lihat Kelola alamat koneksi.

  2. Atur Primary Node Accepts Read Requests menjadi Yes untuk titik akhir kluster PolarDB for MySQL. Untuk informasi selengkapnya, lihat Konfigurasi proksi database.

  3. Login ke database

    Jalankan perintah berikut pada instance ECS untuk membuat database bernama testdb di kluster PolarDB for MySQL.

    mysql -h XXX -P XXX -u XXX -p XXX -e 'create database testdb'
    Catatan

    Ganti XXX dalam perintah ini dan perintah berikutnya dengan titik akhir kluster, nomor port, username, dan password kluster PolarDB for MySQL Anda. Parameter tersebut dijelaskan sebagai berikut.

    Parameter

    Deskripsi

    -h

    Titik akhir kluster dari kluster PolarDB for MySQL.

    -P

    Nomor port kluster PolarDB for MySQL.

    -u

    Username untuk kluster PolarDB for MySQL.

    -p

    Kata sandi untuk nama pengguna.

  4. Perintah pengujian untuk skenario tertentu adalah sebagai berikut:

    Pengujian skenario read-only (OLTP Read Only)

    Catatan

    Dalam skenario read-only ini, --range-selects=0 diatur, yang setara dengan pengujian skenario oltp_point_selects.

    1. Persiapkan data

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_only prepare
    2. Jalankan pengujian read-only

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_only run
    3. Bersihkan data

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --range-selects=0 --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_only cleanup

    Bidang-bidang dalam pernyataan pengujian dijelaskan sebagai berikut:

    Kategori parameter

    Konten yang Ditampilkan

    Deskripsi

    tables

    Jumlah tabel data

    Jumlah total tabel data dalam pengujian.

    table_size

    Jumlah baris dalam tabel data

    Jumlah catatan dalam setiap tabel.

    Ukuran volume data

    Volume data tabel, dalam satuan seperti MB atau GB.

    threads

    Jumlah thread konkuren

    Jumlah thread yang dikonfigurasi saat ini.

    Status thread

    Memungkinkan Anda melihat status berjalan thread secara real time.

    Pengujian campuran read/write (OLTP Read Write)

    Catatan
    • Ini mensimulasikan workload bisnis campuran read/write yang khas.

    • Parameter inti seperti `tables`, `table-size`, dan `threads` ditampilkan secara satu-satu di halaman data pengujian.

    1. Persiapkan data

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_write prepare
    2. Jalankan pengujian read/write

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_write run
    3. Pembersihan data

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_read_write cleanup

    Bidang-bidang dalam pernyataan pengujian dijelaskan sebagai berikut:

    Kategori parameter

    Konten yang ditampilkan

    Deskripsi

    tables

    Jumlah tabel data

    Jumlah total tabel data dalam pengujian.

    table_size

    Jumlah baris dalam tabel data

    Jumlah catatan dalam setiap tabel.

    Ukuran volume data

    Volume data tabel, dalam satuan seperti MB atau GB.

    threads

    Jumlah thread konkuren

    Jumlah thread yang dikonfigurasi saat ini.

    Status thread

    Memungkinkan Anda melihat status berjalan thread secara real time.

    Pengujian write-only (OLTP Write Only)

    Catatan

    Parameter inti seperti `tables`, `table-size`, dan `threads` ditampilkan secara satu-satu di halaman data pengujian.

    1. Persiapkan data

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_write_only prepare
    2. Lakukan pengujian write

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_write_only run
    3. Membersihkan Data

      sysbench --db-driver=mysql --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=testdb --table_size=25000 --tables=250 --events=0 --time=600 --rand-type=uniform --threads=XXX oltp_write_only cleanup

    Bidang-bidang dalam pernyataan pengujian dijelaskan sebagai berikut:

    Kategori parameter

    Konten yang ditampilkan

    Deskripsi

    tables

    Jumlah tabel data

    Jumlah total tabel data dalam pengujian.

    table_size

    Jumlah baris dalam tabel data

    Jumlah catatan dalam setiap tabel.

    Ukuran volume data

    Volume data tabel, dalam satuan seperti MB atau GB.

    threads

    Jumlah thread konkuren

    Jumlah thread yang dikonfigurasi saat ini.

    Status thread

    Memungkinkan Anda melihat status berjalan thread secara real time.

Langkah selanjutnya