全部产品
Search
文档中心

:Catatan penggunaan X-Engine

更新时间:Dec 20, 2025

Topik ini menjelaskan cara menggunakan X-Engine.

Mengubah mesin penyimpanan tabel dari InnoDB ke X-Engine

Anda dapat mengeksekusi perintah berikut untuk mengubah mesin penyimpanan tabel dari engine InnoDB ke X-Engine.

ALTER TABLE <database_name>.<table_name> ENGINE xengine;
Catatan

Saat Anda menggunakan perintah ALTER untuk mengubah mesin penyimpanan tabel dari InnoDB ke X-Engine, operasi penulisan Data Manipulation Language (DML) dan Data Definition Language (DDL) ke tabel tersebut akan diblokir.

Membuat tabel di X-Engine

Untuk membuat tabel yang menggunakan X-Engine pada kluster yang mendukung kedua mesin penyimpanan InnoDB dan X-Engine, Anda harus secara eksplisit menentukan X-Engine saat membuat tabel. Sintaksnya adalah sebagai berikut:

CREATE TABLE t1(c1 int primary key , c2 int) ENGINE=xengine;

Menyesuaikan rasio resource memori

Pada tab X-Engine (Warm Data) di halaman Configuration and Management > Time to Live untuk kluster Anda, Anda dapat menyesuaikan rasio alokasi resource memori kapan saja sesuai kebutuhan.image

Tabel berikut menyediakan proporsi yang direkomendasikan untuk tiga skenario umum. Anda dapat menetapkan proporsi tersebut berdasarkan kebutuhan bisnis Anda.

Skenario

InnoDB (%)

X-Engine (%)

Gunakan InnoDB untuk data hangat dan X-Engine untuk data dingin. Data dingin diklasifikasikan sebagai data yang jarang diakses.

80

20

Gunakan InnoDB untuk data hangat dan X-Engine untuk data dingin. Data dingin masih diperbarui dan dapat dikueri.

50

50

Gunakan InnoDB untuk jumlah data kecil dan X-Engine untuk jumlah data besar yang perlu diperbarui atau dikueri.

20

80

Batasan

X-Engine memiliki batasan terkait fitur-fiturnya dan transaksi besar.

Batasan fitur engine

Kategori

Fitur

Deskripsi

Fitur SQL

Foreign keys

Tidak didukung

Temporary tables

Tidak didukung

Generated Column

Tidak didukung

Handler API

Tidak didukung

Kolom dan properti kolom

Jumlah maksimum kolom dalam satu tabel

10.000

Panjang maksimum record

256 MB

Tipe data GIS

Semua tipe data terkait GIS tidak didukung, termasuk geometry, point, linestring, polygon, multipoint, multilinestring, multipolygon, dan geometrycollection.

Indeks

Hash indexes

Tidak didukung

Spatial indexes

Tidak didukung. Pembuatan dan penggunaan full-text indexes tidak didukung.

Transaksi

Tingkat isolasi transaksi

Dua tingkat isolasi berikut didukung:

  • Read Committed (RC)

  • Repeatable Read (RR)

Jumlah maksimum data yang didukung oleh satu transaksi

Satu transaksi mendukung hingga 100.000 baris secara default. Anda dapat menyesuaikan nilai ini menggunakan parameter loose_xengine_bulk_load_size.

Savepoint

Tidak didukung

XA transactions

Transaksi XA internal didukung.

Locks

Granularitas lock

  • Lock level tabel dan lock level baris didukung.

  • Gap locks tidak didukung.

Skip Locked

Tidak didukung

Lock Nowait

Tidak didukung

Set karakter

Set karakter yang didukung oleh kolom non-indeks

Semua set karakter (aturan pengurutan) didukung untuk kolom non-indeks.

Set karakter yang didukung oleh kolom indeks

  • latin1 (latin1_bin)

  • gbk (gbk_chinese_ci, gbk_bin)

  • utf8 (utf8_general_ci, utf8_bin)

  • utf8mb4 (utf8mb4_0900_ai_ci, utf8mb4_general_ci, utf8mb4_bin)

Replikasi primary/secondary

Format binary logging

Tiga format berikut didukung:

  • stmt

  • row

  • mixed

Catatan

Format default adalah row. Format stmt dan mixed dapat menyebabkan masalah keamanan data dalam skenario konkuren tertentu.

Catatan

Secara default, fitur X-Engine yang tidak tercantum dalam tabel ini identik dengan fitur engine InnoDB.

Batasan pada transaksi besar

