全部产品
Search
文档中心

PolarDB:Uji Kinerja OLTP

更新时间:Jul 02, 2025

Tema ini menjelaskan cara menguji kinerja Pemrosesan Transaksi Online (OLTP) dari kluster PolarDB for MySQL menggunakan SysBench.

Alat Uji

SysBench adalah alat pengujian kinerja open source dan lintas platform yang digunakan untuk benchmarking database (seperti MySQL) serta evaluasi kinerja sistem (seperti CPU, memori, I/O, dan thread). Alat ini mendukung pengujian multi-threaded dan dapat secara fleksibel mengontrol logika pengujian melalui skrip Lua, sehingga cocok untuk evaluasi kinerja database dan uji stres.

Lingkungan Pengujian

  • Instance Elastic Compute Service (ECS) dan kluster PolarDB for MySQL berada di wilayah, zona, dan Virtual Private Cloud (VPC) yang sama.

    Catatan

    Instance ECS dan kluster PolarDB for MySQL harus berada dalam VPC yang sama. Latensi ping instance ECS harus kurang dari 0,2 ms untuk memastikan validitas evaluasi kinerja.

  • Kluster PolarDB for MySQL yang digunakan dalam teks:

    • Kluster dua node (satu node utama dan satu node baca-saja) digunakan untuk pengujian kinerja baca-saja, tulis-saja, dan baca-tulis.

    • Titik akhir yang digunakan mencakup titik akhir utama, titik akhir kluster, dan titik akhir kustom. Selama pengujian sebenarnya, kombinasi string koneksi disesuaikan secara fleksibel sesuai kebutuhan untuk memastikan pemanfaatan maksimal sumber daya kluster.

  • Instance ECS yang digunakan dalam pengujian:

    • Tipe instansinya adalah ecs.c5.4xlarge (16 core, 32 GB memori).

    • Gambar instansinya adalah CentOS 7.0 64-bit.

    • Jumlah instansinya bergantung pada kluster PolarDB. Jika node komputasi memiliki 8 core, satu instance ECS digunakan. Jika node komputasi memiliki 16 core, dua instance ECS digunakan, dan seterusnya.

  • Konfigurasi parameter kluster PolarDB for MySQL:

    • Dalam skenario pengujian konkurensi tinggi, pesan kesalahan "can't create more than max_prepared_stmt_count statements" mungkin muncul dan pengujian mungkin gagal. Untuk mengatasi masalah ini, Anda dapat meningkatkan nilai parameter max_prepared_stmt_count untuk mengizinkan lebih banyak pernyataan yang disiapkan. Untuk informasi lebih lanjut, lihat Konfigurasikan parameter kluster dan node.

    • Dalam skenario berskala besar dengan konkurensi tinggi, bahkan menetapkan parameter max_prepared_stmt_count ke nilai maksimum mungkin tidak memenuhi persyaratan. Untuk memastikan pengujian kinerja yang lancar, Anda dapat menonaktifkan fitur Prepared Statement dengan menambahkan parameter --db-ps-mode=disable ke perintah pengujian Anda.

    • Untuk kluster berskala besar (88 core atau lebih), penyesuaian parameter tambahan diperlukan untuk sepenuhnya memanfaatkan sumber daya kluster. Parameter penyesuaian spesifik tergantung pada tipe instansi dan skenario bisnis pada halaman pengujian. Kami merekomendasikan Anda melakukan evaluasi kinerja menyeluruh sebelum menerapkan optimasi dan menyesuaikan parameter berdasarkan hasil aktual.

Catatan Penggunaan

Pengujian ini secara konsisten menggunakan dataset dengan 250 tabel, masing-masing berisi 25.000 baris. Jumlah thread ditingkatkan secara bertahap dari nilai rendah ke nilai lebih tinggi. Hanya hasil kinerja puncak yang ditampilkan pada halaman detail pengujian kinerja.

Skenario Pengujian

Lakukan pengujian performa OLTP untuk mengevaluasi performa hanya-baca, hanya-tulis, dan baca-tulis dari kluster dengan spesifikasi khusus yang berbeda. Setiap kluster terdiri dari satu node utama dan satu node hanya-baca.

Metrik

  • Transaksi per detik (TPS): jumlah transaksi yang dilakukan per detik di database. Hanya transaksi yang telah dikomit yang dihitung.

  • Kueri per detik (QPS): jumlah pernyataan SQL yang dieksekusi per detik di database, termasuk pernyataan INSERT, SELECT, UPDATE, dan DELETE.

Instal Sysbench

Penting

