全部产品
Search
文档中心

PolarDB:Batasan

更新时间:Nov 21, 2025

Fitur PolarDB for MySQL In-Memory Column Index (IMCI) dirancang untuk mempercepat kueri pemrosesan analitis (AP) secara signifikan. Sebelum menggunakan fitur ini, pastikan Anda memahami batasannya agar kueri SQL dapat dipercepat dengan benar oleh IMCI dan menghasilkan output yang diharapkan.

Batasan umum

Sebelum menggunakan IMCI, pastikan lingkungan kluster dan skema tabel Anda memenuhi persyaratan berikut:

  • Mesin penyimpanan: IMCI hanya dapat dibuat untuk tabel yang menggunakan mesin penyimpanan InnoDB.

  • Tabel sementara: IMCI tidak dapat digunakan untuk mempercepat kueri pada tabel sementara.

  • Kolom virtual: IMCI dapat dibuat pada kolom virtual jika kondisi berikut terpenuhi:

    • Parameter kluster imci_enable_virtual_column diatur ke ON.

      Catatan

      Parameter ini bersifat tingkat sesi dan tidak dapat dimodifikasi di Konsol.

    • order_key tidak ditentukan saat membuat IMCI.

  • Tipe kolom virtual: IMCI tidak dapat dibuat pada kolom virtual bertipe data Spatial.

  • Multi-master Cluster (Limitless) Edition: Anda harus terlebih dahulu memodifikasi parameter kluster untuk mengatur parameter loose_polar_enable_imci_with_mm menjadi ON. Setelah itu, Anda dapat menambahkan node read-only IMCI global dan menggunakan fitur IMCI.

Batasan untuk pernyataan SELECT

IMCI hanya digunakan untuk mempercepat kueri SELECT. Jika suatu pernyataan kueri mengandung struktur apa pun berikut ini, seluruh kueri tidak dapat dipercepat oleh IMCI dan akan kembali menggunakan penyimpanan baris untuk eksekusi:

  • Pernyataan SELECT yang menggunakan pembacaan terkunci, seperti SELECT ... FOR UPDATE atau SELECT ... FOR SHARE.

  • Pernyataan SELECT yang mengandung fungsi jendela dengan klausa frame, misalnya klausa seperti ROWS UNBOUNDED PRECEDING dalam klausa OVER().

    SELECT
        time,
        subject,
        val,
        SUM(val) OVER (
            PARTITION BY subject
            ORDER BY time
            ROWS UNBOUNDED PRECEDING  --- Definisi frame dalam fungsi jendela. IMCI tidak mendukung ini.
        ) AS running_total
    FROM
        observations;
  • Pernyataan SELECT yang mengandung subkueri dalam klausa GROUP BY, contohnya: SELECT SUM(a) FROM t1 GROUP BY (SELECT ... FROM ...) as some_subquery;

  • Pernyataan SELECT yang mengandung subkueri dalam ekspresi klausa ORDER BY, contohnya: SELECT a FROM t1 ORDER BY (SELECT ... FROM ...) as some_subquery;

  • Pernyataan SELECT yang mengandung subkueri berkorelasi, di mana korelasinya merupakan bagian dari kondisi ON dalam klausa JOIN di dalam subkueri tersebut, contohnya: WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b);

  • Pernyataan SELECT yang mengandung subkueri yang menggunakan fungsi jendela dan memiliki kolom berkorelasi dalam klausa HAVING.

  • Pernyataan SELECT yang mengandung subkueri yang menggunakan operator UNION, dan salah satu pernyataan SELECT di dalam UNION berkorelasi dengan query luar.

Batasan ekspresi dan fungsi

Jika suatu pernyataan SELECT mengandung ekspresi atau fungsi yang tidak didukung, seluruh kueri akan kembali menggunakan penyimpanan baris untuk eksekusi.

Ekspresi perbandingan

Ekspresi

Apakah saya dapat menggunakan indeks penyimpanan kolom?

Catatan

BETWEEN ... AND ...

Didukung

Jika b dan c dalam a BETWEEN b AND c memiliki tipe data yang berbeda, masalah kompatibilitas mungkin terjadi. Hal ini dapat menyebabkan hasil kueri berbeda dari hasil kueri yang tidak menggunakan IMCI.

NOT BETWEEN ... AND ...

Didukung

