全部产品
Search
文档中心

Hologres:Praktik terbaik untuk uji stres penulisan data, pembaruan data, dan kueri titik

更新时间:Feb 05, 2026

Hologres adalah mesin gudang data real-time satu atap yang kompatibel dengan protokol PostgreSQL. Hologres mendukung penulisan real-time, pembaruan, dan analisis data dalam jumlah besar, serta menangani Pemrosesan Analitik Online (OLAP) dan analisis ad hoc pada data berskala petabyte. Selain itu, Hologres juga mendukung layanan data online dengan konkurensi tinggi dan latensi rendah. Topik ini menjelaskan cara melakukan uji stres untuk penulisan data, pembaruan data, dan kueri titik di Hologres serta menyajikan hasilnya.

Ikhtisar rencana pengujian

Skenario pengujian

Topik ini mencakup skenario pengujian berikut:

  • Skenario penulisan data: Menguji performa penulisan data ke tabel berorientasi baris, berorientasi kolom, dan hibrida baris-kolom di Hologres.

  • Skenario pembaruan data: Menguji performa pembaruan data pada tabel berorientasi baris, berorientasi kolom, dan hibrida baris-kolom yang memiliki primary key, mencakup pembaruan global maupun parsial.

  • Skenario kueri titik: Menguji performa kueri titik yang difilter berdasarkan primary key pada tabel berorientasi baris dan hibrida baris-kolom.

Alat uji

Topik ini menggunakan holo-e2e-performance-tool, tool pengujian open source yang dikembangkan oleh Hologres. Untuk informasi lebih lanjut, lihat holo-e2e-performance-tool.

holo-e2e-performance-tool memiliki keunggulan berikut:

  • Proses pengujian sederhana: holo-e2e-performance-tool mengintegrasikan semua modul, termasuk pembuatan tabel, pembuatan data uji, dan pengujian performa, sehingga Anda tidak perlu menyiapkan data uji terlebih dahulu.

  • Pengaturan parameter fleksibel: Anda dapat menyesuaikan parameter seperti jumlah kolom, ukuran kolom, dan jumlah baris hanya dengan melakukan penyesuaian sederhana pada item konfigurasi, memungkinkan pengujian performa yang sesuai dengan skenario bisnis aktual Anda.

  • Hasil pengujian akurat: Primary key untuk data uji berupa rangkaian bilangan bulat berurutan yang bertambah. Desain ini memastikan bahwa semua primary key mencapai targetnya dalam skenario pembaruan dan kueri titik hanya dengan menyesuaikan volume data dalam item konfigurasi.

Prosedur pengujian

Prosedur penggunaan holo-e2e-performance-tool untuk menguji penulisan data, pembaruan data, dan kueri titik adalah sebagai berikut:

  1. Jalankan pengujian penulisan data. Setelah mengatur parameter dasar, uji performa penulisan untuk jumlah baris tertentu.

  2. Pertahankan tabel data uji dari skenario penulisan, lalu jalankan kembali pengujian dengan parameter yang sama untuk menguji performa pembaruan data.

  3. Lanjutkan menggunakan tabel data uji dari skenario pembaruan data. Konfigurasikan parameter seperti rentang primary key yang akan dikueri, lalu jalankan pengujian performa kueri titik.

Persiapan

Siapkan lingkungan dasar

Siapkan lingkungan dasar untuk pengujian dengan persyaratan sebagai berikut:

Catatan

