Topik ini menjelaskan desain, prosedur, dan hasil uji TPC Benchmark-H (TPC-H) untuk PolarDB-X Clustered Columnar Indexes (CCIs).
Informasi latar belakang
TPC-H adalah benchmark yang banyak digunakan untuk mengevaluasi kemampuan kueri analitik database. Benchmark ini dikembangkan oleh Transaction Processing Performance Council (TPC). Dalam TPC-H, 22 kueri SQL kompleks dijalankan pada delapan tabel. Sebagian besar kueri melibatkan join antar-tabel, subkueri, dan klausa GROUP BY.
Uji TPC-H dalam topik ini didasarkan pada benchmark TPC-H tetapi tidak memenuhi semua persyaratannya. Oleh karena itu, hasil uji ini tidak dapat dibandingkan dengan hasil publikasi dari benchmark TPC-H.
Desain pengujian
Jumlah data pengujian
Pengujian ini menggunakan 100 GB data, yang menunjukkan faktor skalar sebesar 100. Berikut adalah jumlah data di setiap tabel utama:
Tabel LINEITEM berisi sekitar 600 juta baris data.
Tabel ORDERS berisi 150 juta baris data.
Tabel PART_SUPP berisi 80 juta baris data.
Spesifikasi instance untuk uji TPC-H
Spesifikasi node | Jumlah node | Ukuran set data |
8 core dan 32 GB memori | 2 atau 4 | 100 GB |
16 core dan 64 GB memori | 2, 3, 4, atau 6 | 100 GB |
Tipe instance ECS untuk uji stres
ecs.g7.4xlarge (16 vCPU dan 64 GB memori)
Prosedur
Langkah 1: Buat instance ECS untuk uji stres
Buat instance Elastic Compute Service (ECS) untuk menyiapkan data dan menjalankan uji stres.
Instance ECS harus berada dalam virtual private cloud (VPC). Catat nama dan ID VPC untuk digunakan selanjutnya. Semua instance database yang dijelaskan dalam langkah-langkah berikutnya juga harus berada dalam VPC ini.
Disarankan untuk membuat instance ECS dengan sistem operasi CentOS dan mengaktifkan alamat IP publik.
Langkah 2: Buat instance PolarDB-X untuk uji stres
Buat instance PolarDB-X. Untuk informasi lebih lanjut, lihat Buat Instance PolarDB-X.
Pastikan bahwa instance PolarDB-X dan instance ECS berada dalam VPC yang sama.
Tambahkan titik akhir internal instance ECS ke daftar putih instance PolarDB-X.
Langkah 3: Sesuaikan parameter instance
Untuk mencapai performa optimal dalam uji stres, sesuaikan beberapa parameter node komputasi instance PolarDB-X.
Atur parameter XPROTO_MAX_DN_CONCURRENT menjadi 4000. Untuk informasi lebih lanjut, lihat Atur Parameter.
Sambungkan ke instance PolarDB-X menggunakan CLI dan jalankan pernyataan SQL berikut dalam sesi yang sama untuk menonaktifkan logging, pengambilan sampel statistik CPU, dan pengumpulan statistik:
set global RECORD_SQL = false; set global MPP_METRIC_LEVEL = 0; set global ENABLE_CPU_PROFILE = false; set global ENABLE_BACKGROUND_STATISTIC_COLLECTION=false; set global ENABLE_STATISTIC_FEEDBACK=false;
Langkah 4: Instal Benchmark Boot
Aktifkan port 4121 untuk grup keamanan instance ECS. Untuk informasi lebih lanjut, lihat Tambah Aturan Grup Keamanan.
Masuk ke instance ECS dan jalankan perintah
bash -c "$(curl -fsSL https://benchmark-boot.oss-cn-hangzhou.aliyuncs.com/setup.sh)"untuk menginstal Benchmark Boot. Untuk informasi lebih lanjut, lihat Unduh dan Instal Benchmark Boot.Akses http://{Public IP address of the ECS instance}:4121 menggunakan browser. Jika halaman utama Benchmark Boot muncul, instalasi berhasil.
Langkah 5: Persiapkan data
Di halaman utama Benchmark Boot, pilih . Di halaman yang muncul, konfigurasikan alamat IP host, port, nama pengguna, kata sandi, dan perpustakaan TPC-H, serta atur mode pembuatan perpustakaan ke AUTO untuk membuat koneksi PolarDB-X. Klik Submit.
Pilih , atur ukuran dataset input menjadi 100 GB dan jumlah shard fisik menjadi 16, lalu klik Submit untuk mengimpor 100 GB data uji ke instance PolarDB-X utama.
CatatanSetelah data diimpor, Benchmark Boot secara otomatis menjalankan pernyataan analyze table untuk mengumpulkan statistik.
Setelah data diimpor, jalankan pernyataan SQL berikut di instance PolarDB-X utama untuk membuat CCI. Untuk informasi lebih lanjut, lihat Buat dan Gunakan CCI.
create clustered columnar index `nation_col_index` on nation(`n_nationkey`) partition by hash(`n_nationkey`) partitions 1; create clustered columnar index `region_col_index` on region(`r_regionkey`) partition by hash(`r_regionkey`) partitions 1; create clustered columnar index `customer_col_index` on customer(`c_custkey`) partition by hash(`c_custkey`) partitions 64; create clustered columnar index `part_col_index` on part(`p_size`) partition by hash(`p_partkey`) partitions 64; create clustered columnar index `partsupp_col_index` on partsupp(`ps_partkey`) partition by hash(`ps_partkey`) partitions 64; create clustered columnar index `supplier_col_index` on supplier(`s_suppkey`) partition by hash(`s_suppkey`) partitions 64; create clustered columnar index `orders_col_index` on orders(`o_orderdate`,`o_orderkey`) partition by hash(`o_orderkey`) partitions 64; create clustered columnar index `lineitem_col_index` on lineitem(`l_shipdate`,`l_orderkey`) partition by hash(`l_orderkey`) partitions 64;CatatanAnda dapat menjalankan pernyataan
show columnar indexuntuk melihat status CCI. Untuk informasi lebih lanjut, lihat SHOW COLUMNAR INDEX.Dibutuhkan sekitar 45 menit untuk membuat CCI.
Langkah 6: Tambahkan instance penyimpanan kolom baca saja
Tambahkan instance penyimpanan kolom baca saja ke instance PolarDB-X utama. Untuk informasi lebih lanjut, lihat Tambahkan Instance Kolomar Baca Saja.
Tambahkan titik akhir internal instance ECS ke daftar putih instance PolarDB-X penyimpanan kolom baca saja.
Langkah 7: Jalankan uji TPC-H
Di halaman utama Benchmark Boot, pilih . Di halaman yang muncul, konfigurasikan nama perpustakaan TPC-H dan atur mode pembuatan perpustakaan ke AUTO untuk membuat string koneksi untuk instance penyimpanan kolom baca saja. Klik Submit.
Di halaman utama Benchmark Boot, pilih . Di halaman yang muncul, pilih Semua Kueri, tentukan deskripsi tugas, dan klik Submit untuk menjalankan 22 pernyataan kueri untuk uji TPC-H.
Di halaman utama Benchmark Boot, pilih untuk melihat hasil uji.
CatatanPemanasan diperlukan jika uji TPC-H dijalankan untuk pertama kalinya. Disarankan untuk menjalankan beberapa putaran uji untuk mendapatkan hasil yang stabil.
Hasil uji
Tabel berikut menunjukkan hasil uji. Satuan: detik.
Kueri | 2*8 Core, 32 GB | 4*8 Core, 32 GB | 16C64G*2 | 16C64G*3 | 16C64G*4 | 16C64G*6 |
Q1 | 5,9 | 3,99 | 4,37 | 1,6 | 1,22 | 0,86 |
Q2 | 2,41 | 1,68 | 1,63 | 1,15 | 1,04 | 0,86 |
Q3 | 4,18 | 2,13 | 2,43 | 1,77 | 1,20 | 0,88 |
Q4 | 3,72 | 1,02 | 0,94 | 0,78 | 0,48 | 0,44 |
Q5 | 5,63 | 3,12 | 3,27 | 2,05 | 1,68 | 1,4 |
Q6 | 0,41 | 0,38 | 0,42 | 0,18 | 0,15 | 0,13 |
Q7 | 5,47 | 2,94 | 2,93 | 2,08 | 1,72 | 1,34 |
Q8 | 3,61 | 2,31 | 1,98 | 1,81 | 1,68 | 1,51 |
Q9 | 13,6 | 6,91 | 7,46 | 4,93 | 3,85 | 3,11 |
Q10 | 6,36 | 3,12 | 3,5 | 2,31 | 1,73 | 1,26 |
Q11 | 1,51 | 0,64 | 0,74 | 0,53 | 0,49 | 0,35 |
Q12 | 1,86 | 0,82 | 0,78 | 0,57 | 0,40 | 0,35 |
Q13 | 8,85 | 4,29 | 4,44 | 2,6 | 1,64 | 1,2 |
Q14 | 0,94 | 0,58 | 0,7 | 0,51 | 0,38 | 0,31 |
Q15 | 1,26 | 0,76 | 0,88 | 0,59 | 0,47 | 0,37 |
Q16 | 2,3 | 1 | 1,19 | 0,75 | 0,61 | 0,46 |
Q17 | 1,86 | 0,75 | 0,69 | 0,47 | 0,43 | 0,49 |
Q18 | 8,43 | 4,18 | 4,43 | 3,16 | 2,19 | 1,6 |
Q19 | 4,92 | 2,16 | 1,86 | 1,07 | 1,02 | 0,73 |
Q20 | 1,88 | 1,34 | 1,17 | 0,73 | 0,78 | 0,73 |
Q21 | 12,05 | 3,18 | 3,11 | 2,38 | 1,72 | 1,57 |
Q22 | 2,67 | 1,25 | 1,39 | 0,98 | 0,66 | 0,61 |
Total durasi | 99,82 | 48,55 | 50,31 | 33,00 | 25,54 | 20,56 |