全部产品
Search
文档中心

:Penggunaan X-Engine

更新时间:Jul 03, 2025

Topik ini menjelaskan cara menggunakan X-Engine.

Mengubah mesin penyimpanan tabel dari InnoDB ke X-Engine

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

ALTER TABLE <nama database>.<nama tabel> ENGINE xengine;
Catatan

Saat menggunakan pernyataan ALTER untuk mengubah mesin penyimpanan tabel dari InnoDB ke X-Engine, operasi tulis DML dan DDL pada tabel akan diblokir.

Buat tabel dengan menggunakan X-Engine

Untuk membuat tabel dengan menggunakan X-Engine dalam kluster yang menggunakan X-Engine dan InnoDB, tentukan X-Engine sebagai mesin penyimpanan saat pembuatan tabel. Contoh pernyataan:

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

Menyesuaikan proporsi sumber daya memori

Masuk ke konsol PolarDB, lalu temukan kluster yang ingin Anda kelola. Di halaman detail kluster, pilih Settings and Management > Data Lifecycle. Pada halaman yang muncul, klik tab X-Engine (Warm Data). Pada tab ini, sesuaikan proporsi sumber daya memori sesuai kebutuhan bisnis Anda.image

Tabel berikut memberikan proporsi yang direkomendasikan untuk tiga skenario tipikal. Anda dapat menetapkan proporsi berdasarkan kebutuhan bisnis Anda.

Skema

InnoDB (%)

X-Engine (%)

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

80

20

Gunakan InnoDB untuk data panas dan X-Engine untuk data dingin. Data dingin masih diperbarui dan dapat di-query.

50

50

Gunakan InnoDB untuk sejumlah kecil data dan X-Engine untuk sejumlah besar data yang perlu diperbarui atau di-query.

20

80

Batasan

X-Engine memberlakukan batasan pada fitur dan transaksi besar.

Batasan pada fitur

Kategori

Fitur

Deskripsi

Fitur SQL

Kunci asing

Tidak didukung

Tabel sementara

Tidak didukung

Kolom yang Dihasilkan

Tidak didukung

API Handler

Tidak didukung

Properti kolom

Panjang maksimum kolom (longblob/longtext/json)

32 MB

Tipe data GIS

X-Engine tidak mendukung tipe data GIS, termasuk GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, dan GEMOMETRYCOLLECTION.

Indeks

Indeks hash

Tidak didukung

Indeks spasial

Tidak didukung. X-Engine tidak mendukung pembuatan atau penggunaan indeks teks penuh.

Transaksi

Tingkat isolasi transaksi

X-Engine mendukung tingkat isolasi berikut:

  • Baca Terkonfirmasi (RC)

  • Baca yang Dapat Diulang (RR)

Jumlah maksimum data yang didukung oleh transaksi

32 MB

Savepoint

Tidak didukung

Transaksi XA

X-Engine mendukung transaksi XA internal.

Kunci

Granularitas kunci

  • X-Engine mendukung kunci tingkat tabel dan tingkat baris.

  • X-Engine tidak mendukung kunci gap.

Skip Locked

Tidak didukung

Lock Nowait

Tidak didukung

Set karakter

Set karakter yang didukung oleh kolom non-diindeks

Semua

Set karakter yang didukung oleh kolom diindeks

  • Latin1 (latin1_bin)

  • GBK (gbk_chinese_ci dan gbk_bin)

  • UTF-8 (utf8_general_ci dan utf8_bin)

  • UTF-8MB4 (utf8mb4_0900_ai_ci, utf8mb4_general_ci, dan utf8mb4_bin)

Replikasi utama/sekunder

Format log biner

X-Engine mendukung format berikut:

  • stmt

  • row

  • mixed

Catatan

Secara default, log biner menggunakan format row. Format log stmt dan mixed dapat menyebabkan masalah keamanan data dalam skenario konkurensi tertentu.

Catatan

Secara default, fitur X-Engine yang tidak dijelaskan dalam tabel di atas sama dengan fitur InnoDB.

Batasan pada transaksi besar