Untuk mengurangi variabel yang mungkin memengaruhi hasil pengujian, gunakan instans yang baru dibuat untuk setiap pengujian. Jangan gunakan instans yang telah ditingkatkan atau diturunkan spesifikasinya.

  1. Buat instance ECS.

    Masuk ke Alibaba Cloud dan buat instance Elastic Compute Service (ECS) untuk digunakan sebagai client pengujian. Spesifikasi ECS yang direkomendasikan adalah sebagai berikut:

    • Tipe instans: ecs.g6.4xlarge.

    • Sistem operasi: Alibaba Cloud Linux 3.2104 LTS 64-bit.

    • Penyimpanan: enterprise SSD (ESSD).

    • Instance ECS dan instance Hologres harus berada di wilayah yang sama, menggunakan Virtual Private Cloud (VPC) yang sama, dan berada di zona yang sama.

    Catatan

    Spesifikasi di atas tidak wajib. Selama pengujian, pantau CPU dan bandwidth instance ECS untuk memastikan sumber daya tidak sepenuhnya terpakai, sehingga instance ECS bukan bottleneck performa.

    Untuk informasi lebih lanjut tentang pembuatan instance ECS, lihat Buat instance.

  2. Buat instance Hologres.

    Pengujian ini menggunakan instance dedicated (pay-as-you-go). Karena instance hanya digunakan untuk pengujian, sumber daya komputasi diatur ke 64 vCPU dan memori 256 GB. Anda dapat memilih sumber daya komputasi sesuai kebutuhan.

    Untuk informasi lebih lanjut tentang pembuatan instance Hologres, lihat Beli instance Hologres.

  3. Buat database pengujian.

    Masuk ke instance Hologres yang telah Anda buat dan buat database. Untuk informasi lebih lanjut, lihat Buat database.

Siapkan tool pengujian

  1. Instal Java Development Kit (JDK) 11 pada instance ECS. Untuk informasi lebih lanjut, lihat Deploy OpenJDK secara manual.

  2. Unduh holo-e2e-performance-tool.

  3. Unggah tool pengujian ke instance ECS. Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk mengunggah atau mengunduh file.

Pengujian performa

Skenario penulisan data

Cara kerja

  • Mode penulisan: Data dapat ditulis dalam mode Fixed Copy atau mode Insert.

    • Mode Fixed Copy: Menulis data menggunakan pernyataan COPY dan mengoptimalkan eksekusi SQL dengan Fixed Plan. Untuk informasi lebih lanjut, lihat Gunakan Fixed Plan untuk mempercepat eksekusi SQL.

    • Mode Insert: Menulis data menggunakan pernyataan INSERT dan mengoptimalkan eksekusi SQL dengan Fixed Plan.

  • Konfigurasi khusus: Untuk memastikan kompatibilitas lintas skenario pengujian dan menyederhanakan pengujian serta validasi, tool pengujian menambahkan kolom berikut ke tabel selain kolom yang Anda konfigurasi:

    • Kolom primary key id: Berfungsi sebagai primary key dan distribution key untuk tabel. Nilainya dimulai dari 1 dan bertambah untuk setiap baris selama pengujian.

    • Kolom waktu ts: Berfungsi sebagai segment key untuk tabel. Waktu saat ini ditulis ke kolom ini selama pengujian.

  • Prinsip penulisan data: Selama pengujian, tool menulis data dengan menambah primary key id mulai dari 1. Waktu saat ini ditulis ke kolom waktu. Untuk kolom TEXT lain yang dikonfigurasi, string dengan panjang target ditulis dengan primary key id ditambahkan. Pengujian berhenti setelah mencapai waktu target atau jumlah baris target, lalu hasilnya dihitung.

Prosedur

  1. Buat file konfigurasi pengujian pada instance ECS.

    1. Jalankan perintah berikut untuk membuat file bernama test_insert.conf.

      vim test_insert.conf
    2. Tekan i untuk masuk ke mode edit dan tambahkan konten contoh berikut.

      Catatan

      Contoh berikut menggunakan tabel berorientasi baris. Untuk menguji tabel berorientasi kolom atau hibrida baris-kolom, ubah nilai parameter orientation menjadi column atau row,column.

      # Konfigurasi koneksi
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # Konfigurasi penulisan
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # Konfigurasi tabel
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.orientation=row
      
      # Konfigurasi lainnya
      put.createTableBeforeRun=true
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      Tabel berikut menjelaskan parameter-parameter tersebut.

      Modul

      Parameter

      Deskripsi

      Catatan

      Konfigurasi koneksi

      jdbcUrl

      String koneksi Java Database Connectivity (JDBC) untuk Hologres. Formatnya adalah jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>.

      Untuk ENDPOINT, masukkan nama domain VPC instance Hologres. Anda dapat memperoleh nama domain dari bagian Network Information pada halaman Instance Details di Konsol Hologres.

      username

      ID AccessKey akun Alibaba Cloud Anda.

      Untuk memperoleh ID AccessKey, kunjungi halaman Manajemen AccessKey.

      password

      Rahasia AccessKey akun Alibaba Cloud Anda.

      Untuk memperoleh Rahasia AccessKey, kunjungi halaman Manajemen AccessKey.

      writeThreadSize

      Jumlah thread penulisan yang dijalankan oleh setiap Holo Client. Setiap thread penulisan Holo Client menggunakan satu koneksi. Parameter ini hanya berlaku dalam mode Insert.

      Untuk informasi lebih lanjut tentang Holo Client, lihat Holo Client.

      Tulis konfigurasi

      threadSize

      Jumlah thread untuk pembuatan data.

      • Dalam mode FIXED_COPY, setiap thread menggunakan satu koneksi. Jumlah total koneksi sama dengan jumlah thread.

      • Dalam mode INSERT, satu Holo Client digunakan bersama secara default. Jumlah total koneksi adalah writeThreadSize.

      Untuk instance 64-vCPU yang digunakan dalam pengujian ini, kami merekomendasikan mengatur jumlah thread ke 8 dalam mode FIXED_COPY. Sesuaikan parameter ini berdasarkan tipe instance dan karakteristik data Anda.

      testByTime

      Menentukan apakah pengujian dijalankan selama durasi tertentu atau untuk jumlah baris tertentu.

      Nilai yang valid:

      • true: Pengujian dijalankan selama waktu yang ditentukan.

      • false: Pengujian dijalankan untuk jumlah baris tertentu.

      rowNumber

      Jumlah baris target untuk pengujian. Parameter ini hanya berlaku ketika testByTime diatur ke false.

      N/A

      testTime

      Durasi target untuk pengujian, dalam milidetik. Parameter ini hanya berlaku ketika testByTime diatur ke true.

      N/A

      Konfigurasi tabel

      tableName

      Nama tabel target untuk pengujian.

      N/A

      columnCount

      Jumlah kolom dalam tabel. Tipe data setiap kolom adalah TEXT.

      N/A

      columnSize

      Panjang karakter setiap kolom dalam tabel.

      N/A

      orientation

      Kelas penyimpanan tabel.

      Nilai yang valid:

      • row: tabel berorientasi baris.

      • column: tabel berorientasi kolom.

      • row,column: tabel hibrida baris-kolom.

      Konfigurasi lainnya

      createTableBeforeRun

      Menentukan apakah tabel dibuat sebelum pengujian dimulai.

      Nilai yang valid:

      • true: Membuat tabel.

      • false: Tidak membuat tabel.

      Jika Anda mengatur ini ke true, tool pengujian terlebih dahulu menghapus tabel dengan nama yang sama jika ada, lalu membuat yang baru. Pastikan nama tabel target tidak sama dengan tabel lain di instance.

      deleteTableAfterDone

      Menentukan apakah tabel dihapus setelah pengujian selesai.

      Nilai yang valid:

      • true: Menghapus tabel.

      • false: Tidak menghapus tabel.

      Untuk melakukan pengujian seperti pembaruan atau kueri titik pada tabel yang sama setelah pengujian penulisan, Anda harus mengatur parameter ini ke true.

      vacuumTableBeforeRun

      Menentukan apakah operasi VACUUM dijalankan sebelum pengujian dimulai.

      Nilai yang valid:

      • true: Menjalankan operasi VACUUM.

      • false: Tidak menjalankan operasi VACUUM.

      Menjalankan VACUUM memaksa operasi compaction. Hal ini hanya memengaruhi pengujian pembaruan data dalam mode INSERT dan tidak memengaruhi mode FIXED_COPY.

    3. Tekan tombol Esc, masukkan :wq, lalu tekan Enter untuk menyimpan dan menutup file.

  2. Jalankan pengujian penulisan data.

    Jalankan pernyataan berikut untuk memulai pengujian.

    # Jalankan pengujian penulisan data dalam mode Fixed Copy
    java -jar holo-e2e-performance-tool-1.0.0.jar test_insert.conf FIXED_COPY
    • Tool pengujian menyimpan hasilnya ke file bernama result.csv di direktori root secara default. Parameter mode untuk skenario penulisan dan pembaruan data memiliki dua nilai: FIXED_COPY untuk mode Fixed Copy dan INSERT untuk mode Insert.

  3. Lihat hasil pengujian.

    Jalankan perintah berikut untuk melihat hasil pengujian.

    cat result.csv

    File result.csv berisi bidang-bidang berikut.

    Bidang

    Deskripsi

    start

    Waktu mulai pengujian.

    end

    Waktu selesai pengujian.

    count

    Jumlah baris data uji.

    qps1

    Rata-rata QPS dalam 1 menit terakhir.

    qps5

    Rata-rata QPS dalam 5 menit terakhir.

    qps15

    Rata-rata QPS dalam 15 menit terakhir.

    latencyMean

    Latensi rata-rata.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP99

    Latensi P99.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP999

    Latensi P999.

    Dikumpulkan dalam mode INSERT dan GET.

    version

    Versi instance.

