Fitur I/O asinkron DDL telah ditambahkan di PolarDB. Pembuatan indeks pada tabel besar melalui pernyataan DDL memakan waktu lama. Anda dapat menggunakan fitur I/O asinkron DDL untuk memperpendek waktu pembuatan indeks tersebut.
Prasyarat
Sebelum memulai, pastikan kluster PolarDB Anda memenuhi salah satu persyaratan versi berikut:
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.6 atau yang lebih baru
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.29 atau yang lebih baru
Untuk memeriksa versi saat ini, lihat Query the engine version.
Batasan
I/O asinkron DDL tidak berlaku untuk:
Indeks teks lengkap (full-text indexes)
Indeks spasial (spatial indexes)
Aktifkan I/O asinkron DDL
Atur parameter innodb_polar_ddl_async_io ke nilai ON dalam pengaturan parameter kluster Anda. Untuk petunjuknya, lihat Configure cluster and node parameters.
| Parameter | Level | Default | Valid values | Description |
|---|---|---|---|---|
innodb_polar_ddl_async_io | Global | OFF | ON, OFF | Mengaktifkan atau menonaktifkan I/O asinkron DDL |
Uji kinerja
Uji berikut mengukur dampak I/O asinkron DDL terhadap pembuatan indeks pada tabel besar.
Lingkungan pengujian
PolarDB for MySQL 8.0, CPU 8 core, memori 32 GB, kapasitas penyimpanan 50 TB
Skema
CREATE TABLE `table_1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`seller_id` bigint(20) DEFAULT NULL,
`seller_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`gmt_create` varchar(30) DEFAULT NULL,
`update_time` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;Data uji
Prosedur tersimpan berikut menyisipkan 100.000.000 baris ke dalam table_1:
delimiter ||
CREATE PROCEDURE populate_0(IN NUM INT)
BEGIN
DECLARE sid INT;
DECLARE suffix_name INT;
DECLARE i INT;
SET sid=1000;
SET suffix_name=10;
SET i=1;
START TRANSACTION;
WHILE i <= NUM
DO
INSERT INTO table_1(seller_id,seller_name,gmt_create,update_time)
VALUES(sid,CONCAT('sellername',suffix_name),NOW(),NOW());
SET suffix_name=suffix_name+1;
SET sid=sid+1;
SET i=i+1;
END WHILE;
COMMIT;
END ||
delimiter ;
CALL populate_0(100000000);Metode dan hasil pengujian
Jalankan pernyataan berikut dengan I/O asinkron DDL diaktifkan lalu dinonaktifkan, kemudian bandingkan waktu eksekusinya:
ALTER TABLE table_1 ADD INDEX name_index (seller_name);| DDL asynchronous I/O | Time (seconds) |
|---|---|
| Enabled | 368 |
| Disabled | 485 |
Dalam pengujian ini, mengaktifkan I/O asinkron DDL mengurangi waktu pembuatan indeks sekitar 24%.
Contact us
Jika Anda memiliki pertanyaan mengenai operasi DDL, silakan contact technical support.