Anda harus menjalankan perintah dalam topik ini sebagai pengguna 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
    ## Navigasi ke direktori Sysbench.
    
    ./autogen.sh
    ## Jalankan autogen.sh.
    
    ./configure
    
    make -j
    ## Kompilasi kode sumber.
    
    make install
  2. Jalankan perintah berikut untuk mengonfigurasi klien SysBench sehingga kernel dapat menggunakan semua core CPU untuk memproses paket (pengaturan default adalah 2 core) dan mengurangi pergantian konteks 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 penggunaan 16 core. Ubah nilai ini berdasarkan konfigurasi aktual Anda. Misalnya, jika instance ECS Anda memiliki 8 core, masukkan ff. Untuk 16 core, masukkan ffff, dan sesuaikan untuk jumlah core lainnya.

    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"

Prosedur Pengujian

Catatan

Prosedur pengujian berikut menggunakan kluster PolarDB for MySQL kluster sebagai contoh.

  1. Dapatkan titik akhir dan port dari kluster PolarDB for MySQL. Untuk informasi lebih lanjut, lihat Kelola titik akhir.

  2. Setel parameter Primary Node Accepts Read Requests dari kluster PolarDB for MySQL ke Yes. Untuk informasi lebih lanjut, lihat Konfigurasikan PolarProxy.

  3. Sambungkan ke database.

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

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

    Ganti XXX dalam perintah ini dan perintah selanjutnya dengan titik akhir kluster, nomor port, nama pengguna, dan kata sandi dari kluster PolarDB for MySQL Anda. Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    -h

    Titik akhir kluster dari kluster PolarDB for MySQL.

    -P

    Nomor port dari kluster PolarDB for MySQL.

    -u

    Nama pengguna dari kluster PolarDB for MySQL.

    -p

    Kata sandi untuk nama pengguna.

  4. Lakukan pengujian untuk skenario tertentu.

    Skenario Baca-Saja (OLTP Baca-Saja)

    Catatan

    Dalam skenario baca-saja, parameter --range-selects=0 digunakan. Konfigurasi ini menonaktifkan kueri rentang dan secara efektif menguji skenario oltp_point_selects, yang berfokus pada kueri seleksi titik.

    1. Siapkan 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 baca-saja.

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

      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

    Parameter Utama:

    Parameter

    Konten yang Ditampilkan

    Deskripsi

    tables

    Jumlah tabel

    Jumlah total tabel yang terlibat dalam pengujian.

    table_size

    Jumlah baris per tabel

    Jumlah baris di setiap tabel.

    Volume data

    Volume data total tabel, dinyatakan dalam unit penyimpanan seperti MB atau GB.

    threads

    Jumlah thread konkuren

    Jumlah thread yang saat ini dikonfigurasi.

    Status thread

    Status operasi thread.

    Skema Baca-Tulis (OLTP Baca-Tulis)

    Catatan
    • Pengujian mensimulasikan beban kerja bisnis tipikal dengan campuran operasi baca dan tulis.

    • Parameter inti seperti tables, table_size, dan threads ditampilkan secara individual untuk setiap kasus pengujian pada halaman data pengujian.

    1. Siapkan 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 baca-tulis.

      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. Bersihkan data pengujian.

      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

    Parameter Utama:

    Parameter

    Konten yang Ditampilkan

    Deskripsi

    tables

    Jumlah tabel

    Jumlah total tabel yang terlibat dalam pengujian.

    table_size

    Jumlah baris per tabel

    Jumlah baris di setiap tabel.

    Volume data

    Volume data total tabel, dinyatakan dalam unit penyimpanan seperti MB atau GB.

    threads

    Jumlah thread konkuren

    Jumlah thread yang saat ini dikonfigurasi.

    Status thread

    Status operasi thread.

    Pengujian Tulis-Saja (OLTP Tulis-Saja)

    Catatan

    Parameter inti seperti tables, table_size, dan threads ditampilkan secara individual untuk setiap kasus pengujian pada halaman data pengujian.

    1. Siapkan 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. Jalankan pengujian tulis-saja.

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

    Parameter Utama:

    Parameter

    Konten yang Ditampilkan

    Deskripsi

    tables

    Jumlah tabel

    Jumlah total tabel yang terlibat dalam pengujian.

    table_size

    Jumlah baris per tabel

    Jumlah baris di setiap tabel.

    Volume data

    Volume data total tabel, dinyatakan dalam unit penyimpanan seperti MB atau GB.

    threads

    Jumlah thread konkuren

    Jumlah thread yang saat ini dikonfigurasi.

    Status thread

    Status operasi thread.

Referensi