Skenario pembaruan data

Cara kerja

  • Selama pengujian, tool memperbarui data dengan menambah primary key id mulai dari 1. Kolom waktu diperbarui ke waktu saat ini. Untuk kolom TEXT lain yang perlu diperbarui (Anda dapat mengonfigurasi pembaruan global atau parsial), string dengan panjang target ditulis ulang dengan primary key id ditambahkan. Pengujian berhenti setelah mencapai waktu target atau jumlah baris target, lalu hasilnya dihitung.

  • Anda harus terlebih dahulu menulis data ke tabel dan mengatur deleteTableAfterDone ke false agar tabel berisi data yang akan diperbarui.

Prosedur untuk pembaruan global

  1. Buat file konfigurasi pengujian pada instance ECS.

    1. Jalankan perintah berikut untuk membuat file bernama test_update.conf.

      vim test_update.conf
    2. Tekan i untuk masuk ke mode edit dan tambahkan konten contoh berikut.

      Catatan
      • Contoh berikut menggunakan tabel berorientasi baris. Untuk menguji tabel berorientasi kolom atau hibrida baris-kolom, ubah nilai parameter orientation menjadi column atau row,column.

      • Dibandingkan dengan skenario penulisan data, Anda hanya perlu mengubah nilai parameter createTableBeforeRun dari true menjadi false. Pertahankan semua parameter lainnya sama untuk memulai pengujian pembaruan data.

      # Konfigurasi koneksi
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # Konfigurasi penulisan
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # Konfigurasi tabel
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.orientation=row
      
      # Konfigurasi lainnya
      put.createTableBeforeRun=false
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      Untuk deskripsi parameter, lihat tabel deskripsi parameter di bagian skenario Penulisan data.

    3. Tekan tombol Esc, masukkan :wq, lalu tekan Enter untuk menyimpan dan menutup file.

  2. Jalankan pengujian pembaruan global.

    Jalankan pernyataan berikut untuk memulai pengujian.

    # Jalankan pengujian penulisan data dalam mode Fixed Copy
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update.conf FIXED_COPY

  3. Lihat hasil pengujian.

    Jalankan perintah berikut untuk melihat hasil pengujian.

    cat result.csv

    File result.csv berisi bidang-bidang berikut.

    Bidang

    Deskripsi

    start

    Waktu mulai pengujian.

    end

    Waktu selesai pengujian.

    count

    Jumlah baris data uji.

    qps1

    Rata-rata QPS dalam 1 menit terakhir.

    qps5

    Rata-rata QPS dalam 5 menit terakhir.

    qps15

    Rata-rata QPS dalam 15 menit terakhir.

    latencyMean

    Latensi rata-rata.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP99

    Latensi P99.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP999

    Latensi P999.

    Dikumpulkan dalam mode INSERT dan GET.

    version

    Versi instance.

