Fitur PolarDB for MySQL In-Memory Column Index (IMCI) dirancang untuk mempercepat kueri pemrosesan analitis (AP) secara signifikan. Untuk memastikan IMCI mempercepat kueri SQL Anda dengan benar dan mengembalikan hasil yang diharapkan, tinjau cakupan serta batasan fitur ini sebelum menggunakannya.
Batas umum
Sebelum menggunakan indeks kolom dalam memori, pastikan lingkungan kluster dan skema tabel Anda memenuhi persyaratan berikut:
Storage engine: Indeks penyimpanan kolom hanya didukung untuk tabel yang menggunakan mesin penyimpanan
InnoDB.Tabel temporary: Anda tidak dapat menggunakan IMCI untuk mempercepat kueri pada tabel temporary.
Kolom virtual: Anda dapat membuat indeks kolom dalam memori pada kolom virtual jika kondisi berikut terpenuhi:
Atur parameter kluster
imci_enable_virtual_columnkeON.CatatanIni adalah parameter tingkat SESSION dan tidak dapat dimodifikasi di Konsol.
order_keytidak ditentukan saat membuat indeks kolom dalam memori.
Tipe kolom virtual: Anda tidak dapat membuat indeks kolom dalam memori untuk kolom virtual bertipe Spatial.
Untuk Multi-master Cluster (Limitless) Edition, Anda harus terlebih dahulu mengubah parameter kluster
loose_polar_enable_imci_with_mmmenjadiON. Setelah itu, Anda dapat menambahkan node read-only global untuk indeks kolom dalam memori dan menggunakan fitur IMCI.
Batas pernyataan SELECT
Indeks penyimpanan kolom hanya mempercepat kueri SELECT. Jika pernyataan kueri mengandung struktur apa pun berikut ini, kueri tersebut tidak dapat dipercepat oleh indeks penyimpanan kolom dan akan beralih ke eksekusi penyimpanan baris:
Pernyataan
SELECTyang mencakup pembacaan dengan locking, sepertiSELECT ... FOR UPDATEatauSELECT ... FOR SHARE.Pernyataan
SELECTyang mengandung fungsi jendela dengan definisi frame. Contohnya, penggunaanROWS UNBOUNDED PRECEDINGdalam klausaOVER().SELECT time, subject, val, SUM(val) OVER ( PARTITION BY subject ORDER BY time ROWS UNBOUNDED PRECEDING --- Definisi frame dalam fungsi jendela, tidak didukung oleh IMCI ) AS running_total FROM observations;Pernyataan
SELECTyang mengandung subkueri dalam klausaGROUP BY. Contohnya,SELECT SUM(a) FROM t1 GROUP BY (SELECT ... FROM ...) as some_subquery;Pernyataan
SELECTyang mengandung subkueri dalam ekspresiORDER BY. Contohnya,SELECT a FROM t1 ORDER BY (SELECT ... FROM ...) as some_subquery;Pernyataan
SELECTyang mengandung subkueri berkorelasi dalam kondisiONdariJOIN. Contohnya,WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b);Pernyataan
SELECTyang mengandung subkueri dengan fungsi jendela dan item berkorelasinya muncul dalam kondisiHAVING.Pernyataan
SELECTyang mengandung subkueri denganUNIONdan item berkorelasinya muncul dalam salah satu subkueriUNION.
Batas ekspresi dan fungsi
Jika pernyataan SELECT mengandung ekspresi atau fungsi yang tidak didukung, seluruh kueri akan kembali menggunakan penyimpanan baris untuk eksekusi.
Ekspresi perbandingan
Ekspresi | Apakah indeks penyimpanan kolom didukung? | Catatan |
| Jika tipe data | |
| Jika tipe data | |
| Jika parameter input mencakup tipe | |
| Jika tipe data | |
| Jika parameter input mencakup tipe | |
| - |
Ekspresi string
Ekspresi | Apakah indeks penyimpanan kolom didukung? | Catatan |
| - | |
| MODE BOOLEAN dan MODE BAHASA ALAMI didukung. | |
| - | |
| Saat menggunakan IMCI, fungsi ini hanya mendukung satu parameter. Fungsi ini tidak mendukung dua parameter. |
Ekspresi enkripsi dan kompresi
Ekspresi | Apakah indeks penyimpanan kolom didukung? |
| |
| |
| |
| |
| |
| |
| |
| |
|
Fungsi JSON
Fungsi | Dukungan untuk Indeks Penyimpanan Kolom |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
Fungsi spasial
Fungsi | Apakah indeks penyimpanan kolom didukung? |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|