Topik ini menjelaskan fitur Faster DDL yang menyediakan mekanisme pengelolaan buffer pool yang dioptimalkan, sehingga mengurangi dampak operasi bahasa definisi data (DDL) dan meningkatkan jumlah operasi DDL konkuren yang diizinkan.
Prasyarat
Instans RDS Anda harus menjalankan salah satu versi MySQL berikut:- MySQL 8.0 (dengan versi mesin minor 20200630 atau yang lebih baru)
- MySQL 5.7 (dengan versi mesin minor 20200630 atau yang lebih baru)
- MySQL 5.6 (dengan versi mesin minor 20200630 atau yang lebih baru)
Informasi latar belakang
Operasi DDL umum terjadi pada instans RDS. Saat menggunakan instans RDS Anda, Anda mungkin mengalami masalah terkait operasi DDL, seperti:
- Saat menambahkan indeks, mengapa terjadi jitter performa yang mengganggu operasi baca dan tulis pada instans RDS Anda?
- Mengapa diperlukan lebih dari 10 menit untuk menjalankan operasi DDL pada tabel yang ukurannya kurang dari 1 GB?
- Saat koneksi yang menghasilkan tabel temporary ditutup, mengapa terjadi jitter performa?
Tim mesin database ApsaraDB for RDS telah melakukan analisis mendalam dan pengujian intensif untuk mengidentifikasi masalah tersebut. Berdasarkan temuan tersebut, tim menemukan kekurangan dalam logika maintenance cache yang digunakan untuk mengelola operasi DDL. Untuk mengatasi hal ini, tim mengembangkan fitur Faster DDL. Mekanisme pengelolaan buffer pool yang dioptimalkan oleh fitur ini mengurangi persaingan lock yang dipicu oleh operasi DDL. Dengan demikian, saat instans RDS Anda memproses beban kerja normal, performa instans dapat tetap terjaga selama operasi DDL.
Aktifkan Faster DDL
Anda dapat mengaktifkan fitur Faster DDL dengan mengatur parameter loose_innodb_rds_faster_ddl ke ON di Konsol ApsaraDB for RDS. Untuk informasi selengkapnya, lihat Modifikasi parameter instans.
Pengujian dengan operasi DDL
- Skenario pengujian
Gunakan algoritma in-place untuk menjalankan operasi DDL Online dengan mengeksekusi pernyataan berikut yang didukung MySQL 8.0: CREATE INDEX dan OPTIMIZE TABLE. Pernyataan CREATE INDEX membuat indeks pada tabel tanpa perlu membangun ulang tabel, sedangkan OPTIMIZE TABLE membuat indeks dengan membangun ulang tabel.
Operasi Instant In-place Rebuilds table Permits concurrent DML operations Only modifies metadata CREATE INDEX No Yes No Yes No OPTIMIZE TABLE No Yes Yes Yes No - Instans pengujian
Instans RDS yang digunakan untuk pengujian menjalankan MySQL 8.0, dilengkapi 8 core CPU dan memori 64 GB. Ukuran tabel tempat operasi DDL dijalankan adalah 600 MB.
- Prosedur pengujian
Gunakan SysBench untuk menjalankan uji stres. Dalam pengujian ini, lakukan operasi DDL Online dan bandingkan hasilnya.
- Hasil pengujian
Operasi Durasi eksekusi rata-rata (dengan Faster DDL dinonaktifkan) Durasi eksekusi rata-rata (dengan Faster DDL diaktifkan) Kali peningkatan performa CREATE INDEX 56 detik 4,9 detik 11,4 OPTIMIZE TABLE 220 detik 17 detik 12,9 - Rangkuman pengujian
Fitur Faster DDL memungkinkan ApsaraDB RDS for MySQL dengan AliSQL mengurangi durasi eksekusi operasi DDL lebih dari 90% dibandingkan dengan Edisi Komunitas MySQL.
Pengujian dengan tabel temporary
Tabel temporary umum digunakan dalam MySQL. Misalnya, sistem membuat tabel temporary untuk mengkueri tabel dari database information_schema atau untuk mempercepat eksekusi Pernyataan SQL yang kompleks. Saat sebuah thread keluar, semua tabel temporary terkait akan dihapus—jenis operasi DDL tertentu yang menyebabkan jitter performa pada instans RDS Anda. Untuk informasi selengkapnya, lihat Temp ibt tablespace truncation at disconnection stuck InnoDB under large BP.
- Instans pengujian
Instans RDS yang digunakan untuk pengujian menjalankan MySQL 8.0, dilengkapi 8 core CPU dan memori 64 GB.
- Prosedur pengujian
Gunakan tpcc-mysql untuk menjalankan uji stres. Dalam pengujian ini, jalankan kueri hingga kolam buffer mencapai kapasitas hampir penuh, lalu luncurkan permintaan single-threaded melalui koneksi singkat untuk menghasilkan tabel temporary.
- Hasil pengujian
Item perbandingan Tanpa operasi DDL Faster DDL diaktifkan Faster DDL dinonaktifkan Transaksi per detik (TPS) 42.000 40.000 < 10.000 Gambar berikut menunjukkan data performa per detik yang diperoleh dari uji stres. Bagian yang disorot merah menunjukkan TPS yang didukung oleh instans RDS saat fitur Faster DDL dinonaktifkan.
- Rangkuman pengujian
Setiap kali thread yang menghasilkan tabel temporary keluar, MySQL native menyebabkan jitter performa parah yang menurunkan TPS lebih dari 70%. Setelah fitur Faster DDL diaktifkan, penurunan TPS berkurang menjadi 5%.
Efek optimasi
Fitur Faster DDL mendukung MySQL 5.6, 5.7, dan 8.0. Namun, operasi DDL yang didukung dapat berbeda tergantung pada versi MySQL yang digunakan.
| Kategori | Operasi DDL | MySQL 5.6 | MySQL 5.7 | MySQL 8.0 |
| In-place DDL | Untuk informasi selengkapnya, lihat MySQL 8.0 Online DDL Operations dan MySQL 5.7 Online DDL Operations. | No | Yes | Yes |
| Manajemen tablespace | Mengaktifkan atau menonaktifkan enkripsi tablespace. | No | Yes | Yes |
| Melepaskan atau menghapus tablespace. | No | Yes | Yes | |
| Membuang tablespace. | Yes | Yes | Yes | |
| Penghapusan tabel | Melepaskan atau menghapus tabel. | Yes | Yes | Yes |
| Operasi undo | Melepaskan atau menghapus tablespace undo. | No | No | Yes |
| Refresh tabel | Melakukan refresh tabel dan halaman kotornya. | Yes | Yes | Yes |
Cacat yang diperbaiki oleh Faster DDL
Fitur Faster DDL memperbaiki cacat berikut: