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;
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 kluster.
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:
|
|
Jumlah maksimum baris per transaksi |
Secara default, satu transaksi dapat berisi hingga 100.000 baris. Anda dapat mengubah batas ini dengan menggunakan parameter |
|
|
savepoint |
Tidak didukung |
|
|
XA transaction |
Transaksi XA internal didukung. |
|
|
lock |
lock granularity |
|
|
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 |
|
|
|
primary/secondary replication |
format binary log |
Tiga format berikut didukung:
Catatan
Format default adalah row. Penggunaan format stmt atau mixed dapat mengompromikan keamanan data dalam skenario konkurensi tinggi tertentu. |
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 middlemungkin 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:
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
SETuntuk memodifikasi parameter di sesi database, hapus awalanloose_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 |