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.
-
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.
-
Perubahan padaService Node hanya berlaku untuk koneksi baru. Lakukan reconnect ke kluster setelah melakukan perubahan.
-
Jika Anda terhubung ke kluster menggunakan DMS, perhatikan bahwa DMS secara default menggunakan Primary address. Anda harus secara manual menggunakan cluster endpoint untuk terhubung ke kluster PolarDB.
-
Ambang batas default perkiraan biaya eksekusi untuk perutean permintaan otomatis adalah 50.000 baris yang dipindai. Anda dapat menyesuaikan parameter ini berdasarkan kebutuhan bisnis Anda.
Perutean permintaan manual
Di halaman detail kluster, buka bagian Database Connections dan buat titik akhir kustom. Pastikan Service Node hanya mencakup Service Node.
Langkah 3: Tambahkan IMCI
Anda dapat menambahkan IMCI ke tabel Anda secara manual atau otomatis berdasarkan kebutuhan bisnis Anda.
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 |
|
|
|
|
|
Tambahkan atau hapus IMCI secara batch di tingkat database atau tabel |
|
-
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:

(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:
-
Periksa apakah ada kolom dalam pernyataan SQL yang tidak dicakup oleh IMCI:
dbms_imci.check_columnar_index('<query_string>');. -
Dapatkan pernyataan DDL untuk membuat IMCI:
dbms_imci.columnar_advise('<query_string>');dandbms_imci.columnar_advise_by_columns('<query_string>');. -
Dapatkan secara batch pernyataan DDL untuk membuat IMCI:
dbms_imci.columnar_advise_begin();,dbms_imci.columnar_advise_show();, dandbms_imci.columnar_advise_end();.
FAQ
Untuk informasi lebih lanjut, lihat FAQ IMCI.
Penggunaan Lanjutan
Lihat topik berikut untuk mengoptimalkan penggunaan IMCI Anda.
|
Fitur lanjutan |
Deskripsi |
|
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. |
|
|
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. |
|
|
Fitur Extract, Transform, Load (ETL) memungkinkan Anda menggunakan IMCI pada node read-write (RW). Permintaan |
|
|
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. |
|
|
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. |
|
|
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:
-
Makalah PolarDB In-Memory Column Index (IMCI) yang dipublikasikan di SIGMOD 2023