Topik ini menjelaskan fitur In-Memory Column Index (IMCI) dari PolarDB for MySQL.
Informasi latar belakang
PolarDB for MySQL dirancang untuk skenario online transaction processing (OLTP) yang melibatkan bisnis online dengan volume data besar. Namun, arsitektur row store pada PolarDB for MySQL tidak selalu mampu memenuhi kebutuhan performa kueri di semua skenario. Dalam banyak kasus, untuk menjalankan kueri analitik kompleks, Anda perlu mengekspor data dari PolarDB for MySQL, lalu mengimpornya ke sistem online analytical processing (OLAP) guna dianalisis dan dikueri. Pendekatan ini memerlukan dua sistem database sekaligus, sehingga meningkatkan biaya, kompleksitas arsitektur, serta beban operasi dan pemeliharaan (O&M).
PolarDB for MySQL menyediakan fitur IMCI untuk skenario OLAP yang melibatkan kueri kompleks pada volume data besar. Dengan fitur IMCI, PolarDB for MySQL dapat memberikan solusi hybrid transaction/analytical processing (HTAP) terpadu yang menggabungkan pemrosesan transaksi real-time dan analisis data real-time. Dengan demikian, Anda dapat memenuhi kebutuhan skenario OLTP dan OLAP hanya dengan satu sistem database.
Prinsip teknis
Diagram arsitektur fungsional fitur Columnstore Index pada PolarDB for MySQL adalah sebagai berikut:
Seperti yang ditunjukkan dalam diagram arsitektur, PolarDB for MySQL merancang fitur Columnstore Index dengan arsitektur tiga lapis: storage engine, execution operator, dan optimizer:
Storage engine: Mendukung penyimpanan hibrida baris dan kolom dengan konsistensi real-time tingkat transaksi.
Execution operator: Menyediakan vectorized parallel operator untuk column store, memungkinkan kueri single-table dan multi-table yang sangat cepat.
SQL Parser/Optimizer: Dilengkapi cost-based optimizer (CBO) untuk penyimpanan hibrida baris dan kolom. Optimizer ini secara otomatis memilih row store atau column store untuk mengeksekusi permintaan kueri berdasarkan biaya.
Dengan arsitektur ini, PolarDB for MySQL mencapai kompatibilitas protokol MySQL 100% dan memberikan akselerasi kueri hingga beberapa orde lebih cepat.
Implementasi
Untuk mengisolasi sumber daya komputasi OLAP dan OLTP, IMCI hanya dapat dibuat pada node read-only. Semua kueri OLAP dijalankan secara eksklusif pada node read-only. Konfigurasikan aturan distribusi kueri untuk mengarahkan kueri OLAP ke node read-only berbasis row store atau column store. Ikhtisar distribusi permintaan berbasis HTAP antara node row store dan column store.
Keunggulan utama
PolarDB for MySQL menawarkan keunggulan berikut dengan fitur Columnstore Index:
Kompatibilitas MySQL 100%: Sistem tipe data column store konsisten dengan MySQL. Fitur ini mendukung konversi tipe fleksibel dan kompatibel 100% dengan protokol MySQL.
Performa HTAP unggul: PolarDB secara alami menawarkan performa OLTP yang kuat. Columnstore Index meningkatkan performa OLAP-nya setara dengan sistem database OLAP khusus.
Penyimpanan hibrida baris dan kolom mengurangi biaya: Mendukung format penyimpanan baris dan kolom sekaligus, serta menjamin konsistensi real-time tingkat transaksi antara baris dan kolom. Column store secara inheren menawarkan biaya lebih rendah.
Skenario
Fitur Columnstore Index dari PolarDB for MySQL memberikan pengalaman produk HTAP terpadu. Fitur ini berlaku untuk berbagai skenario bisnis:
Skema yang memerlukan analisis data real-time untuk data online, seperti laporan real-time.
Skema gudang data khusus: Anda dapat memanfaatkan kemampuan penyimpanan data masif PolarDB untuk menggabungkan beberapa sumber data input dan berfungsi sebagai gudang data khusus.
Skema komputasi akselerasi ETL: Anda dapat memanfaatkan kemampuan komputasi PolarDB yang andal dan fleksibel, berbasis Columnstore Index, untuk mengimplementasikan fungsi ETL menggunakan SQL di dalam PolarDB.