Prosedur untuk pembaruan parsial

  1. Buat file konfigurasi pengujian pada instance ECS.

    1. Jalankan perintah berikut untuk membuat file bernama test_update_part.conf.

      vim test_update_part.conf
    2. Tekan i untuk masuk ke mode edit dan tambahkan konten berikut.

      Catatan
      • Contoh berikut menggunakan tabel berorientasi baris. Untuk menguji tabel berorientasi kolom atau hibrida baris-kolom, ubah nilai parameter orientation menjadi column atau row,column.

      • Dibandingkan dengan skenario pembaruan global, skenario pembaruan parsial memerlukan parameter writeColumnCount. Parameter ini menentukan berapa banyak dari total kolom TEXT yang ditulis. Dalam topik ini, parameter ini diatur ke 50% dari columnCount tabel.

      # Konfigurasi koneksi
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # Konfigurasi penulisan
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # Konfigurasi tabel
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.writeColumnCount=10
      put.orientation=row
      
      # Konfigurasi lainnya
      put.createTableBeforeRun=false
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      Untuk deskripsi parameter, lihat tabel deskripsi parameter di skenario pembaruan global.

    3. Tekan tombol Esc, masukkan :wq, lalu tekan Enter untuk menyimpan dan menutup file.

  2. Jalankan pengujian pembaruan parsial.

    Jalankan perintah berikut untuk memulai pengujian.

    # Jalankan pengujian penulisan data dalam mode Fixed Copy
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update_part.conf FIXED_COPY

  3. Lihat hasil pengujian.

    Jalankan perintah berikut untuk melihat hasil pengujian.

    cat result.csv

    File result.csv berisi bidang-bidang berikut.

    Bidang

    Deskripsi

    start

    Waktu mulai pengujian.

    end

    Waktu selesai pengujian.

    count

    Jumlah baris data uji.

    qps1

    Rata-rata QPS dalam 1 menit terakhir.

    qps5

    Rata-rata QPS dalam 5 menit terakhir.

    qps15

    Rata-rata QPS dalam 15 menit terakhir.

    latencyMean

    Latensi rata-rata.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP99

    Latensi P99.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP999

    Latensi P999.

    Dikumpulkan dalam mode INSERT dan GET.

    version

    Versi instance.

Skenario kueri titik

Cara kerja

  • Mode kueri titik:

    • Mode sinkron: API kueri titik bersifat blocking. Pemanggilan menunggu permintaan aktual selesai sebelum mengembalikan hasil. Untuk satu thread pekerja, setiap permintaan kueri titik sesuai dengan satu pernyataan SQL dari awal hingga akhir. Permintaan berikutnya hanya dapat dimulai setelah permintaan saat ini selesai. Mode sinkron cocok untuk skenario yang sensitif terhadap latensi tetapi tidak terhadap throughput.

    • Mode asinkron: API kueri titik bersifat non-blocking. Pemanggilan langsung mengembalikan hasil tanpa menunggu permintaan aktual selesai. Setelah beberapa permintaan kueri titik diajukan secara asinkron, thread pekerja di client menggabungkannya menjadi satu pernyataan SQL untuk diproses ketika ukuran batch atau interval pengiriman terpenuhi. Mode asinkron cocok untuk skenario yang memerlukan throughput tinggi dan kurang sensitif terhadap latensi, seperti menggunakan Flink untuk mengonsumsi data real-time guna melakukan penggabungan tabel dengan throughput tinggi.

  • Prinsip pengujian kueri titik: Selama pengujian, tool menghasilkan id target secara acak dalam rentang primary key yang dikonfigurasi dan melakukan kueri titik sinkron atau asinkron. Pengujian berhenti setelah mencapai waktu target, lalu hasilnya dihitung.

Prosedur

