Topik ini menjelaskan cara menggunakan TPC Benchmark H (TPC-H) untuk menguji kinerja pemrosesan analitik daring (OLAP).
Ikhtisar TPC-H
Deskripsi berikut dikutip dari dokumentasi resmi TPC-H:
TPC-H adalah benchmark dukungan keputusan yang terdiri dari rangkaian kueri ad hoc berorientasi bisnis dan modifikasi data bersamaan. Kueri serta data yang digunakan dipilih untuk memiliki relevansi luas di seluruh industri. Benchmark ini menggambarkan sistem dukungan keputusan yang memeriksa volume data besar, mengeksekusi kueri kompleks, dan memberikan jawaban atas pertanyaan bisnis kritis.
Untuk informasi lebih lanjut, lihat Spesifikasi Standar TPC BENCHMARK™ H.
Pengujian kinerja TPC-H yang dijelaskan dalam topik ini diimplementasikan berdasarkan pengujian benchmark TPC-H tetapi tidak memenuhi semua persyaratan pengujian benchmark TPC-H. Oleh karena itu, hasil pengujian tidak dapat dibandingkan dengan hasil yang diterbitkan dari pengujian benchmark TPC-H.
Dataset
TPC-H adalah dataset uji yang dikembangkan oleh Transaction Processing Performance Council (TPC) untuk mensimulasikan sistem dukungan keputusan. Dataset ini digunakan di akademisi dan industri untuk mengevaluasi kinerja sistem dukungan keputusan.
TPC-H memodelkan data dalam lingkungan produksi untuk mensimulasikan gudang data sistem penjualan. Gudang data terdiri dari delapan tabel dengan ukuran berkisar antara 1 GB hingga 3 TB. Pengujian benchmark TPC-H melibatkan 22 kueri dan berfokus pada waktu respons setiap kueri, yaitu jumlah waktu yang diperlukan dari pengiriman kueri hingga penerimaan hasil. Hasil pengujian mencerminkan kemampuan sistem dalam memproses kueri secara komprehensif. Untuk informasi lebih lanjut, lihat Spesifikasi Standar TPC BENCHMARK™ H.
Prosedur
Dalam contoh ini, 22 kueri dari pengujian benchmark TPC-H digunakan. Jumlah data uji memengaruhi hasil pengujian. Alat pembuatan data TPC-H memungkinkan Anda menyesuaikan faktor skala (SF) untuk mengubah jumlah data yang dihasilkan. Satu SF setara dengan 1 GB data.
Jumlah data sebelumnya merujuk pada jumlah data mentah. Saat menyiapkan lingkungan pengujian, pertimbangkan faktor lain seperti ruang yang akan ditempati oleh indeks.
Lakukan persiapan.
Siapkan lingkungan dasar yang diperlukan untuk menguji kueri OLAP.
CatatanUntuk mengurangi variabel yang memengaruhi hasil pengujian, disarankan menggunakan instance baru setiap kali melakukan pengujian, bukan meningkatkan atau menurunkan spesifikasi instance yang ada.
Buat instance Elastic Compute Service (ECS). Untuk informasi lebih lanjut, lihat Buat instance.
Dalam topik ini, instance ECS yang digunakan untuk pengujian memiliki spesifikasi berikut:
Tipe instance: ecs.g6e.4xlarge
Sistem operasi: CentOS 7.9
Disk data: Enterprise SSD (ESSD). Kapasitas dapat ditentukan berdasarkan jumlah data yang digunakan dalam pengujian.
Buat instance E-MapReduce (EMR) Serverless StarRocks. Untuk informasi lebih lanjut, lihat Buat instance.
Dalam pengujian ini, backend (BE) dengan delapan unit komputasi (CU) digunakan, yang berarti instance EMR Serverless StarRocks dikonfigurasikan dengan delapan inti CPU dan 32 GB memori. Anda juga dapat mengonfigurasi sumber daya komputasi sesuai kebutuhan bisnis.
CatatanDisarankan membuat instance EMR Serverless StarRocks dan instance ECS di virtual private cloud (VPC) dan wilayah yang sama.
Konfigurasikan paket uji.
Masuk ke instance ECS. Untuk informasi lebih lanjut, lihat Hubungkan ke instance.
Jalankan perintah berikut untuk mengunduh dan mengekstrak paket pengujian benchmark untuk StarRocks:
wget https://emr-olap.oss-cn-beijing.aliyuncs.com/packages/starrocks-benchmark-for-serverless.tar.gz tar xzvf starrocks-benchmark-for-serverless.tar.gzJalankan perintah berikut untuk masuk ke direktori starrocks-benchmark-for-serverless:
cd starrocks-benchmark-for-serverlessJalankan perintah
vim group_vars/alldan tentukan parameter berikut yang diperlukan oleh pengujian:# konfigurasi klien mysql login_host: fe-c-8764bab92bc6****-internal.starrocks.aliyuncs.com login_port: 9030 login_user: admin login_password: xxxx # konfigurasi oss bucket: "" endpoint: "" access_key_id: "" access_key_secret: "" # konfigurasi benchmark scale_factor: 1 work_dir_root: /mnt/disk1/starrocks-benchmark/workdirs dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasetsTabel berikut menjelaskan parameter.
Parameter
Deskripsi
Catatan
login_host
Titik akhir internal frontend (FE) pada instance EMR Serverless StarRocks.
Anda dapat masuk ke tab Instance Details instance EMR Serverless StarRocks untuk melihat internal endpoint instance di bagian FE Details.
PentingKami sarankan Anda tidak menggunakan titik akhir publik.
Parameter yang digunakan untuk menghubungkan klien ke layanan StarRocks.
login_port
Port query FE pada instance EMR Serverless StarRocks. Nilai default: 9030.
Anda dapat masuk ke tab Instance Details instance EMR Serverless StarRocks untuk melihat query port instance di bagian FE Details.
login_user
Nama pengguna awal yang digunakan untuk masuk ke instance EMR Serverless StarRocks.
login_password
Kata sandi yang digunakan untuk masuk ke instance EMR Serverless StarRocks.
bucket
Nama bucket Object Storage Service (OSS).
Opsional. Konfigurasi OSS. Jika Anda menentukan parameter ini, dataset uji yang dihasilkan disimpan di OSS.
endpoint
Titik akhir yang digunakan untuk mengakses OSS.
access_key_id
ID AccessKey akun Alibaba Cloud Anda.
access_key_secret
Rahasia AccessKey akun Alibaba Cloud Anda.
scale_factor
SF dataset uji, yang mengontrol jumlah data yang akan dihasilkan. Nilai default: 1. Unit: GB.
Konfigurasi benchmark.
work_dir_root
Direktori root direktori kerja. Direktori root digunakan untuk menyimpan data seperti pernyataan pembuatan tabel dan pernyataan SQL lainnya untuk pengujian TPC-H. Nilai default: /mnt/disk1/starrocks-benchmark/workdirs.
dataset_generate_root_path
Path tempat dataset uji yang dihasilkan disimpan. Nilai default: /mnt/disk1/starrocks-benchmark/datasets.
Jika bucket OSS ditentukan, bucket tersebut dipasang ke path ini.
Jalankan perintah berikut untuk mengaktifkan pengujian TPC-H otomatis end-to-end:
bin/run_tpch.shSelama pengujian TPC-H otomatis end-to-end, database, tabel, 22 pernyataan SQL, dan dataset dibuat, data dimuat, dan kueri dijalankan.
Anda juga dapat melakukan operasi berikut:
Jalankan perintah berikut untuk memuat ulang dataset:
bin/run_tpch.sh reloadJalankan perintah berikut untuk melakukan pengujian kueri TPC-H:
bin/run_tpch.sh query
Lihat hasil pengujian.
Periksa gambaran umum hasil pengujian.
Setelah perintah
bin/run_tpch.shdijalankan, hasil pengujian ditampilkan. Contoh hasil pengujian: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" }Periksa detail hasil pengujian.
Setelah perintah
bin/run_tpch.shberhasil dijalankan, sistem membangun direktori kerja untuk pengujian kinerja TPC-H dan mengembalikan path direktori <work_dir>. Anda dapat beralih ke path ini untuk melihat informasi terkait, seperti pernyataan kueri, pernyataan pembuatan tabel, dan log eksekusi.
CatatanDalam contoh ini, path direktori <work_dir> adalah /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1.
Anda juga dapat menjalankan perintah
cd <work_dir>/logsuntuk masuk ke direktori logs di direktori kerja dan melihat hasil pengujian serta hasil eksekusi rinci pernyataan SQL.Kode berikut menunjukkan struktur direktori <work_dir>:
<work_dir>/ ├── config # Konfigurasi skrip run.sh dan run_mysql.sh. ├── logs # Log eksekusi terbaru dari pengujian kinerja TPC-H. │ ├── *.sql.err │ ├── *.sql.out │ └── run.log ├── queries # 22 kueri SQL yang terlibat dalam pengujian kinerja TPC-H. │ ├── ddl │ │ └── create_tables.sql # Pernyataan yang digunakan untuk membuat tabel untuk pengujian kinerja TPC-H. │ └── *.sql ├── run_mysql.sh ├── run.sh # Kueri yang sepenuhnya dijalankan dalam pengujian kinerja TPC-H. └── tpch_tools # Toolkit dbgen.