X-Engine tidak mendukung transaksi besar. Jika suatu transaksi memodifikasi 10.000 baris atau lebih, X-Engine akan mengaktifkan fitur commit in middle. Fitur ini memungkinkan X-Engine melakukan commit internal terhadap transaksi tersebut dan memulai sub-transaksi untuk melanjutkan transaksi asli. Namun, fitur commit in middle tidak sepenuhnya mematuhi prinsip atomisitas transaksi. Perhatikan poin-poin berikut saat menggunakan fitur ini:

  • Jika Anda memulai transaksi untuk memasukkan sejumlah besar data, sebagian data mungkin telah di-commit selama proses penyisipan karena fitur commit in middle. Akibatnya, permintaan lain dapat mengakses data yang telah di-commit sebelum seluruh transaksi selesai.

  • Jika Anda memulai transaksi untuk memodifikasi sejumlah besar data, bagian transaksi yang telah di-commit oleh fitur commit in middle tidak dapat di-rollback.

    DROP TABLE t1;
    CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
    BEGIN;
    call insert_data(12000); // Masukkan 12.000 baris untuk memicu commit in middle. 10.000 baris pertama telah di-commit.
    rollback;// Operasi rollback hanya dapat mengembalikan 2.000 baris terakhir.
    SELECT COUNT(*) FROM t1; // Anda tetap dapat mengkueri 10.000 baris tersebut.
    +----------+
    | COUNT(*) |
    +----------+
    |    10000 |
    +----------+
    1 row in set (0.00 sec)
  • Jika Anda memulai transaksi untuk memasukkan lalu menghapus sejumlah besar data, fitur commit in middle dapat mencegah operasi DELETE membaca baris yang baru saja dimasukkan dalam transaksi yang sama. Akibatnya, data yang baru dimasukkan tidak dihapus.

    DROP TABLE t1;
    CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
    call insert_data(10000);
    BEGIN;
    INSERT INTO t1 VALUES(10001,10001), (10002,10002);
    DELETE FROM t1 WHERE c1 >= 0;// Operasi DELETE memicu commit in middle, sehingga tidak dapat membaca baris yang dimasukkan dalam transaksi ini.
    commit;
    SELECT * FROM t1;
    +-------+-------+
    | c1    | c2    |
    +-------+-------+
    | 10001 | 10001 |
    | 10002 | 10002 |
    +-------+-------+
    2 rows in set (0.00 sec)

Deskripsi parameter

Anda dapat memodifikasi parameter dalam tabel berikut sesuai kebutuhan. Untuk informasi selengkapnya, lihat Setel parameter kluster dan parameter node.

Metode modifikasi parameter kluster PolarDB berbeda antara konsol dan sesi database. Perbedaannya adalah sebagai berikut:

  • Di Konsol PolarDB

    • Kompatibilitas: Untuk kompatibilitas dengan file konfigurasi MySQL, beberapa parameter kluster di Konsol PolarDB memiliki awalan loose_.

    • Prosedur: Temukan dan modifikasi parameter yang memiliki awalan loose_.

  • Di sesi database (menggunakan command line atau client)

    • Prosedur: Saat Anda menggunakan perintah SET untuk memodifikasi parameter dalam sesi database, hapus awalan loose_ dan gunakan nama parameter aslinya.

Kategori

Parameter

Deskripsi

Dapat dimodifikasi

Perlu restart setelah modifikasi

Kinerja

xengine_batch_group_max_group_size

Jumlah maksimum grup dalam pipeline transaksi.

Tidak

N/A

xengine_batch_group_max_leader_wait_time_us

Waktu tunggu maksimum pipeline transaksi.

Tidak

N/A

xengine_batch_group_slot_array_size

Ukuran batch maksimum pipeline transaksi.

Tidak

N/A

xengine_parallel_read_threads

Jumlah pemindaian paralel konkuren.

Ya

Tidak

xengine_parallel_wal_recovery

Pemulihan paralel.

Tidak

N/A

Memori

xengine_block_cache_size

Ukuran block cache yang digunakan untuk menyimpan cache data tabel dan indeks.

Ya

Tidak

xengine_row_cache_size

Ukuran row cache.

Tidak

N/A

xengine_write_buffer_size

Ukuran maksimum satu Memtable.

Tidak

N/A

xengine_block_size

Ukuran blok data di disk.

Tidak

N/A

xengine_db_write_buffer_size

Batas ukuran total untuk Memtable aktif semua subtabel.

Tidak

N/A

xengine_db_total_write_buffer_size

Batas ukuran total untuk Memtable aktif dan immutable semua subtabel.

Ya

Tidak

xengine_scan_add_blocks_limit

Jumlah blok yang dapat ditambahkan ke BlockCache untuk setiap permintaan range scan.

Ya

Tidak

compaction

xengine_flush_delete_percent_trigger

Jumlah total record yang memicu pergantian Memtable. Saat jumlah record dalam Memtable mencapai nilai yang ditentukan, pergantian Memtable akan dipicu.

Tidak

N/A

Locks

xengine_max_row_locks

Jumlah maksimum baris yang dapat dikunci dalam satu permintaan SQL.

Tidak

N/A

xengine_lock_wait_timeout

Periode timeout tunggu lock.

Ya

Tidak