All Products
Search
Document Center

PolarDB:Ikhtisar Indeks Kolom

Last Updated:Aug 13, 2026

Topik ini menjelaskan fitur In-Memory Column Index (IMCI) dari PolarDB for PostgreSQL yang membantu Anda menangani kueri kompleks dengan lebih baik.

Pendahuluan

Fitur IMCI dari PolarDB for PostgreSQL memungkinkan Anda menangani pemrosesan transaksional online (OLTP) berkonkurensi tinggi dan analitik data kompleks (OLAP) dalam satu sistem. Anda tidak perlu lagi memelihara sistem eksternal terpisah yang mahal dan berarsitektur kompleks untuk kueri analitik. Hal ini menyederhanakan arsitektur data Anda, mengurangi biaya operasi dan pemeliharaan (O&M), serta memungkinkan analisis real-time terhadap data bisnis dalam volume besar.

Dibandingkan dengan mesin penyimpanan berorientasi baris, fitur IMCI meningkatkan performa kueri di dua area utama: IMCI pada lapisan penyimpanan dan operator vektorisasi pada lapisan mesin eksekusi, yang juga dikenal sebagai mesin eksekusi vektorisasi. Peningkatan ini secara efektif mengatasi keterbatasan mesin penyimpanan berorientasi baris dalam menangani kueri kompleks. Dalam pengujian performa TPC-H menggunakan dataset 100 GB dan kluster 32-core, 256 GB, mesin berorientasi kolom dari PolarDB for PostgreSQL memberikan performa kueri lebih dari 60 kali lipat dibandingkan mesin penyimpanan berorientasi baris. Untuk informasi selengkapnya, lihat hasil pengujian performa IMCI.

Cara kerja

Optimisasi arsitektur

PolarDB for PostgreSQL mengoptimalkan lapisan mesin eksekusi dan penyimpanan fitur IMCI untuk memproses kueri kompleks dengan lebih baik.

  • Lapisan mesin eksekusi

    • Berbeda dengan mesin penyimpanan berorientasi baris, mesin eksekusi vektorisasi menggunakan instruksi SIMD CPU untuk memproses data secara batch. Satu instruksi CPU dapat memproses beberapa baris data secara paralel, sehingga mengurangi waktu pemanggilan fungsi dan mencegah masalah cache miss.

    • Mesin vektorisasi mencapai vektorisasi penuh pada operator kueri. Misalnya, operator seperti Scan, Group By, Order By, Hash Join, Filter, Count, dan Sum divectorisasi. Hal ini memungkinkan mesin menerima input data batch dan memprosesnya menggunakan instruksi SIMD.

  • Lapisan penyimpanan

    • Menggunakan format penyimpanan berorientasi kolom, yang lebih cocok untuk operator vektorisasi dibandingkan struktur penyimpanan heap berorientasi baris.

    • Format penyimpanan berorientasi kolom diimplementasikan menggunakan indeks, yaitu IMCI. IMCI mirip dengan indeks Pohon-B dan GiST, tetapi memiliki struktur penyimpanan dan skenario penggunaan yang berbeda. IMCI dapat digunakan secara langsung, sedangkan indeks Pohon-B dan GiST digunakan oleh mesin penyimpanan berorientasi baris. Sebuah tabel dapat berisi IMCI dan jenis indeks lainnya untuk menangani berbagai kueri. Pengoptimal PolarDB for PostgreSQL memilih indeks yang paling sesuai berdasarkan biaya kueri.

Seperti ditunjukkan pada gambar berikut, Anda dapat membuat indeks Pohon-B pada kolom c2 tabel t untuk kueri titik (SELECT * FROM t WHERE c2=10) dan IMCI pada kolom c4 dan c5 untuk kueri statistik (SELECT c4, SUM(c5) FROM t GROUP BY c4). Pengoptimal kueri menentukan indeks paling efisien yang akan digunakan berdasarkan biaya pernyataan SQL.

Sinkronisasi baris-kolom real-time

Data dalam IMCI disimpan dalam format kolom di database. Data pertama kali ditulis ke tabel berorientasi baris, lalu disinkronkan ke IMCI menggunakan mekanisme pengindeksan. Proses ini dikenal sebagai sinkronisasi baris-kolom. Fitur IMCI dari PolarDB for PostgreSQL menyediakan mekanisme sinkronisasi baris-kolom yang efisien, real-time, dan otomatis, sehingga menghilangkan kebutuhan akan pipeline tambahan atau pembaruan manual data berorientasi kolom.

