All Products
Search
Document Center

PolarDB:Petunjuk

Last Updated:Jul 02, 2026

Lihat bagian Mulai Cepat untuk mengonfigurasi kluster Anda guna menangani beban kerja Hybrid Transactional/Analytical Processing (HTAP), atau bagian Penggunaan Lanjutan untuk menyesuaikan IMCI sesuai kebutuhan bisnis tertentu.

Mulai Cepat

Langkah 1: Tambahkan node IMCI read-only

Masuk ke Konsol PolarDB. Di panel navigasi sebelah kiri, klik Clusters. Pilih region kluster Anda dan temukan kluster tersebut. Di kolom Actions, klik Add/Remove Node untuk menambahkan node IMCI read-only.image

Catatan
  • Jika Anda sudah menambahkan node IMCI read-only saat membeli kluster, lewati langkah ini.

  • Kluster Anda harus memenuhi persyaratan versi untuk IMCI. Untuk informasi lebih lanjut, lihat node IMCI read-only.

Langkah 2: Konfigurasikan perutean permintaan

Anda dapat memilih perutean permintaan otomatis atau manual untuk menggunakan IMCI berdasarkan kebutuhan bisnis Anda.

  • Perutean permintaan otomatis: Jika beban kerja Online Transactional Processing (OLTP) dan Online Analytical Processing (OLAP) Anda mengakses database dari aplikasi yang sama, Anda dapat secara otomatis mengarahkan permintaan baca ke node IMCI read-only atau node row store read-only berdasarkan perkiraan biaya eksekusi, yang ditentukan oleh jumlah baris yang dipindai.

  • Perutean permintaan manual: Jika beban kerja OLTP dan OLAP Anda mengakses database dari aplikasi yang berbeda, Anda dapat mengonfigurasi titik akhir kluster yang berbeda untuk aplikasi-aplikasi tersebut. Kemudian, Anda dapat mengarahkan permintaan ke penyimpanan baris dan kolom dengan menetapkan node IMCI read-only dan node row store read-only sebagai Service Node pada titik akhir yang berbeda.

Perutean permintaan otomatis

Di halaman detail kluster, buka bagian Database Connections. Untuk Cluster Endpoint, atur Service Node ke Enable.image

Catatan

Perutean permintaan manual

Di halaman detail kluster, buka bagian Database Connections dan buat titik akhir kustom. Pastikan Service Node hanya mencakup Service Node.image

Langkah 3: Tambahkan IMCI

Anda dapat menambahkan IMCI ke tabel Anda secara manual atau otomatis berdasarkan kebutuhan bisnis Anda.

Penting

Agar kueri dipercepat oleh IMCI, semua kolom yang dirujuk dalam pernyataan SQL harus sepenuhnya dicakup oleh IMCI.

Manual

IMCI menyediakan rangkaian lengkap pernyataan DDL untuk menambahkan atau menghapus IMCI pada tabel bisnis. Pilih opsi yang sesuai dengan kebutuhan Anda:

Sintaksis DDL

Contoh

Buat IMCI saat membuat tabel

-- Tambahkan IMCI untuk kolom tertentu.
CREATE TABLE <table_name>(
  <column_name_1> INT COMMENT 'COLUMNAR=1',
  <column_name_2> VARCHAR(100)
) ENGINE InnoDB;

-- Tambahkan IMCI untuk seluruh tabel.
CREATE TABLE <table_name>(
  <column_name_1> INT,
  <column_name_2> VARCHAR(100)
) ENGINE InnoDB COMMENT 'COLUMNAR=1';

Tambahkan atau hapus IMCI secara dinamis

-- Tambahkan IMCI untuk kolom tertentu.
ALTER TABLE <table_name> MODIFY COLUMN <column_name_1> INT COMMENT 'COLUMNAR=1';
               
-- Tambahkan IMCI untuk seluruh tabel.
ALTER TABLE <table_name> COMMENT 'COLUMNAR=1';

Tambahkan atau hapus IMCI secara batch di tingkat database atau tabel

-- Tambahkan IMCI untuk seluruh tabel.
CREATE COLUMNAR INDEX ON <db_name>.<table_name>;

-- Tambahkan IMCI untuk semua tabel dalam database.
CREATE COLUMNAR INDEX FOR TABLES IN <db_name>;
Catatan
  • Saat menambahkan IMCI, Anda dapat mempertahankan komentar yang sudah ada. Contoh: ALTER TABLE <table_name> COMMENT 'COLUMNAR=1 <original comment>';.

  • Secara default, saat menambahkan IMCI secara batch di tingkat database atau tabel, komentar tabel diperbarui menjadi 'COLUMNAR=1 <original comment>'.

Otomatis

