PolarDB mengatasi kinerja lambat pada operasi Data Definition Language (DDL), seperti TRUNCATE TABLE dan DROP TABLE, di MySQL edisi komunitas dengan mengoptimalkan mekanisme pembersihan halaman data di kolam buffer. Optimasi ini menghindari bottleneck kinerja akibat pemindaian penuh. Pada kluster dengan memori besar atau di bawah beban tinggi, fitur ini secara signifikan mengurangi waktu eksekusi operasi DDL serta meningkatkan kinerja dan stabilitas sistem.
Batasan
Kluster PolarDB for MySQL Anda harus memenuhi salah satu persyaratan berikut:
MySQL 5.7, versi revisi 5.7.1.0.19 atau lebih baru.
MySQL 8.0.1, versi revisi 8.0.1.1.50 atau lebih baru.
MySQL 8.0.2, versi revisi 8.0.2.2.30.1 atau lebih baru.
Untuk memeriksa versi revisi kluster Anda, lihat Panduan Versi untuk PolarDB for MySQL.
Penggunaan
Anda dapat mengaktifkan fitur TRUNCATE/DROP TABLE yang lebih cepat dengan mengatur parameter loose_innodb_flush_pages_using_space_id. Untuk informasi selengkapnya, lihat Mengatur parameter kluster dan parameter node. Tabel berikut menjelaskan parameter tersebut.
Parameter | Tingkat | Deskripsi |
loose_innodb_flush_pages_using_space_id | Global | Sakelar untuk fitur TRUNCATE/DROP TABLE yang lebih cepat. Nilai yang valid:
|
Pengujian kinerja
Pengujian ini menggunakan MySQL 5.7 untuk membandingkan kinerja operasi TRUNCATE TABLE pada kluster dengan spesifikasi berbeda, dengan fitur TRUNCATE/DROP TABLE yang lebih cepat diaktifkan dan dinonaktifkan.
Metode pengujian
Jalankan perintah berikut untuk mengisi kolam buffer pada kluster dengan spesifikasi berbeda. Langkah ini memastikan bahwa status kolam buffer tidak memengaruhi kinerja operasi TRUNCATE TABLE.
ip=<cluster_endpoint> user=<database_account> psw=<database_password> port=<database_port> MYSQL="mysql -h $ip -P $port -u$user -p$psw -vvv -e" $MYSQL "create database test;" $MYSQL "use test;create table if not exists t3 (a bigint,b char(250),c char(250),d char(250),e char(250)) charset=latin1;" $MYSQL "use test;insert into t3 values(1,repeat('x', 255),repeat('x', 255),repeat('x', 255),repeat('x', 255));" for ((i=1; i<=32; i+=1)) do $MYSQL --host=$ip -p$psw --port=$port -u$user -vvv -e "use test;insert into t3 select * from t3;" done $MYSQL "use test; select count(*) from t3;"Buat dua tabel, t1 dan t2. Masukkan 8.192 baris data ke dalam
t1dan 2.097.152 baris data ke dalamt2.# Buat tabel t1 dan masukkan 8.192 baris data. row_num=13 ip=<cluster_endpoint> user=<database_account> psw=<database_password> port=<database_port> MYSQL="mysql -h $ip -P $port -u$user -p$psw -vvv -e" $MYSQL "use test;create table if not exists t1 (a bigint,b char(250),c char(250),d char(250),e char(250)) charset=latin1;" $MYSQL "use test;insert into t1 values(1,repeat('x', 255),repeat('x', 255),repeat('x', 255),repeat('x', 255));" for ((i=1; i<=$row_num; i+=1)) do $MYSQL "use test;insert into t1 select * from t1;" done# Buat tabel t2 dan masukkan 2.097.152 baris data. row_num=21 ip=<cluster_endpoint> user=<database_account> psw=<database_password> port=<database_port> MYSQL="mysql -h $ip -P $port -u$user -p$psw -vvv -e" $MYSQL "use test;create table if not exists t2 (a bigint,b char(250),c char(250),d char(250),e char(250)) charset=latin1;" $MYSQL "use test;insert into t2 values(1,repeat('x', 255),repeat('x', 255),repeat('x', 255),repeat('x', 255));" for ((i=1; i<=$row_num; i+=1)) do $MYSQL "use test;insert into t2 select * from t2;" donePada kluster dengan spesifikasi berbeda, jalankan operasi TRUNCATE TABLE pada tabel
t1dant2dengan fitur TRUNCATE/DROP TABLE yang lebih cepat diaktifkan dan dinonaktifkan.
Hasil pengujian
Waktu eksekusi operasi TRUNCATE TABLE pada tabel t1 dan t2 dicatat pada kluster dengan spesifikasi berbeda, dengan fitur TRUNCATE/DROP TABLE yang lebih cepat diaktifkan dan dinonaktifkan. Hasilnya ditunjukkan dalam tabel berikut:
Spesifikasi kluster | Kolam buffer (GB) | t1 | t2 | ||||
ON (detik) | OFF (detik) | Tingkat peningkatan | ON (detik) | OFF (detik) | Tingkat peningkatan | ||
64 core, 512 GB | 374 | 0,01 | 5.2 | 99,81% | 0,11 | 9,48 | 98,84% |
32 core, 256 GB | 192 | 0,02 | 2,45 | 99,18% | 0,1 | 2,65 | 96,23% |
16 core, 128 GB | 96 | 0,01 | 1,73 | 99,42% | 0,12 | 1,86 | 93,55% |
8 core, 64 GB | 42 | 0,01 | 0,73 | 98,63% | 0,12 | 0,79 | 84,81% |
4 core, 32 GB | 24 | 0,02 | 0,45 | 95,56% | 0,13 | 0,53 | 75,47% |
4 core, 16 GB | 12 | 0,03 | 0,23 | 86,96% | 0,12 | 0,35 | 65,71% |
Tabel tersebut menunjukkan bahwa mengaktifkan fitur TRUNCATE/DROP TABLE yang lebih cepat secara signifikan meningkatkan kinerja operasi TRUNCATE TABLE.
Hubungi kami
Jika Anda memiliki pertanyaan tentang operasi DDL, silakan hubungi dukungan teknis.