All Products
Search
Document Center

PolarDB:Penggunaan X-Engine

Last Updated:May 22, 2026

Pelajari cara menggunakan X-Engine.

Ubah mesin tabel ke X-Engine

Jalankan pernyataan berikut untuk mengubah mesin tabel dari InnoDB ke X-Engine.

ALTER TABLE <database name>.<table name> ENGINE xengine;
Catatan

Pernyataan ALTER memblokir operasi tulis (DML dan DDL) pada tabel selama proses konversi mesin.

Buat tabel X-Engine

Untuk membuat tabel X-Engine di kluster yang menggunakan X-Engine dan InnoDB secara bersamaan, tentukan X-Engine sebagai storage engine. Contoh pernyataan:

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

Atur alokasi sumber daya memori

Anda dapat menyesuaikan rasio alokasi memori sesuai kebutuhan bisnis di tab X-Engine (Warm Data) pada halaman Settings and Management > Data Lifecycle kluster.image

Tabel berikut menyediakan rekomendasi alokasi memori untuk tiga kasus penggunaan umum. Sesuaikan rasionya berdasarkan workload Anda.

Kasus penggunaan

Memori InnoDB (%)

Memori X-Engine (%)

Gunakan InnoDB untuk data hot dan X-Engine untuk data cold terarsip yang jarang diakses.

80

20

Gunakan InnoDB untuk data hot dan X-Engine untuk data cold terarsip yang masih sering diperbarui atau dikueri.

50

50

Gunakan InnoDB untuk beberapa tabel dan X-Engine untuk banyak tabel tempat datanya sering diperbarui atau dikueri.

20

80

Batasan

high-compression engine (X-Engine) memiliki batasan terkait mesinnya dan fungsionalitas transaksi besar.

Batasan fitur mesin

Kategori

Fitur

Deskripsi

Fitur SQL

foreign key

Tidak didukung

temporary table

Tidak didukung

generated column

Tidak didukung

handler API

Tidak didukung

Kolom dan properti kolom

Jumlah maksimum kolom per tabel

10.000

panjang record maksimum

256 MB

Tipe data GIS

X-Engine tidak mendukung semua tipe data terkait GIS, termasuk geometry, point, linestring, polygon, multipoint, multilinestring, multipolygon, dan geometrycollection.

index

hash index

Tidak didukung

spatial index

Tidak didukung. Fitur untuk full-text indexes juga tidak didukung.

transaction

transaction isolation level

Dua tingkat isolasi berikut didukung:

  • Read committed (RC)

  • Repeatable read (RR)

Jumlah maksimum baris per transaksi

Secara default, satu transaksi dapat berisi hingga 100.000 baris. Anda dapat mengubah batas ini dengan menggunakan parameter loose_xengine_bulk_load_size.

savepoint

Tidak didukung

XA transaction

Transaksi XA internal didukung.

lock

lock granularity

  • Kunci tingkat tabel dan kunci tingkat baris didukung.

  • Gap locks tidak didukung.

Skip Locked

Tidak didukung

Lock Nowait

Tidak didukung

character set

Set karakter yang didukung untuk kolom non-indeks

Semua set karakter dan collation didukung untuk kolom non-indeks.

Set karakter yang didukung untuk 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)

primary/secondary replication

format binary log

Tiga format berikut didukung:

  • stmt

  • row

  • mixed

Catatan

Format default adalah row. Penggunaan format stmt atau mixed dapat mengompromikan keamanan data dalam skenario konkurensi tinggi tertentu.

Catatan

Untuk fitur apa pun yang tidak tercantum dalam topik ini, X-Engine berperilaku identik dengan InnoDB.

Batasan transaksi besar

X-Engine tidak mendukung transaksi besar. Ketika suatu transaksi memodifikasi 10.000 baris atau lebih, X-Engine mengaktifkan fitur commit in middle. Fitur ini menyebabkan X-Engine melakukan commit internal terhadap transaksi saat ini dan memulai sub-transaksi baru untuk melanjutkan operasi. Namun, fitur commit in middle tidak menjamin atomicity transaksi secara ketat. Perhatikan implikasi berikut:

  • Jika Anda memulai transaksi untuk memasukkan volume data yang besar, fitur commit in middle mungkin melakukan commit sebagian data sebelum transaksi selesai. Data yang telah di-commit sebagian ini menjadi terlihat oleh transaksi konkuren lainnya.

  • Anda tidak dapat melakukan rollback penuh terhadap transaksi yang telah di-commit sebagian oleh fitur commit in middle.

    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 di-commit.
    rollback;// Operasi rollback hanya dapat membatalkan 2.000 baris terakhir.
    SELECT COUNT(*) FROM t1; // Kueri tetap menemukan 10.000 baris yang telah di-commit.
    +----------+
    | COUNT(*) |
    +----------+
    |    10000 |
    +----------+
    1 row in set (0.00 sec)
  • Karena fitur commit in middle, jika suatu transaksi memasukkan lalu menghapus sejumlah besar baris, operasi DELETE mungkin tidak melihat baris yang baru saja dimasukkan.

    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 melewatkan baris yang dimasukkan dalam transaksi yang sama.
    commit;
    SELECT * FROM t1;
    +-------+-------+
    | c1    | c2    |
    +-------+-------+
    | 10001 | 10001 |
    | 10002 | 10002 |
    +-------+-------+
    2 rows in set (0.00 sec)

Parameter

Anda dapat memodifikasi parameter dalam tabel di bawah ini sesuai kebutuhan bisnis. Untuk petunjuk detail, lihat Setel parameter kluster dan node.

Metode modifikasi parameter kluster PolarDB berbeda antara konsol dan sesi database. Perbedaannya 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 di sesi database, hapus awalan loose_ dan gunakan nama parameter aslinya.

Kategori

Parameter

Deskripsi

Dapat dimodifikasi

Perlu restart

Performa

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 untuk pipeline transaksi.

Tidak

N/A

xengine_batch_group_slot_array_size

Ukuran batch maksimum pipeline transaksi.

Tidak

N/A

xengine_parallel_read_threads

Jumlah thread yang digunakan untuk pemindaian paralel.

Ya

Tidak

xengine_parallel_wal_recovery

Mengontrol apakah akan mengaktifkan pemulihan WAL paralel.

Tidak

N/A

Memori

xengine_block_cache_size

Ukuran block cache untuk 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 memtable aktif di semua subtabel.

Tidak

N/A

xengine_db_total_write_buffer_size

Batas ukuran total memtable aktif dan immutable di semua subtabel.

Ya

Tidak

xengine_scan_add_blocks_limit

Jumlah blok yang dapat ditambahkan ke block cache untuk setiap permintaan pemindaian rentang.

Ya

Tidak

Compaction

xengine_flush_delete_percent_trigger

Jumlah record yang memicu pergantian memtable.

Tidak

N/A

Lock

xengine_max_row_locks

Jumlah maksimum baris yang dapat dikunci oleh satu permintaan SQL.

Tidak

N/A

xengine_lock_wait_timeout

Periode timeout tunggu kunci.

Ya

Tidak