Fitur AutoIndex dapat secara otomatis membuat IMCI berdasarkan kueri lambat Anda untuk meningkatkan kecepatan eksekusinya secara signifikan. Hal ini menghilangkan kebutuhan untuk memahami dan menyetel setiap kueri lambat secara manual. Seiring perubahan beban kerja aplikasi, AutoIndex terus memantau dan menyesuaikan strategi IMCI guna memastikan kluster PolarDB Anda tetap memiliki performa optimal.

Anda dapat langsung merasakan manfaat fitur ini cukup dengan Enable AutoIndex di halaman detail kluster PolarDB:

image

(Opsional) Langkah 4: Periksa progres pembuatan IMCI

Setelah Anda menambahkan IMCI secara manual, periksa progres pembuatannya. Tunggu hingga proses selesai agar dapat memanfaatkan percepatan kueri.

SELECT * FROM INFORMATION_SCHEMA.IMCI_ASYNC_DDL_STATS;

Contoh: Periksa apakah nilai pada kolom STATUS adalah Safe to read untuk memastikan IMCI telah sepenuhnya dibangun.

+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
| SCHEMA_NAME | TABLE_NAME | CREATED_AT          | STARTED_AT          | FINISHED_AT         | STATUS       | APPROXIMATE_ROWS | SCANNED_ROWS    | SCAN_SECOND | SORT_ROUNDS | SORT_SECOND | BUILD_ROWS | BUILD_SECOND | AVG_SPEED | SPEED_LAST_SECOND | ESTIMATE_SECOND |
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
| tpch        | lineitem   | 2024-10-21 13:44:02 | 2024-10-21 13:44:02 | 2024-10-21 13:50:11 | Safe to read | 590446240        | 600037902(100%) | 369         | 0           | 0           | 0(0%)      | 0            | 1625058   | 0                 | 0               |
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
1 row in set, 1 warning (0.00 sec)

(Opsional) Langkah 5: Periksa penggunaan IMCI

Rencana eksekusi IMCI ditampilkan sebagai pohon horizontal, yang memiliki format yang sangat berbeda dari rencana eksekusi row-store. Anda dapat menggunakan pernyataan EXPLAIN untuk melihat rencana eksekusi dan menentukan apakah suatu pernyataan SQL dapat dipercepat oleh IMCI. Contoh berikut menunjukkan perbedaannya:

Rencana eksekusi IMCI

+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
| ID | Operator                   | Name     | E-Rows | E-Cost | Extra Info                                                                  |
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
|  1 | Select Statement           |          |        |        | IMCI Execution Plan (max_dop = 4, max_query_mem = 858993459)                |
|  2 | └─Sort                     |          |        |        | Sort Key: revenue DESC,o_orderdate ASC                                      |
|  3 |   └─Hash Groupby           |          |        |        | Group Key: (lineitem.L_ORDERKEY, orders.O_ORDERDATE, orders.O_SHIPPRIORITY) |
|  4 |     └─Hash Join            |          |        |        | Join Cond: orders.O_ORDERKEY = lineitem.L_ORDERKEY                          |
|  5 |       ├─Hash Join          |          |        |        | Join Cond: customer.C_CUSTKEY = orders.O_CUSTKEY                            |
|  6 |       │ ├─Table Scan       | customer |        |        | Cond: (C_MKTSEGMENT = "BUILDING")                                           |
|  7 |       │ └─Table Scan       | orders   |        |        | Cond: (O_ORDERDATE < 03/24/1995)                                            |
|  8 |       └─Table Scan         | lineitem |        |        | Cond: (L_SHIPDATE > 03/24/1995)                                             |
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
8 rows in set (0.01 sec)

Rencana eksekusi row-store

+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
| id | select_type | table    | partitions | type | possible_keys      | key        | key_len | ref                         | rows   | filtered | Extra                                        |
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
|  1 | SIMPLE      | customer | NULL       | ALL  | PRIMARY            | NULL       | NULL    | NULL                        | 147630 |    10.00 | Using where; Using temporary; Using filesort |
|  1 | SIMPLE      | orders   | NULL       | ref  | PRIMARY,ORDERS_FK1 | ORDERS_FK1 | 4       | tpch100g.customer.C_CUSTKEY |     14 |    33.33 | Using where                                  |
|  1 | SIMPLE      | lineitem | NULL       | ref  | PRIMARY            | PRIMARY    | 4       | tpch100g.orders.O_ORDERKEY  |      4 |    33.33 | Using where                                  |
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
3 rows in set, 1 warning (0.00 sec)

Alat bantu

Saat menggunakan IMCI untuk mengkueri pernyataan SQL yang kompleks, Anda harus memeriksa apakah ada kolom dalam pernyataan SQL yang tidak dicakup oleh IMCI. Jika menemukan kolom yang tidak tercakup, Anda dapat mendapatkan pernyataan DDL untuk membuat IMCI bagi pernyataan SQL tersebut, atau mendapatkan secara batch pernyataan DDL untuk membuat IMCI bagi beban kerja tertentu. Setelah menjalankan pernyataan DDL tersebut, pastikan semua kolom yang dirujuk dalam pernyataan SQL telah dicakup oleh IMCI agar percepatan kueri dapat diaktifkan.

PolarDB menyediakan prosedur tersimpan bawaan berikut:

FAQ

Kueri tidak menggunakan IMCI

Setelah menambahkan node IMCI read-only, Anda juga harus membuat IMCI untuk semua tabel yang dikueri dalam pernyataan SQL. Pernyataan tersebut hanya akan menggunakan IMCI jika perkiraan biaya eksekusi-nya melebihi ambang batas tertentu. Selain itu, pernyataan SQL harus diteruskan ke node IMCI read-only agar dapat dipercepat. Jika suatu pernyataan SQL tidak menggunakan IMCI, ikuti langkah-langkah berikut untuk pemecahan masalah:

  1. Pastikan pernyataan SQL diteruskan ke node IMCI read-only.

    • Periksa apakah Service Node untuk titik akhir database mencakup node IMCI read-only.

    • Gunakan SQL Explorer untuk memastikan pernyataan SQL diteruskan ke node IMCI read-only.

    Jika Anda menggunakan Cluster Endpoint dengan Service Node diaktifkan, dan perkiraan biaya eksekusi pernyataan SQL lebih tinggi daripada ambang batas loose_imci_ap_threshold atau loose_cost_threshold_for_imci, PolarProxy akan meneruskan pernyataan SQL tersebut ke node IMCI read-only. Anda juga dapat menambahkan sintaksis HINT /*FORCE_IMCI_NODES*/ sebelum kata kunci SELECT untuk memaksa pernyataan SQL diarahkan ke node IMCI read-only. Untuk informasi lebih lanjut, lihat Konfigurasikan ambang batas perutean otomatis. Contoh:

    Pada versi minor mesin database 8.0.1.1.39 dan 8.0.2.2.23 serta versi yang lebih baru, parameter loose_imci_ap_threshold telah ditinggalkan dan digantikan oleh parameter loose_cost_threshold_for_imci.
    /*FORCE_IMCI_NODES*/EXPLAIN SELECT COUNT(*) FROM t1 WHERE t1.a > 1;
    Membuat titik akhir database baru memastikan pernyataan SQL selalu diarahkan ke node IMCI read-only untuk dieksekusi. Untuk informasi lebih lanjut, lihat Buat titik akhir database baru.
  2. Periksa apakah perkiraan biaya eksekusi pernyataan SQL melebihi ambang batas yang dikonfigurasi.

    Di node IMCI read-only, pengoptimal memperkirakan biaya eksekusi pernyataan SQL. Jika perkiraan biaya eksekusi melebihi ambang batas yang ditetapkan oleh loose_imci_ap_threshold atau loose_cost_threshold_for_imci, pengoptimal akan menggunakan IMCI. Jika tidak, pengoptimal akan menggunakan indeks berbasis baris yang sudah ada.

    Setelah memastikan pernyataan SQL diteruskan ke node IMCI read-only, jika rencana eksekusi yang dilihat menggunakan EXPLAIN masih tidak menggunakan IMCI, Anda dapat membandingkan perkiraan biaya eksekusi dengan ambang batas yang telah ditetapkan untuk menentukan apakah IMCI tidak digunakan karena perkiraan biaya eksekusi terlalu rendah. Anda dapat mengkueri variabel Last_query_cost_for_imci untuk mendapatkan perkiraan biaya eksekusi dari pernyataan SQL sebelumnya:

    -- Gunakan EXPLAIN untuk melihat rencana eksekusi pernyataan SQL.
    EXPLAIN SELECT * FROM t1;
    -- Dapatkan perkiraan biaya eksekusi dari kueri sebelumnya.
    SHOW STATUS LIKE 'Last_query_cost_for_imci';
    Jika Anda menggunakan cluster endpoint untuk terhubung ke database, kami menyarankan untuk menambahkan sintaksis HINT /*ROUTE_TO_LAST_USED*/ sebelum SHOW STATUS LIKE 'Last_query_cost_for_imci'. Hal ini memastikan Anda dapat mengkueri perkiraan biaya eksekusi dari pernyataan sebelumnya pada node yang tepat. Misalnya, /*ROUTE_TO_LAST_USED*/SHOW STATUS LIKE 'Last_query_cost_for_imci';

    Jika perkiraan biaya eksekusi pernyataan SQL lebih rendah daripada ambang batas yang dikonfigurasi, pertimbangkan untuk menyesuaikan nilai loose_imci_ap_threshold atau loose_cost_threshold_for_imci. Misalnya, Anda dapat menggunakan HINT untuk menyesuaikan ambang batas pada satu pernyataan SQL:

    /*FORCE_IMCI_NODES*/EXPLAIN SELECT /*+ SET_VAR(cost_threshold_for_imci=0) */ COUNT(*) FROM t1 WHERE t1.a > 1;
  3. Verifikasi bahwa semua tabel dan kolom dalam pernyataan SQL sepenuhnya dicakup oleh IMCI.

    Anda dapat memanggil prosedur tersimpan bawaan dbms_imci.check_columnar_index('<query_string>') untuk memeriksa apakah IMCI telah dibuat untuk tabel atau kolom dalam pernyataan SQL. Untuk informasi lebih lanjut, lihat Periksa apakah IMCI telah dibuat untuk tabel atau kolom dalam pernyataan SQL. Contoh:

    CALL dbms_imci.check_columnar_index('SELECT COUNT(*) FROM t1 WHERE t1.a > 1');

    Jika pernyataan SQL tidak sepenuhnya dicakup oleh IMCI, pemanggilan prosedur tersimpan ini akan mengembalikan tabel dan kolom yang tidak tercakup. Anda harus membuat IMCI untuk setiap tabel dan kolom yang dikembalikan. Jika pernyataan tersebut sepenuhnya tercakup, prosedur akan mengembalikan set hasil kosong.

  4. Periksa fitur SQL yang tidak didukung.

    Periksa batasan penggunaan sintaksis IMCI untuk memastikan fitur SQL tertentu mendukung IMCI. Untuk informasi lebih lanjut, lihat Batasan penggunaan sintaksis IMCI.