Jika b dan c dalam a NOT BETWEEN b AND c memiliki tipe data yang berbeda, masalah kompatibilitas mungkin terjadi. Hal ini dapat menyebabkan hasil kueri berbeda dari hasil kueri yang tidak menggunakan IMCI.

GREATEST()

Didukung

Jika parameter input mencakup tipe TIME dan tipe string, hasil perbandingan mungkin berbeda dari hasil kueri yang tidak menggunakan IMCI.

IN()

Didukung

Jika expr0,expr1,... dalam IN(expr0, expr1, ...) memiliki tipe data yang berbeda, masalah kompatibilitas mungkin terjadi. Hal ini dapat menyebabkan hasil kueri berbeda dari hasil kueri yang tidak menggunakan IMCI.

LEAST()

Didukung

Jika parameter input mencakup tipe TIME dan tipe string, hasil perbandingan mungkin berbeda dari hasil kueri yang tidak menggunakan IMCI.

SOUNDS LIKE

Tidak

-

Ekspresi string

Ekspresi

Dukungan indeks penyimpanan kolom

Catatan

SOUNDEX()

Tidak

-

MATCH

Tidak

-

LOAD_FILE()

Tidak

-

TIMESTAMP()

Didukung

Saat menggunakan fitur IMCI, fungsi ini hanya mendukung satu parameter. Dua parameter tidak didukung.

Ekspresi fungsi agregat

Ekspresi

Apakah indeks penyimpanan kolom didukung?

JSON_OBJECTAGG()

Tidak

Ekspresi enkripsi dan kompresi

Ekspresi

Dukungan indeks penyimpanan kolom

AES_DECRYPT()

Tidak

AES_ENCRYPT()

Tidak

COMPRESS()

Tidak

RANDOM_BYTES()

Tidak

STATEMENT_DIGEST()

Tidak

STATEMENT_DIGEST_TEXT()

Tidak

UNCOMPRESS()

Tidak

UNCOMPRESSED_LENGTH()

Tidak

VALIDATE_PASSWORD_STRENGTH()

Tidak

Fungsi JSON

Fungsi

Apakah indeks penyimpanan kolom didukung?

JSON_ARRAY_APPEND()

Tidak

JSON_ARRAY_INSERT()

Tidak

JSON_CONTAINS_PATH()

Tidak

JSON_INSERT()

Tidak

JSON_MERGE()

Tidak

JSON_MERGE_PATCH()

Tidak

JSON_MERGE_PRESERVE()

Tidak

JSON_REPLACE()

Tidak

JSON_SCHEMA_VALID()

Tidak

JSON_SCHEMA_VALIDATION_REPORT()

Tidak

JSON_SEARCH()

Tidak

JSON_SET()

Tidak

JSON_STORAGE_FREE()

Tidak

JSON_STORAGE_SIZE()

Tidak

JSON_VALUE()

Tidak

MEMBER OF()

Tidak

Fungsi spasial

Fungsi

Apakah indeks penyimpanan kolom didukung?

ST_AsGeoJSON()

Tidak

ST_Buffer()

Tidak

ST_Buffer_Strategy()

Tidak

ST_Centroid()

Tidak

ST_Collect()

Tidak

ST_ConvexHull()

Tidak

ST_EndPoint()

Tidak

ST_ExteriorRing()

Tidak

ST_FrechetDistance()

Tidak

ST_GeoHash()

Tidak

ST_GeometryN()

Tidak

ST_GeometryType()

Tidak

ST_GeomFromGeoJSON()

Tidak

ST_HausdorffDistance()

Tidak

ST_InteriorRingN()

Tidak

ST_Intersection()

Tidak

ST_IsClosed()

Tidak

ST_IsEmpty()

Tidak

ST_IsSimple()

Tidak

ST_IsValid()

Tidak

ST_LatFromGeoHash()

Tidak

ST_LineInterpolatePoint()

Tidak

ST_LineInterpolatePoints()

Tidak

ST_LongFromGeoHash()

Tidak

ST_NumGeometries()

Tidak

ST_NumInteriorRing()

Tidak

ST_NumInteriorRings()

Tidak

ST_NumPoints()

Tidak

ST_PointAtDistance()

Tidak

ST_PointFromGeoHash()

Tidak

ST_PointN()

Tidak

ST_StartPoint()

Tidak

ST_SwapXY()

Tidak