Catatan
  • Jika data yang dihasilkan secara otomatis tidak memenuhi kebutuhan bisnis Anda untuk kueri titik, Anda dapat menulis data bisnis sendiri. Buat tabel dengan properti seperti primary key, distribution key, dan segment key, lalu ikuti langkah-langkah di bawah ini untuk menjalankan pengujian performa kueri titik.

  • Tabel kustom harus berisi primary key satu kolom dengan tipe data INT atau BIGINT. Nilai primary key harus berurutan.

  1. Buat file konfigurasi pengujian pada instance ECS.

    1. Jalankan perintah berikut untuk membuat file bernama test.conf.

      vim test.conf
    2. Tekan i untuk masuk ke mode edit dan tambahkan konten berikut.

      Catatan

      Contoh berikut menggunakan tabel berorientasi baris. Untuk menguji tabel hibrida baris-kolom, ubah nilai parameter orientation menjadi row,column.

      # Konfigurasi koneksi
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.readThreadSize=32
      
      # Konfigurasi pengujian
      get.threadSize=8
      get.testTime=300000
      get.tableName=kv_test
      get.async=true
      get.vacuumTableBeforeRun=true
      get.keyRangeParams=L1-200000000
      
      # Konfigurasi inisialisasi tabel (hanya berlaku dalam mode PREPARE_GET_DATA)
      prepareGetData.rowNumber=200000000
      prepareGetData.orientation=row
      put.columnCount=20
      put.columnSize=20

      Tabel berikut menjelaskan parameter konfigurasi.

      Modul

      Parameter

      Deskripsi

      Catatan

      Konfigurasi koneksi

      jdbcUrl

      String koneksi JDBC untuk Hologres. Formatnya adalah jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>.

      Untuk ENDPOINT, masukkan nama domain VPC instance Hologres. Anda dapat memperoleh nama domain dari bagian Network Information pada halaman Instance Details di Konsol Hologres.

      username

      ID AccessKey akun Alibaba Cloud Anda.

      Untuk memperoleh ID AccessKey, kunjungi halaman Manajemen AccessKey.

      password

      Rahasia AccessKey akun Alibaba Cloud Anda.

      Untuk memperoleh Rahasia AccessKey, kunjungi halaman Manajemen AccessKey.

      readThreadSize

      Jumlah koneksi untuk skenario kueri.

      • Dalam mode asinkron, untuk meningkatkan efisiensi batching, kami merekomendasikan mengatur ini menjadi 2 hingga 4 kali jumlah thread (threadSize).

      • Dalam mode sinkron, untuk memastikan pemanfaatan penuh sumber daya komputasi, kami merekomendasikan menambah jumlah koneksi. Dalam topik ini, jumlah koneksi diatur ke 100.

      Konfigurasi pengujian

      threadSize

      Jumlah thread untuk menghasilkan kondisi permintaan.

      Untuk instance 64-vCPU yang digunakan dalam pengujian ini:

      • Dalam mode kueri titik asinkron, kami merekomendasikan mengatur jumlah thread ke 8.

      • Dalam mode kueri titik sinkron, kami merekomendasikan mengatur jumlah thread ke 500.

      Sesuaikan parameter ini berdasarkan tipe instance dan karakteristik data Anda.

      testTime

      Durasi target untuk pengujian, dalam milidetik.

      N/A.

      tableName

      Nama tabel target untuk pengujian.

      N/A.

      async

      Menentukan apakah pengujian kueri titik bersifat asinkron.

      Nilai yang valid:

      • true: asinkron.

      • false: sinkron.

      vacuumTableBeforeRun

      Menentukan apakah operasi vacuum dijalankan sebelum pengujian dimulai.

      Nilai yang valid:

      • true: Menjalankan operasi VACUUM.

      • false: Tidak menjalankan operasi VACUUM.

      Menjalankan VACUUM memaksa operasi compaction.

      keyRangeParams

      Rentang parameter primary key untuk kueri titik. Formatnya adalah <I/L><Start>-<End>.

      Deskripsi parameter:

      • I/L: I menunjukkan tipe INT, dan L menunjukkan tipe BIGINT.

      • Start: Nilai awal primary key.

      • End: Nilai akhir primary key.

      Selama pengujian kueri titik, tool menghasilkan primary key target secara acak dalam rentang yang dikonfigurasi untuk dikueri.

      Konfigurasi inisialisasi tabel (hanya berlaku dalam mode PREPARE_GET_DATA)

      rowNumber

      Jumlah baris data yang akan di-pragenerasi untuk tabel.

      N/A.

      orientation

      Kelas penyimpanan tabel yang akan di-pragenerasi.

      Nilai yang valid:

      • row: tabel berorientasi baris.

      • column: tabel berorientasi kolom.

      • row,column: Tabel dengan baris dan kolom.

      columnCount

      Jumlah kolom dalam tabel yang akan di-pragenerasi. Tipe data setiap kolom adalah TEXT.

      N/A.

      columnSize

      Panjang karakter setiap kolom dalam tabel yang akan di-pragenerasi.

      N/A.

    3. Tekan tombol Esc, masukkan :wq, lalu tekan Enter untuk menyimpan dan menutup file.

  2. Jalankan pernyataan berikut untuk memulai pengujian:

    Catatan

    Parameter mode untuk skenario kueri titik memiliki dua nilai: PREPARE_GET_DATA untuk mode persiapan data sebelum kueri titik, dan GET untuk mode kueri titik. Jika Anda telah menulis data bisnis atau telah menyelesaikan pengujian penulisan dan pembaruan data serta mempertahankan tabel uji, Anda tidak perlu menggunakan mode PREPARE_GET_DATA. Anda dapat langsung menggunakan mode GET untuk kueri titik.

    # Gunakan mode PREPARE_GET_DATA untuk menyiapkan data
    java -jar holo-e2e-performance-tool-1.0.0.jar test.conf PREPARE_GET_DATA 
    
    # Gunakan mode GET untuk menjalankan pengujian kueri titik
    java -jar holo-e2e-performance-tool-1.0.0.jar test.conf GET
  3. Lihat hasil pengujian.

    Jalankan perintah berikut untuk melihat hasil pengujian.

    cat result.csv

    File result.csv berisi bidang-bidang berikut.

    Bidang

    Deskripsi

    start

    Waktu mulai pengujian.

    end

    Waktu selesai pengujian.

    count

    Jumlah baris data uji.

    qps1

    Rata-rata QPS dalam 1 menit terakhir.

    qps5

    Rata-rata QPS dalam 5 menit terakhir.

    qps15

    Rata-rata QPS dalam 15 menit terakhir.

    latencyMean

    Latensi rata-rata.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP99

    Latensi P99.

    Dikumpulkan dalam mode INSERT dan GET.

    latencyP999

    Latensi P999.

    Dikumpulkan dalam mode INSERT dan GET.

    version

    Versi instance.

Hasil pengujian

Topik ini menguji beberapa skenario. Untuk skenario penulisan dan pembaruan data, tiga kelas penyimpanan diuji: berorientasi baris, berorientasi kolom, dan hibrida baris-kolom. Karena tabel berorientasi kolom tidak cocok untuk kueri titik, hanya kelas penyimpanan berorientasi baris dan hibrida baris-kolom yang diuji untuk skenario kueri titik.

Pengujian performa dikonfigurasi sebagai berikut: Jumlah kolom dalam tabel diatur ke 20, 50, dan 100, dan ukuran setiap kolom adalah 20 karakter. Pengujian ini menggunakan instance Hologres V3.0.22 (dengan JDK 11) dengan 64 vCPU. Volume data total yang direkomendasikan untuk tipe instance ini adalah antara 40 juta hingga 400 juta baris. Oleh karena itu, volume data untuk setiap skenario dalam pengujian ini adalah 200 juta baris.

Catatan
  • Parameter seperti tipe instance, skema tabel, volume data, dan konkurensi dapat memengaruhi performa secara signifikan. Dalam pengujian aktual Anda, tentukan terlebih dahulu tipe instance Hologres, skema tabel, dan volume data, lalu sesuaikan konkurensi untuk beberapa kali pengujian.

  • Jika tujuan Anda adalah menguji performa optimal Hologres, pantau utilisasi CPU instance setelah setiap pengujian. Jika sumber daya CPU tidak sepenuhnya terpakai, tingkatkan konkurensi dan lanjutkan pengujian untuk memperoleh hasil performa yang paling akurat dan optimal.

  • 20 kolom

    Nilai spesifik untuk QPS dan latensi (untuk kueri titik), ditunjukkan di bawah ini. QPS didasarkan pada metrik qps1 dan latensi didasarkan pada metrik latencyMean dalam file hasil pengujian.

    Format penyimpanan

    Skenario pengujian

    Konfigurasi konkurensi

    QPS (dalam puluhan ribu)

    Latensi (ms)

    Berorientasi baris

    Penulisan (Static copy)

    threadSize=8

    88,3

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    91,1

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    136,7

    N/A

    Kueri titik (asinkron)

    threadSize=8

    readThreadSize=32

    43,6

    8,60

    Kueri titik (sinkron)

    threadSize=100

    readThreadSize=100

    26,1

    7,88

    Berorientasi kolom

    Penulisan (Fixed copy)

    threadSize=8

    29,9

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    18,5

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    12,8

    N/A

    Hibrida baris-kolom

    Penulisan (Fixed copy)

    threadSize=8

    25,0

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    17,3

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    17,5

    N/A

    Kueri Titik (Asinkron)

    threadSize=8

    readThreadSize=32

    40,4

    8,75

    Kueri Titik (Sinkron)

    threadSize=100

    readThreadSize=100

    27,0

    8,12

  • 50 kolom

    Tabel berikut menunjukkan nilai QPS dan latensi (untuk kueri titik) spesifik dari hasil pengujian. Nilai QPS diambil dari metrik qps1, dan nilai latensi diambil dari metrik latencyMean dalam file hasil.

    Format penyimpanan

    Skenario pengujian

    Konfigurasi konkurensi

    QPS (dalam puluhan ribu)

    Latensi (ms)

    Berorientasi baris

    Write (salinan tetap)

    threadSize=8

    41,9

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    38,2

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    69,8

    N/A

    Kueri titik (asinkron)

    threadSize=8

    readThreadSize=32

    35,7

    10,20

    Kueri Titik (Sinkron)

    threadSize=100

    readThreadSize=100

    24,0

    9,28

    Berorientasi kolom

    Tulis (Salinan Tetap)

    threadSize=8

    15,5

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    11,7

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    6,4

    N/A

    Hibrida baris-kolom

    Tulis (Salinan Tetap)

    threadSize=8

    13,7

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    10,5

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    11,6

    N/A

    Kueri Titik (Asinkron)

    threadSize=8

    readThreadSize=32

    31,5

    12,29

    Kueri titik (sync)

    threadSize=100

    readThreadSize=100

    24,2

    10,00

  • 100 kolom

    Tabel berikut menunjukkan nilai QPS dan latensi (untuk kueri titik) spesifik dari hasil pengujian. Nilai QPS diambil dari metrik qps1, dan nilai latensi diambil dari metrik latencyMean dalam file hasil.

    Format penyimpanan

    Skenario pengujian

    Konfigurasi konkurensi

    QPS (dalam puluhan ribu)

    Latensi (ms)

    Berorientasi baris

    Penulisan (Fixed copy)

    threadSize=8

    24,4

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    22,5

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    38,1

    N/A

    Kueri titik (asinkron)

    threadSize=8

    readThreadSize=32

    26,6

    14,34

    Kueri titik (sinkron)

    threadSize=100

    readThreadSize=100

    21,4

    12,12

    Berorientasi kolom

    Penulisan (Fixed copy)

    threadSize=8

    8,4

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    6,9

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    3.1

    N/A

    Hibrida baris-kolom

    Penulisan (Fixed copy)

    threadSize=8

    7,6

    N/A

    Pembaruan global (Fixed copy)

    threadSize=8

    5,3

    N/A

    Pembaruan parsial (Fixed copy)

    threadSize=8

    6,8

    N/A

    Kueri titik (asinkron)

    threadSize=8

    readThreadSize=32

    25,0

    15,66

    Kueri titik (sinkron)

    threadSize=100

    readThreadSize=100

    21,4

    13,79