Topik ini menjelaskan kemampuan pemrosesan paralel masif multi-node (MPP) yang disediakan oleh fitur Indeks Kolom dalam Memori (IMCI) dari PolarDB.
Informasi latar belakang
PolarDB menyediakan IMCI sebagai solusi pemrosesan transaksi/analitik hibrida (HTAP). Dengan meningkatnya volume data, kompleksitas kueri, dan jumlah kueri untuk tabel Object Storage Service (OSS), satu node penyimpanan kolom baca saja tidak lagi mampu menangani kueri untuk data massal. Untuk mengatasi masalah ini, IMCI menyediakan kemampuan MPP multi-node dan penskalaan sumber daya.
Arsitektur
Gambar berikut menunjukkan arsitektur MPP multi-node berbasis IMCI.
MPP multi-node berbasis IMCI adalah kelompok eksekusi multi-node yang terdiri dari beberapa node penyimpanan kolom baca saja dan mengimplementasikan eksekusi paralel multi-node IMCI. Saat beban kerja kueri berubah, Anda dapat dengan cepat menambah atau mengurangi jumlah node penyimpanan kolom baca saja untuk menyeimbangkan performa kueri dan biaya komputasi.
MPP multi-node dapat menangani berbagai macam beban kerja pemrosesan analitik (AP). Pengoptimal IMCI dapat secara akurat menentukan metode pemrosesan transaksional (TP) dari pernyataan SQL, memilih eksekusi single-node atau eksekusi paralel multi-node untuk pernyataan SQL tersebut, dan mendistribusikan pernyataan SQL ke node penyimpanan kolom yang diinginkan berdasarkan kebutuhan bisnis Anda.
Skenario
Anda ingin menggunakan kemampuan penskalaan yang disediakan oleh MPP multi-node untuk meningkatkan sumber daya CPU dan IOPS yang digunakan dalam kueri guna mengurangi latensi.
Anda ingin mengimplementasikan penanganan kueri dalam memori dengan mendistribusikan kueri ke beberapa node untuk throughput yang lebih tinggi.
Versi yang didukung
Cluster yang ingin Anda kelola harus merupakan PolarDB for MySQL 8.0.1 cluster Enterprise Edition dengan versi revisi 8.0.1.1.38 atau lebih baru.
Catatan penggunaan
Anda dapat menambahkan beberapa node penyimpanan kolom baca saja ke sebuah cluster. Untuk informasi lebih lanjut, lihat Tambahkan Node IMCI Baca Saja.
Untuk informasi lebih lanjut tentang cara mengaktifkan dan menggunakan MPP multi-node, bergabunglah dengan grup DingTalk (ID: 27520023189) untuk dukungan teknis.
Praktik terbaik
Kunci partisi
Dalam PolarDB, partisi level-1 atau level-2 menggunakan strategi partisi HASH atau KEY. Selama eksekusi MPP multi-node, partisi menggunakan strategi share-nothing. Strategi share-nothing menunjukkan bahwa setiap partisi diproses hanya oleh satu node, memberikan keuntungan sebagai berikut:
Kemampuan caching data yang ditingkatkan: Setiap node hanya perlu memproses partisi spesifiknya, yang memungkinkan setiap node menggunakan memori lokal untuk mencache data secara lebih efisien.
Performa kueri dioptimalkan: Saat Anda melakukan operasi
JOINdan kueriGROUP BYberdasarkan kunci partisi, Anda hanya perlu memproses data secara lokal pada setiap node, yang secara signifikan mengurangi volume transmisi data di antara beberapa node.
Untuk keuntungan tersebut, kami merekomendasikan agar Anda mengonfigurasikan partisi level-1 atau level-2 tipe HASH atau KEY untuk tabel berdasarkan kunci partisi umum JOIN dan GROUP BY saat Anda membuat tabel. Selain itu, semua tabel HASH atau KEY harus memiliki jumlah partisi yang sama. Jika jumlah partisi dua tabel berbeda, operasi JOIN antara tabel-tabel tersebut tidak dapat diproses secara lokal.
Kami merekomendasikan agar Anda menentukan bilangan prima besar sebagai jumlah partisi. Hal ini dapat mengurangi kemungkinan distribusi data yang tidak merata dan lebih meningkatkan performa kueri serta pemanfaatan sumber daya sistem yang efisien.
Kunci pengurutan
Untuk menyaring data massal, Anda dapat membuat partisi RANGE atau menambahkan kunci pengurutan ke penyimpanan kolom. Kami merekomendasikan agar Anda membuat partisi RANGE dan menambahkan kunci pengurutan untuk kolom yang dapat difilter oleh predikat dalam klausa WHERE. Sebagai contoh, Anda menentukan kondisi kueri berikut: WHERE date > '2024-10-01' AND date < '2024-10-07' AND customer_id = 'X231'. Dalam hal ini, Anda dapat membuat partisi RANGE untuk kolom date dan menambahkan kunci pengurutan IMCI untuk kolom customer_id. Hal ini dapat secara signifikan mengurangi jumlah data yang perlu diproses dan meningkatkan performa kueri. Anda dapat mengonfigurasikan partisi dan kunci pengurutan dengan tepat untuk IMCI untuk meningkatkan efisiensi pemrosesan data dan kecepatan respons kueri untuk data massal. Untuk informasi lebih lanjut, lihat Ikhtisar dan Konfigurasikan Kunci Pengurutan untuk IMCI.
Tes performa
Untuk informasi lebih lanjut tentang hasil tes performa MPP multi-node, lihat Performa IMCI.
Operasi terkait
Tentukan apakah MPP multi-node dapat digunakan untuk mengeksekusi pernyataan SQL saat ini.
Anda dapat menambahkan hint
SET_VAR(imci_plan_use_mpp=forced)ke pernyataan SQL untuk melihat rencana eksekusi pernyataan SQL tersebut. Dengan cara ini, Anda dapat menentukan apakah MPP multi-node dapat digunakan untuk mengeksekusi pernyataan SQL tersebut. Contoh:EXPLAIN SELECT /*+ SET_VAR(imci_plan_use_mpp=forced) */ COUNT(*) FROM nation;Hasil sampel:
+----+----------------------------+--------+---------------------------------------------------------------------------------+ | ID | Operator | Name | Extra Info | +----+----------------------------+--------+---------------------------------------------------------------------------------+ | 1 | Select Statement | | IMCI Execution Plan (max_dop = 11, max_query_mem = 37438953472) | | 2 | └─Compute Scalar | | | | 3 | └─Aggregation | | | | 4 | └─Consume | | Consume ProducerPipeId: 1 | | 5 | └─Exchange | | PipeId: 1, Consumers: 23377031, Producers: 23377031,23377032, Part Type: Gather | | 6 | └─Aggregation | | | | 7 | └─Table Scan | nation | | +----+----------------------------+--------+---------------------------------------------------------------------------------Jika rencana eksekusi berisi Operator pertukaran, MPP multi-node dapat digunakan untuk mengeksekusi pernyataan SQL tersebut.
Tentukan apakah pernyataan SQL akan dieksekusi secara paralel menggunakan MPP multi-node.
Setelah Anda menentukan bahwa MPP multi-node dapat digunakan untuk mengeksekusi pernyataan SQL, Anda dapat melihat rencana eksekusi pernyataan SQL tersebut untuk memeriksa apakah MPP multi-node akan digunakan dalam eksekusi pernyataan SQL tersebut. Jika rencana eksekusi berisi Operator pertukaran, pernyataan SQL tersebut akan dieksekusi secara paralel menggunakan MPP multi-node.