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;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 . Pada halaman yang muncul, klik tab X-Engine (Warm Data). Pada tab ini, sesuaikan proporsi sumber daya memori sesuai kebutuhan bisnis Anda.
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:
|
Jumlah maksimum data yang didukung oleh transaksi | 32 MB | |
Savepoint | Tidak didukung | |
Transaksi XA | X-Engine mendukung transaksi XA internal. | |
Kunci | Granularitas kunci |
|
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 |
| |
Replikasi utama/sekunder | Format log biner | X-Engine mendukung format berikut:
Catatan Secara default, log biner menggunakan format row. Format log stmt dan mixed dapat menyebabkan masalah keamanan data dalam skenario konkurensi tertentu. |
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 middletidak 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.
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 |