Jika pernyataan SQL masih tidak menggunakan IMCI setelah melakukan pemeriksaan di atas, Anda dapat merujuk ke panduan penggunaan untuk bantuan atau hubungi kami.

Untuk informasi lebih lanjut, lihat FAQ IMCI.

Penggunaan Lanjutan

Lihat topik berikut untuk mengoptimalkan penggunaan IMCI Anda.

Fitur lanjutan

Deskripsi

Atur sort key untuk IMCI

IMCI mengorganisasi data ke dalam grup baris. Di setiap grup baris, kolom-kolom berbeda dikemas ke dalam blok data kolom. Blok-blok ini dibangun secara paralel berdasarkan urutan kunci primer dari data berbasis baris asli, sehingga menghasilkan keadaan yang secara keseluruhan tidak terurut. Anda dapat mengonfigurasi sort key untuk mengurutkan ulang blok data kolom dan meningkatkan performa kueri.

Analisis data JSON secara efisien

IMCI mengintegrasikan serangkaian fitur seperti columnar JSON, kolom virtual, Instant DDL, dan column count expansion untuk menangani analitik data terstruktur dan semi-terstruktur berskala besar.

Percepat ETL dengan IMCI

Fitur Extract, Transform, Load (ETL) memungkinkan Anda menggunakan IMCI pada node read-write (RW). Permintaan SELECT yang dikeluarkan pada node RW dikirim ke node IMCI read-only untuk kueri yang dipercepat. Setelah data dibaca, sistem mentransfernya kembali ke node RW melalui jaringan internal dan menulisnya ke tabel tujuan.

Aktifkan Serverless untuk node IMCI read-only

Fitur Serverless secara otomatis menyesuaikan sumber daya naik dan turun berdasarkan beban kerja Anda. Fitur ini menambah kapasitas saat jam sibuk untuk menangani lonjakan beban kerja, dan mengurangi kapasitas saat jam sepi untuk menekan biaya.

Percepat kueri tabel lebar dengan Hybrid Plan

Hybrid Plan menggunakan indeks kolom dan baris dalam kueri yang sama. Hybrid Plan dapat meningkatkan performa kueri tabel lebar secara signifikan. Dalam rencana eksekusi, bagian yang diuntungkan oleh indeks kolom dijalankan pada IMCI dan menghasilkan hasil antara yang hanya berisi kunci primer. Kemudian, kolom yang diperlukan diambil dan dikembalikan menggunakan kunci primer dengan Indeks primer InnoDB.

Percepat analisis data masif dengan MPP multi-node

Untuk kueri kompleks pada data masif, satu node IMCI read-only mungkin tidak memenuhi persyaratan performa. Anda dapat menggunakan pemrosesan paralel multi-node (MPP) untuk mempercepat kueri.

Pelajari lebih lanjut

Untuk mempelajari lebih lanjut tentang prinsip di balik IMCI, lihat dokumen berikut: