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;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 untuk kluster Anda, Anda dapat menyesuaikan rasio alokasi resource memori kapan saja sesuai kebutuhan.
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:
|
Jumlah maksimum data yang didukung oleh satu transaksi | Satu transaksi mendukung hingga 100.000 baris secara default. Anda dapat menyesuaikan nilai ini menggunakan parameter | |
Savepoint | Tidak didukung | |
XA transactions | Transaksi XA internal didukung. | |
Locks | Granularitas lock |
|
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 |
| |
Replikasi primary/secondary | Format binary logging | Tiga format berikut didukung:
Catatan Format default adalah row. Format stmt dan mixed dapat menyebabkan masalah keamanan data dalam skenario konkuren tertentu. |
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 middletidak 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 middledapat 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:
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 dalam sesi database, hapus awalanloose_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 |