Topik ini menjelaskan cara menggunakan benchmark TPC-H untuk menjalankan pengujian kinerja pada skenario kueri Pemrosesan Analitik Online (Online Analytical Processing/OLAP).
TPC-H
Deskripsi berikut berasal dari TPC Benchmark H (TPC-H):
"TPC-H adalah benchmark decision support yang terdiri atas serangkaian kueri ad-hoc berorientasi bisnis dan modifikasi data secara konkuren. Kueri serta data yang mengisi database dipilih agar relevan secara luas di berbagai industri. Benchmark ini menggambarkan sistem decision support yang memproses volume data besar, menjalankan kueri dengan tingkat kompleksitas tinggi, serta memberikan jawaban atas pertanyaan bisnis kritis."
Untuk detail selengkapnya, lihat Spesifikasi TPCH.
Implementasi TPC-H ini didasarkan pada benchmark TPC-H, tetapi tidak sepenuhnya memenuhi persyaratan resminya. Oleh karena itu, hasil pengujian ini tidak dapat dibandingkan dengan hasil benchmark TPC-H resmi yang telah dipublikasikan.
Set Data
Benchmark TPC-H dikembangkan oleh Transaction Processing Performance Council (TPC) untuk mensimulasikan aplikasi decision support dan banyak digunakan di dunia akademis maupun industri guna mengevaluasi kinerja teknologi decision support.
TPC-H memodelkan gudang data untuk sistem penjualan berdasarkan lingkungan produksi dunia nyata. Benchmark ini mencakup delapan tabel dengan volume data yang dapat diatur dari 1 GB hingga 3 TB, serta 22 kueri. Metrik utamanya adalah waktu respons setiap kueri, diukur sejak pengiriman hingga pengembalian hasil. Hasil pengujian memberikan ikhtisar komprehensif mengenai kemampuan sistem dalam memproses kueri. Untuk informasi lebih lanjut, lihat benchmark TPC-H.
Prosedur
Pengujian ini menggunakan 22 kueri dari benchmark TPC-H. Hasil pengujian secara langsung dipengaruhi oleh volume data. Generator data TPC-H menggunakan faktor skala (scale factor/SF) untuk mengontrol volume data yang dihasilkan, di mana 1 SF setara dengan 1 GB data.
Volume data yang ditentukan hanya mencakup data mentah dan tidak termasuk ruang yang diperlukan untuk indeks. Oleh karena itu, Anda harus menyediakan ruang penyimpanan tambahan saat menyiapkan lingkungan.
-
Siapkan lingkungan.
Siapkan sumber daya yang diperlukan untuk skenario kueri OLAP.
CatatanUntuk hasil yang konsisten, gunakan instans baru untuk setiap pengujian. Hindari penggunaan instans yang sebelumnya telah diskalakan naik atau turun.
-
Buat Instance ECS. Untuk informasi selengkapnya, lihat Create an ECS instance.
Instance ECS untuk pengujian ini dikonfigurasi sebagai berikut:
-
Tipe instans: ecs.g6e.4xlarge
-
Sistem operasi: CentOS 7.9
-
Disk data: Enterprise SSD (ESSD). Kapasitas disk bergantung pada volume data uji.
-
-
Buat instance StarRocks. Untuk informasi selengkapnya, lihat Create an instance.
Untuk pengujian ini, backend (BE) dikonfigurasi dengan 8 unit komputasi (compute units/CUs), menyediakan 8 core CPU dan memori 32 GB. Anda dapat memilih konfigurasi sesuai kebutuhan bisnis Anda.
CatatanBuat instance StarRocks dan instance ECS di Wilayah dan Virtual Private Cloud (VPC) yang sama.
-
-
Konfigurasikan parameter toolkit.
-
Masuk ke instance ECS. Untuk informasi selengkapnya, lihat Connect to an ECS instance.
-
Jalankan perintah berikut untuk mengunduh dan mengekstrak toolkit starrocks-benchmark.
wget https://emr-olap.oss-cn-beijing.aliyuncs.com/packages/starrocks-benchmark-for-serverless.tar.gz tar xzvf starrocks-benchmark-for-serverless.tar.gz -
Jalankan perintah berikut untuk berpindah ke direktori starrocks-benchmark-for-serverless.
cd starrocks-benchmark-for-serverless -
Jalankan perintah
vim group_vars/alluntuk mengonfigurasi parameter pengujian benchmark.# mysql client config login_host: fe-c-8764bab92bc6****-internal.starrocks.aliyuncs.com login_port: 9030 login_user: admin login_password: xxxx # oss config bucket: "" endpoint: "" access_key_id: "" access_key_secret: "" # benchmark config scale_factor: 1 work_dir_root: /mnt/disk1/starrocks-benchmark/workdirs dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasetsTabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Catatan
login_host
Titik akhir internal frontend (FE) instance StarRocks.
Pada tab Instance Details instance StarRocks Anda, temukan titik akhir tersebut di bagian FE Details di bawah Internal Endpoint.
PentingHindari penggunaan titik akhir publik.
Parameter koneksi client StarRocks.
login_port
Port kueri FE instance StarRocks. Nilai default-nya adalah 9030.
Pada tab Instance Details instance StarRocks Anda, temukan port tersebut di bagian FE Details di bawah Query Port.
login_user
User awal instance StarRocks.
login_password
Password untuk user awal instance StarRocks.
bucket
Nama Bucket OSS.
Opsional. Konfigurasi OSS. Jika Anda mengonfigurasi parameter ini, toolkit akan menghasilkan dan menyimpan set data uji di OSS.
endpoint
Titik akhir untuk mengakses OSS.
access_key_id
ID AccessKey Akun Alibaba Cloud Anda.
access_key_secret
Rahasia AccessKey Akun Alibaba Cloud Anda.
scale_factor
Faktor skala untuk set data, yang mengontrol volume data. Nilai default-nya adalah 1. Satuannya adalah GB.
Konfigurasi benchmark.
work_dir_root
Direktori kerja root. Direktori ini menyimpan SQL pembuatan tabel TPC-H, SQL yang dieksekusi, dan artefak lainnya. Nilai default-nya adalah /mnt/disk1/starrocks-benchmark/workdirs.
dataset_generate_root_path
Jalur penyimpanan untuk set data uji yang dihasilkan. Nilai default-nya adalah /mnt/disk1/starrocks-benchmark/datasets.
Jika Anda mengonfigurasi OSS, bucket yang ditentukan akan dimount ke jalur ini.
-
-
Jalankan perintah berikut untuk melakukan pengujian TPC-H end-to-end secara otomatis.
bin/run_tpch.shPerintah ini mengotomatiskan seluruh proses pengujian TPC-H, termasuk pembuatan database dan tabel, pembuatan serta pemuatan set data, dan eksekusi 22 kueri SQL.
Operasi lainnya:
-
Untuk hanya memuat set data, jalankan perintah berikut.
bin/run_tpch.sh reload -
Untuk hanya menjalankan pengujian kueri TPC-H, jalankan perintah berikut.
bin/run_tpch.sh query
-
-
Lihat hasilnya.
-
Ringkasan hasil pengujian
Saat perintah
bin/run_tpch.shselesai dijalankan, hasil pengujian akan dicetak, yang tampak seperti berikut:TASK [tpc_h : debug] **************************************************************************************************************************************** ok: [10.1.**.**] => { "command_output.stdout_lines": [ "[info] 2022-03-01 09:51:23.295 | Run sql queries started.", "[info] 2022-03-01 09:51:23.330 | Run q10.sql started.", "[info] 2022-03-01 09:51:23.913 | Run q10.sql finished. Time taken: 0:00:00, .557 seconds", "[info] 2022-03-01 09:51:23.923 | Run q11.sql started.", "[info] 2022-03-01 09:51:24.026 | Run q11.sql finished. Time taken: 0:00:00, .100 seconds", "[info] 2022-03-01 09:51:24.038 | Run q12.sql started.", "[info] 2022-03-01 09:51:24.192 | Run q12.sql finished. Time taken: 0:00:00, .151 seconds", "[info] 2022-03-01 09:51:24.204 | Run q13.sql started.", "[info] 2022-03-01 09:51:24.553 | Run q13.sql finished. Time taken: 0:00:00, .347 seconds", "[info] 2022-03-01 09:51:24.563 | Run q14.sql started.", "[info] 2022-03-01 09:51:24.665 | Run q14.sql finished. Time taken: 0:00:00, .098 seconds", "[info] 2022-03-01 09:51:24.675 | Run q15.sql started.", "[info] 2022-03-01 09:51:24.852 | Run q15.sql finished. Time taken: 0:00:00, .175 seconds", "[info] 2022-03-01 09:51:24.864 | Run q16.sql started.", "[info] 2022-03-01 09:51:25.008 | Run q16.sql finished. Time taken: 0:00:00, .142 seconds", "[info] 2022-03-01 09:51:25.018 | Run q17.sql started.", "[info] 2022-03-01 09:51:25.269 | Run q17.sql finished. Time taken: 0:00:00, .248 seconds", "[info] 2022-03-01 09:51:25.280 | Run q18.sql started.", "[info] 2022-03-01 09:51:25.800 | Run q18.sql finished. Time taken: 0:00:00, .518 seconds", "[info] 2022-03-01 09:51:25.810 | Run q19.sql started.", "[info] 2022-03-01 09:51:25.943 | Run q19.sql finished. Time taken: 0:00:00, .130 seconds", "[info] 2022-03-01 09:51:25.953 | Run q1.sql started.", "[info] 2022-03-01 09:51:26.295 | Run q1.sql finished. Time taken: 0:00:00, .339 seconds", "[info] 2022-03-01 09:51:26.305 | Run q20.sql started.", "[info] 2022-03-01 09:51:26.708 | Run q20.sql finished. Time taken: 0:00:00, .400 seconds", "[info] 2022-03-01 09:51:26.720 | Run q21.sql started.", "[info] 2022-03-01 09:51:27.323 | Run q21.sql finished. Time taken: 0:00:00, .600 seconds", "[info] 2022-03-01 09:51:27.334 | Run q22.sql started.", "[info] 2022-03-01 09:51:27.403 | Run q22.sql finished. Time taken: 0:00:00, .065 seconds", "[info] 2022-03-01 09:51:27.415 | Run q2.sql started.", "[info] 2022-03-01 09:51:27.632 | Run q2.sql finished. Time taken: 0:00:00, .213 seconds", "[info] 2022-03-01 09:51:27.648 | Run q3.sql started.", "[info] 2022-03-01 09:51:27.917 | Run q3.sql finished. Time taken: 0:00:00, .262 seconds", "[info] 2022-03-01 09:51:27.936 | Run q4.sql started.", "[info] 2022-03-01 09:51:28.150 | Run q4.sql finished. Time taken: 0:00:00, .210 seconds", "[info] 2022-03-01 09:51:28.172 | Run q5.sql started.", "[info] 2022-03-01 09:51:28.954 | Run q5.sql finished. Time taken: 0:00:00, .778 seconds", "[info] 2022-03-01 09:51:28.976 | Run q6.sql started.", "[info] 2022-03-01 09:51:29.080 | Run q6.sql finished. Time taken: 0:00:00, .103 seconds", "[info] 2022-03-01 09:51:29.096 | Run q7.sql started.", "[info] 2022-03-01 09:51:29.445 | Run q7.sql finished. Time taken: 0:00:00, .346 seconds", "[info] 2022-03-01 09:51:29.460 | Run q8.sql started.", "[info] 2022-03-01 09:51:32.692 | Run q8.sql finished. Time taken: 0:00:03, 3.229 seconds", "[info] 2022-03-01 09:51:32.703 | Run q9.sql started.", "[info] 2022-03-01 09:51:33.318 | Run q9.sql finished. Time taken: 0:00:00, .611 seconds", "[info] 2022-03-01 09:51:33.324 | Run sql queries finished. Time taken: 0:00:10, 10.026 seconds" ] } TASK [tpc_h : debug] ******************************************************************************************************************************************************************************** ok: [10.1.0.91] => { "work_dir": "/mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1" } -
Hasil pengujian detail
Setelah Anda berhasil menjalankan perintah
bin/run_tpch.sh, sistem akan membuat seluruh direktori kerja untuk pengujian TPC-H dan menampilkan jalur ke direktori <work_dir>. Anda kemudian dapat berpindah ke direktori tersebut untuk melihat informasi terkait, seperti pernyataan kueri, pernyataan pembuatan tabel, dan log eksekusi.TASK [tpc_h : debug] **************************************************** ok: [10.1.0.91] => { "work_dir": /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1 }CatatanPada contoh ini, <work_dir> adalah /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1.
Jalankan perintah
cd <work_dir>/logsuntuk berpindah ke subdirektori logs dan melihat hasil pengujian beserta output SQL detail.Direktori <work_dir> memiliki struktur sebagai berikut:
<work_dir>/ ├── config # Konfigurasi untuk skrip run.sh dan run_mysql.sh. ├── logs # Log dari eksekusi TPC-H terbaru. │ ├── *.sql.err │ ├── *.sql.out │ └── run.log ├── queries # 22 kueri SQL TPC-H. │ ├── ddl │ │ └── create_tables.sql # SQL pembuatan tabel TPC-H. │ └── *.sql ├── run_mysql.sh ├── run.sh # Menjalankan semua kueri TPC-H. └── tpch_tools # Toolkit dbgen.
-