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:
-
Jalankan pengujian penulisan data. Setelah mengatur parameter dasar, uji performa penulisan untuk jumlah baris tertentu.
-
Pertahankan tabel data uji dari skenario penulisan, lalu jalankan kembali pengujian dengan parameter yang sama untuk menguji performa pembaruan data.
-
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:
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.
-
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.
CatatanSpesifikasi 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.
-
-
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.
-
Buat database pengujian.
Masuk ke instance Hologres yang telah Anda buat dan buat database. Untuk informasi lebih lanjut, lihat Buat database.
Siapkan tool pengujian
-
Instal Java Development Kit (JDK) 11 pada instance ECS. Untuk informasi lebih lanjut, lihat Deploy OpenJDK secara manual.
-
Unduh holo-e2e-performance-tool.
-
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
idmulai dari 1. Waktu saat ini ditulis ke kolom waktu. Untuk kolom TEXT lain yang dikonfigurasi, string dengan panjang target ditulis dengan primary keyidditambahkan. Pengujian berhenti setelah mencapai waktu target atau jumlah baris target, lalu hasilnya dihitung.
Prosedur
-
Buat file konfigurasi pengujian pada instance ECS.
-
Jalankan perintah berikut untuk membuat file bernama test_insert.conf.
vim test_insert.conf -
Tekan
iuntuk masuk ke mode edit dan tambahkan konten contoh berikut.CatatanContoh berikut menggunakan tabel berorientasi baris. Untuk menguji tabel berorientasi kolom atau hibrida baris-kolom, ubah nilai parameter
orientationmenjadicolumnataurow,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=falseTabel 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.
-
-
Tekan tombol Esc, masukkan
:wq, lalu tekan Enter untuk menyimpan dan menutup file.
-
-
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.csvdi direktori root secara default. Parameter mode untuk skenario penulisan dan pembaruan data memiliki dua nilai:FIXED_COPYuntuk mode Fixed Copy danINSERTuntuk mode Insert.
-
-
Lihat hasil pengujian.
Jalankan perintah berikut untuk melihat hasil pengujian.
cat result.csvFile
result.csvberisi 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
idmulai 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 keyidditambahkan. 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
-
Buat file konfigurasi pengujian pada instance ECS.
-
Jalankan perintah berikut untuk membuat file bernama test_update.conf.
vim test_update.conf -
Tekan
iuntuk 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
orientationmenjadicolumnataurow,column. -
Dibandingkan dengan skenario penulisan data, Anda hanya perlu mengubah nilai parameter
createTableBeforeRundaritruemenjadifalse. 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=falseUntuk deskripsi parameter, lihat tabel deskripsi parameter di bagian skenario Penulisan data.
-
-
Tekan tombol Esc, masukkan
:wq, lalu tekan Enter untuk menyimpan dan menutup file.
-
-
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 -
Lihat hasil pengujian.
Jalankan perintah berikut untuk melihat hasil pengujian.
cat result.csvFile
result.csvberisi 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
-
Buat file konfigurasi pengujian pada instance ECS.
-
Jalankan perintah berikut untuk membuat file bernama test_update_part.conf.
vim test_update_part.conf -
Tekan
iuntuk 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
orientationmenjadicolumnataurow,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% daricolumnCounttabel.
# 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=falseUntuk deskripsi parameter, lihat tabel deskripsi parameter di skenario pembaruan global.
-
-
Tekan tombol Esc, masukkan
:wq, lalu tekan Enter untuk menyimpan dan menutup file.
-
-
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 -
Lihat hasil pengujian.
Jalankan perintah berikut untuk melihat hasil pengujian.
cat result.csvFile
result.csvberisi 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
idtarget 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
-
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.
-
Buat file konfigurasi pengujian pada instance ECS.
-
Jalankan perintah berikut untuk membuat file bernama test.conf.
vim test.conf -
Tekan
iuntuk masuk ke mode edit dan tambahkan konten berikut.CatatanContoh berikut menggunakan tabel berorientasi baris. Untuk menguji tabel hibrida baris-kolom, ubah nilai parameter
orientationmenjadirow,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=20Tabel 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.
-
-
Tekan tombol Esc, masukkan
:wq, lalu tekan Enter untuk menyimpan dan menutup file.
-
-
Jalankan pernyataan berikut untuk memulai pengujian:
CatatanParameter mode untuk skenario kueri titik memiliki dua nilai:
PREPARE_GET_DATAuntuk mode persiapan data sebelum kueri titik, danGETuntuk 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 -
Lihat hasil pengujian.
Jalankan perintah berikut untuk melihat hasil pengujian.
cat result.csvFile
result.csvberisi 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.
-
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
qps1dan latensi didasarkan pada metriklatencyMeandalam 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 metriklatencyMeandalam 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 metriklatencyMeandalam 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