Mekanisme sinkronisasi baris-kolom mengurai log Write-Ahead Logging (WAL) untuk mengambil data yang dimodifikasi, lalu menuliskannya ke IMCI secara asinkron. Proses ini memiliki dampak minimal terhadap performa dan beban mesin penyimpanan berorientasi baris, yaitu kurang dari 3%. Karena fitur IMCI dari PolarDB for PostgreSQL dapat berkoeksistensi dengan mesin penyimpanan berorientasi baris pada node yang sama, proses penguraian log WAL dioptimalkan. Meskipun proses konversi baris-kolom bersifat asinkron, sinkronisasi real-time tetap dapat dicapai dengan latensi beberapa milidetik hingga beberapa detik, tergantung pada beban penulisan. Untuk informasi selengkapnya tentang cara mengoptimalkan sinkronisasi baris-kolom, lihat Tingkatkan performa real-time IMCI.

Bentuk produk

Fitur IMCI berlaku untuk semua node yang dideploy dalam kluster PolarDB for PostgreSQL. Oleh karena itu, semua node komputasi dalam kluster memiliki mesin penyimpanan berorientasi baris dan IMCI. Dalam mode ini, sistem membuat keputusan berikut saat mengeksekusi pernyataan SQL:

  1. Memilih node komputasi untuk eksekusi.

  2. Memilih mesin eksekusi pada node tersebut.

Memilih node komputasi

Ketika sistem mengeksekusi pernyataan SQL yang terkait dengan IMCI dalam kluster PolarDB yang terdiri dari beberapa node, sistem harus memilih node komputasi untuk eksekusi.

  • Semua pernyataan modifikasi data, seperti pernyataan Data Definition Language (DDL) dan Data Manipulation Language (DML), dieksekusi pada node RW. Node RW kemudian memilih mesin eksekusi yang sesuai berdasarkan kondisi tertentu.

  • Node RW membuat IMCI dan melakukan sinkronisasi real-time untuknya.

  • Untuk semua pernyataan SQL read-only, Anda dapat mengonfigurasi database proxy untuk menentukan node mana yang akan digunakan untuk eksekusi.

Memilih mesin eksekusi

Node komputasi memilih mesin eksekusi untuk mengeksekusi pernyataan SQL.

  • Untuk pernyataan DDL seperti CREATE TABLE dan ALTER TABLE, digunakan mesin penyimpanan berorientasi baris. Namun, untuk pernyataan CREATE TABLE AS SELECT, sistem menentukan apakah akan menggunakan IMCI berdasarkan kompleksitas subkueri SELECT.

  • Untuk pernyataan DML seperti INSERT, UPDATE, dan DELETE, sistem menggunakan mesin penyimpanan berorientasi baris.

  • Untuk pernyataan Data Query Language (DQL) seperti SELECT, sistem menentukan apakah akan menggunakan IMCI berdasarkan biaya kueri dan parameter tertentu. Umumnya, biaya kueri yang lebih tinggi menunjukkan probabilitas lebih besar untuk menggunakan IMCI. Jika IMCI gagal mengeksekusi pernyataan SELECT, sistem akan menggunakan mesin penyimpanan berorientasi baris untuk mengeksekusi kembali pernyataan tersebut.

Fitur dan keunggulan utama

  • Performa tinggi

    Dibandingkan dengan mesin penyimpanan berorientasi baris, IMCI secara signifikan meningkatkan performa kueri SQL dan dapat mempercepat eksekusi kueri kompleks lebih dari 100 kali lipat.

  • Hemat biaya

    • Untuk mengoptimalkan kueri, Anda dapat membuat IMCI hanya untuk kolom terkait, bukan seluruh tabel.

    • IMCI menempati ruang penyimpanan lebih sedikit dibandingkan indeks berorientasi baris. Bergantung pada tipe data kolom tertentu, IMCI hanya menempati 10% hingga 50% dari ruang penyimpanan yang digunakan oleh indeks berorientasi baris.

  • Kemudahan penggunaan

    Mesin vektorisasi sepenuhnya kompatibel dengan PostgreSQL native dan dapat digunakan dengan cara yang sama.

    • IMCI dapat dikelola seperti indeks PostgreSQL native dan mendukung pernyataan seperti CREATE INDEX dan DROP INDEX. Tidak diperlukan pernyataan tambahan. Untuk informasi selengkapnya, lihat Aktifkan dan gunakan IMCI.

    • IMCI sangat kompatibel dengan tipe data dan sintaks PostgreSQL. Anda dapat menggunakan IMCI untuk akselerasi tanpa perlu memodifikasi pernyataan SQL yang sudah ada.

    • Anda dapat mengonfigurasi parameter untuk menentukan pernyataan SQL mana yang dapat menggunakan IMCI secara detail halus, seperti semua pernyataan SQL, pernyataan SQL dalam session, atau pernyataan SQL tertentu dengan hint. Untuk informasi selengkapnya, lihat Aktifkan dan gunakan IMCI.

  • Maintenance IMCI real-time

    • Konsistensi data antara data berorientasi baris dan IMCI dipertahankan secara otomatis, sehingga menghilangkan kebutuhan untuk mengatur konversi atau sinkronisasi manual antara data berorientasi baris dan berorientasi kolom.

    • Data yang dimasukkan ke tabel berorientasi baris disinkronkan ke IMCI dengan latensi beberapa milidetik hingga beberapa detik. Anda dapat menyesuaikan performa sinkronisasi data berdasarkan beban bisnis. Untuk informasi selengkapnya, lihat Aktifkan dan gunakan IMCI.

  • Konsistensi

    Tingkat konsistensi berikut untuk IMCI dan data berorientasi baris disediakan untuk memenuhi berbagai kebutuhan bisnis.

    • Konsistensi eventual (default): Tingkat ini cocok untuk kueri yang melibatkan beban penulisan berat tetapi memiliki persyaratan performa real-time rendah.

    • Konsistensi kuat: Tingkat ini mengembalikan hasil kueri setelah data IMCI konsisten dengan data berorientasi baris. Untuk informasi selengkapnya, lihat Aktifkan dan gunakan IMCI.

  • Kompatibilitas dengan berbagai metode penggunaan

    • Mendukung sintaks Prepared Statement.

    • Mendukung akselerasi pernyataan SELECT dalam blok transaksi.

      Catatan

      Pernyataan SELECT harus merupakan pernyataan SQL read-before-write dalam blok transaksi.

    • Mendukung tabel partisi dan tabel partisi yang dikelola oleh pg_pathman. Pemangkasan partisi juga didukung. Untuk informasi selengkapnya, lihat Gunakan IMCI untuk tabel partisi.

    • Mendukung akselerasi kueri multimodal spatio-temporal.

Kasus penggunaan umum

Fitur IMCI dari PolarDB for PostgreSQL menyediakan pengalaman Hybrid Transactional/Analytical Processing (HTAP) terpadu yang cocok untuk berbagai skenario bisnis:

  • Skenario HTAP: Misalnya, Anda perlu melakukan volume besar operasi CRUD transaksional setiap hari sekaligus menghasilkan laporan real-time untuk jam terakhir. Fitur IMCI dari PolarDB for PostgreSQL tidak hanya menangani kedua workload secara efisien, tetapi juga menyederhanakan arsitektur sistem. Anda tidak perlu lagi memelihara sistem terpisah untuk bagian OLAP real-time dari kueri analitik Anda.

  • Akselerasi kueri lambat: Ideal untuk mempercepat kueri yang biasanya lambat pada mesin row-store, seperti:

    • Agregasi seluruh tabel (COUNT, SUM, AVG).

    • Operasi GROUP BY dan ORDER BY yang kompleks.

    • Operasi JOIN multi-tabel.

    • Kueri dengan kondisi filter dinamis di mana indeks komposit akan menjadi tidak fleksibel.

  • Kueri multimodal dan geospasial: Lakukan kueri efisien terhadap data JSON bersarang atau lakukan analisis statistik pada data geospasial.

  • Akselerasi ETL: Manfaatkan kemampuan komputasi kuat IMCI untuk melakukan transformasi data kompleks dan proses ETL langsung di dalam database.

Penagihan

IMCI dapat dieksekusi langsung pada node berorientasi baris atau pada node read-only IMCI tambahan.

  • Menggunakan IMCI pada node yang sudah ada: Gratis.

  • Menambahkan node read-only khusus untuk IMCI: Dikenakan biaya node komputasi standar untuk sumber daya komputasi tambahan. Selain itu, IMCI akan mengonsumsi ruang penyimpanan tambahan, yang dikenai biaya penyimpanan standar.

Catatan

Isolasi workload

Untuk isolasi workload lengkap, Anda dapat menambahkan node read-only khusus untuk IMCI. Hal ini memastikan bahwa kueri pemrosesan analitik (AP) tidak memengaruhi performa workload pemrosesan transaksional (TP) Anda. Lihat Dampak terhadap bisnis untuk detailnya.