Harga
Fitur IMCI disediakan tanpa biaya tambahan. Namun, Anda dikenai biaya untuk node read-only column store berdasarkan harga node komputasi umum. Untuk informasi selengkapnya, lihat Harga pay-as-you-go node komputasi dan Harga berlangganan node komputasi. IMCI juga menempati storage space yang dikenai biaya. Untuk informasi selengkapnya, lihat Harga penyimpanan.
Versi yang didukung
Kluster Enterprise Edition yang memenuhi salah satu persyaratan berikut:
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.22 atau lebih baru.
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.12 atau lebih baru.
Kluster Edisi Standar yang menggunakan X86 arsitektur CPU dan memenuhi salah satu kondisi berikut:
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.38 atau lebih baru
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.19 atau lebih baru.
Perhatian
-
Fitur In-Memory Column Index (IMCI) tidak mendukung Global Database Network (GDN).
-
IMCI dapat digunakan bersama modul Voting Disk Service (VDS) dari fitur failover with hot replica hanya dalam kondisi berikut:
-
Untuk kluster dengan versi revisi 8.0.1.1.42 atau lebih baru atau 8.0.2.2.23 atau lebih baru:
-
Jika kluster berisi node read-only yang telah mengaktifkan fitur failover with hot replica, Anda dapat menambahkan node read-only column store ke kluster tersebut.
-
Jika node read-only column store sudah ada dalam kluster, Anda tidak dapat mengaktifkan fitur hot standby untuk node read-only mana pun dalam kluster tersebut.
-
-
Untuk kluster dengan versi revisi lebih awal dari 8.0.1.1.42 atau lebih awal dari 8.0.2.2.23, fitur IMCI tidak dapat digunakan bersama fitur failover with hot replica.
-
Jika kluster berisi node read-only yang telah mengaktifkan fitur failover with hot replica, Anda tidak dapat menambahkan node read-only column store ke kluster tersebut.
CatatanJika Anda ingin menambahkan node read-only column store ke kluster, hubungi dukungan teknis untuk menonaktifkan VDS. Saat VDS dinonaktifkan, semua node dalam kluster akan dimulai ulang secara otomatis.
-
Jika node read-only column store sudah ada dalam kluster, Anda tidak dapat mengaktifkan fitur hot standby untuk node read-only mana pun dalam kluster tersebut.
-
-
Peningkatan performa
Fitur Columnstore Index secara signifikan mempercepat operasi kueri SQL, meningkatkan performa kueri hingga ratusan kali lipat. Berikutnya, kami menggunakan tabel data dan kueri SQL standar TPC-H untuk menunjukkan efek akselerasi kueri dari Columnstore Index.
Metode pengujian: TPC-H adalah benchmark industri yang banyak digunakan. Komite TPC mengembangkan dan merilisnya untuk mengevaluasi kemampuan kueri analitik database. Kueri TPC-H mencakup 8 tabel data dan 22 kueri SQL kompleks. Sebagian besar kueri melibatkan penggabungan tabel (table joins), subkueri, dan agregasi GROUP BY.
Implementasi TPC-H ini berdasarkan benchmark TPC-H. Namun, hasilnya tidak dapat dibandingkan langsung dengan hasil benchmark TPC-H resmi yang dipublikasikan. Pengujian dalam topik ini tidak memenuhi seluruh persyaratan benchmark TPC-H.
Volume data: 100 GB.
Hasil pengujian:
Perbandingan performa sebelum dan sesudah mengaktifkan Columnstore Index
Gambar berikut membandingkan waktu respons kueri untuk 22 pernyataan kueri TPC-H yang dijalankan sebelum dan sesudah mengaktifkan Columnstore Index.

Perbandingan performa dengan ClickHouse setelah mengaktifkan Columnstore Index
Gambar berikut menampilkan waktu respons kueri untuk 21 pernyataan kueri TPC-H (tidak termasuk Q21 yang tidak didukung oleh ClickHouse) setelah mengaktifkan Columnstore Index. Gambar ini membandingkan waktu tersebut dengan database ClickHouse yang memiliki volume dan struktur data yang sama.

Kesimpulan:
Columnstore Index mempercepat sebagian besar operasi kueri kompleks. Performa kueri meningkat secara signifikan, hingga ratusan kali lipat.
Dibandingkan dengan database OLAP tradisional ClickHouse: Setelah mengaktifkan Columnstore Index, PolarDB for MySQL menunjukkan keunggulan maupun kelemahan performa relatif terhadap ClickHouse. Performanya sangat unggul dalam skenario seperti pemindaian/agregasi single-table (AGG) dan penggabungan tabel (joins). Fitur Columnstore Index di masa depan akan terus dioptimalkan, dengan terobosan yang diharapkan di bidang seperti akselerasi agregasi dan window function.