X-Engine tidak mendukung transaksi besar. Jika jumlah baris yang dimodifikasi dalam transaksi lebih besar dari atau sama dengan 10.000, X-Engine mengaktifkan fitur commit in middle. Dengan cara ini, X-Engine secara internal melakukan commit transaksi dan memulai sub-transaksi untuk melanjutkan pelaksanaan transaksi. Namun, fitur commit in middle mungkin tidak menjamin atomicitas transaksi. Perhatikan hal-hal berikut saat menggunakan fitur commit in middle:

  • Anggaplah Anda ingin memulai transaksi untuk menyisipkan sejumlah besar data. Selama penyisipan, sebagian data dicommit karena fitur commit in middle. Data yang disisipkan dapat di-query oleh permintaan lain.

  • Anggaplah Anda ingin memulai transaksi untuk memodifikasi sejumlah besar data. Data yang telah dicommit oleh fitur commit in middle tidak dapat dikembalikan.

    DROP TABLE t1;
    CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
    BEGIN;
    call insert_data(12000);// 12.000 baris disisipkan dan operasi commit in middle dipicu. Akibatnya, 10.000 baris pertama data dicommit. 
    rollback;// Anda hanya dapat mengembalikan 2.000 baris terakhir. 
    SELECT COUNT(*) FROM t1;// 10.000 baris data yang dicommit dapat di-query. 
    +----------+
    | COUNT(*) |
    +----------+
    |    10000 |
    +----------+
    1 row in set (0.00 sec)
  • Anggaplah Anda ingin memodifikasi dan menghapus sejumlah besar data dalam transaksi. Operasi DELETE tidak dapat membaca baris yang telah dicommit dalam transaksi ini karena fitur commit in middle. Akibatnya, Anda tidak dapat menghapus data baru yang telah dicommit.

    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 penghapusan memicu operasi commit in middle, dan dua baris data yang disisipkan oleh transaksi saat ini tidak dihapus. 
    commit;
    SELECT * FROM t1;
    +-------+-------+
    | c1    | c2    |
    +-------+-------+
    | 10001 | 10001 |
    | 10002 | 10002 |
    +-------+-------+
    2 rows in set (0.00 sec)

Parameter

Anda dapat memodifikasi parameter yang tersedia sesuai dengan skenario bisnis Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan Parameter Kluster dan Node.

Catatan

Untuk memastikan kompatibilitas dengan file konfigurasi MySQL, semua parameter di konsol PolarDB memiliki awalan loose_. Jika Anda ingin memodifikasi parameter imci_enable_pack_order_key di konsol PolarDB, tentukan versi yang kompatibel dengan MySQL yang memiliki awalan loose_, yaitu loose_imci_enable_pack_order_key.

Kategori

Parameter

Deskripsi

Dapat dimodifikasi

Mulai ulang 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 thread baca paralel.

Ya

Tidak

xengine_parallel_wal_recovery

Menentukan apakah akan mengaktifkan pemulihan Write-Ahead Logging (WAL) paralel.

Tidak

N/A

Memori

xengine_block_cache_size

Ukuran cache blok baca.

Ya

Tidak

xengine_row_cache_size

Ukuran cache baris.

Tidak

N/A

xengine_write_buffer_size

Ukuran maksimum tabel memori.

Tidak

N/A

xengine_block_size

Ukuran blok data pada disk.

Tidak

N/A

xengine_db_write_buffer_size

Ukuran maksimum tabel memori aktif di semua sub-tabel.

Tidak

N/A

xengine_db_total_write_buffer_size

Ukuran maksimum tabel memori aktif dan tabel memori immutable di semua sub-tabel.

Ya

Tidak

xengine_scan_add_blocks_limit

Jumlah blok yang dapat ditambahkan ke cache blok selama setiap permintaan pemindaian berbasis rentang.

Ya

Tidak

compaction

xengine_flush_delete_percent_trigger

Jumlah catatan untuk memicu pergantian tabel memori. Jika jumlah catatan dalam tabel memori lebih besar dari nilai parameter ini, pergantian tabel memori dipicu.

Tidak

N/A

Kunci

xengine_max_row_locks

Jumlah maksimum baris yang dapat dikunci dalam satu permintaan SQL.

Tidak

N/A

xengine_lock_wait_timeout

Periode timeout tunggu kunci.

Ya

Tidak