PolarDB mendukung optimasi replikasi fisik DDL. Fitur ini mengoptimalkan penulisan log redo pada node utama dan penggunaan log redo pada node baca-saja, sehingga mempercepat eksekusi operasi DDL di node utama serta penguraian log redo yang dihasilkan oleh operasi DDL di node baca-saja. Topik ini menjelaskan cara menggunakan fitur optimasi replikasi fisik DDL.
Prasyarat
Kluster PolarDB harus memenuhi salah satu persyaratan versi berikut. Untuk informasi lebih lanjut tentang cara menanyakan versi mesin kluster, lihat Versi Mesin.
Kluster PolarDB untuk MySQL 8.0.1 dengan versi revisi 8.0.1.1.10 atau lebih baru.
Kluster PolarDB untuk MySQL 5.7 dengan versi revisi 5.7.1.0.10 atau lebih baru.
Batasan
Fitur ini hanya mendukung operasi DDL yang digunakan untuk membuat kunci utama atau indeks sekunder. Indeks ini tidak termasuk indeks teks penuh dan indeks spasial.
Fitur ini tidak diperlukan untuk operasi DDL yang hanya memodifikasi metadata, seperti operasi penggantian nama, karena eksekusi operasi tersebut hanya mengonsumsi sejumlah kecil sumber daya.
Fitur ini tidak didukung untuk PolarDB untuk MySQL 8.0.2 atau 5.6.
Latar Belakang
PolarDB memisahkan komputasi dari penyimpanan dan memungkinkan node utama serta node baca-saja berbagi data yang sama. Hal ini mengurangi biaya penyimpanan serta meningkatkan ketersediaan dan keandalan kluster. PolarDB menggunakan teknologi replikasi fisik untuk mencapai konsistensi data antara node utama dan node baca-saja berdasarkan penyimpanan bersama, sekaligus mengurangi overhead I/O yang disebabkan oleh operasi fsync pada log biner.
Data dalam InnoDB diindeks menggunakan Indeks B-tree. Dalam banyak kasus, Anda perlu membangun ulang atau membuat Indeks B-tree untuk operasi DDL yang lambat, seperti pembuatan kunci utama, pembuatan indeks sekunder, atau optimasi tabel. Proses ini menghasilkan sejumlah besar log redo. Namun, operasi pada log redo sering dilakukan pada jalur utama operasi DDL, yang meningkatkan waktu eksekusi operasi tersebut. Selain itu, teknologi replikasi fisik memerlukan node baca-saja untuk mengurai dan menerapkan log redo yang baru dihasilkan. Sejumlah besar log redo yang dihasilkan oleh operasi DDL dapat memengaruhi proses sinkronisasi log node baca-saja, bahkan menyebabkan node baca-saja menjadi tidak tersedia.
Untuk mengatasi masalah ini, PolarDB menyediakan fitur optimasi replikasi fisik DDL, yang mengoptimalkan penulisan log redo pada node utama dan penggunaan log redo pada node baca-saja. Dengan cara ini, waktu eksekusi operasi DDL pembuatan kunci utama pada node utama dapat dikurangi hingga sekitar 20,6%. Latensi replikasi untuk penguraian log redo yang dihasilkan oleh operasi DDL pada node baca-saja dapat dikurangi hingga sekitar 0,4%.
Aktifkan optimasi replikasi fisik
Anda dapat menentukan parameter berikut untuk mengaktifkan fitur optimasi replikasi fisik DDL.
Parameter | Tingkat | Deskripsi |
innodb_bulk_load_page_grained_redo_enable | Global | Menentukan apakah akan mengaktifkan fitur optimasi replikasi fisik DDL. Nilai default: OFF. Nilai valid:
|
Pengujian kinerja
Persiapan
Lingkungan Pengujian
Kluster PolarDB untuk MySQL 8.0 (termasuk satu node utama dan satu node baca-saja) dengan 16 inti CPU dan 128 GB memori.
Kapasitas penyimpanan kluster adalah 50 TB.
Skema
Buat tabel bernama
t0.CREATE TABLE t0(a INT PRIMARY KEY, b INT) ENGINE=InnoDB;Data
Sisipkan data secara acak ke dalam tabel.
DELIMITER // CREATE PROCEDURE populate_t0() BEGIN DECLARE i int DEFAULT 1; WHILE (i <= $table_size) DO INSERT INTO t0 VALUES (i, 1000000 * RAND()); SET i = i + 1; END WHILE; END // DELIMITER ; CALL populate_t0();CatatanDalam pengujian, ganti
$table_sizedengan jumlah rekaman dalam tabel Anda, seperti1000000.Tabel yang berisi 1 juta, 10 juta, 100 juta, dan 1 miliar baris data digunakan dalam pengujian ini.
Operasi DDL yang digunakan dalam pengujian:
add primary keyadd secondary Indexoptimize table
Metode Pengujian
Pengujian 1: Bandingkan waktu yang diperlukan untuk melakukan operasi DDL yang berbeda pada tabel dengan jumlah baris yang berbeda ketika fitur optimasi replikasi fisik diaktifkan atau dinonaktifkan.
Pengujian 2: Bandingkan waktu yang diperlukan untuk mengeksekusi
add secondary Indexpada tabel 1 miliar baris ketika Anda menggunakan fitur optimasi replikasi fisik dengan atau tanpa DDL Paralel.Pengujian 3: Uji kinerja node baca-saja ketika fitur optimasi replikasi fisik diaktifkan atau dinonaktifkan. Metrik kinerja meliputi status node, penggunaan CPU puncak, dan latensi replikasi. Dalam pengujian ini, jumlah operasi DDL bersamaan pada node utama dalam kluster adalah 1, 2, 4, 6, dan 8, dan kluster berisi tabel 1 miliar baris.
Hasil:
Pengujian 1
Ketika innodb_bulk_load_page_grained_redo_enable disetel ke ON atau OFF, uji waktu (dalam detik) yang diperlukan untuk melakukan operasi
add primary key(a)pada tabel dengan jumlah baris yang berbeda. Tabel yang berisi 1 juta, 10 juta, 100 juta, dan 1 miliar baris data digunakan dalam pengujian ini. Gambar berikut menunjukkan hasil pengujian.
Ketika innodb_bulk_load_page_grained_redo_enable disetel ke ON atau OFF, uji waktu (dalam detik) yang diperlukan untuk melakukan operasi
optimize tablepada tabel dengan jumlah baris yang berbeda. Tabel yang berisi 1 juta, 10 juta, 100 juta, dan 1 miliar baris data digunakan dalam pengujian ini. Gambar berikut menunjukkan hasil pengujian.
Pengujian 2
Aktifkan innodb_polar_use_sample_sort dan innodb_polar_use_parallel_bulk_load dari fitur DDL Paralel. Ketika innodb_bulk_load_page_grained_redo_enable disetel ke ON atau OFF, uji waktu (dalam detik) yang diperlukan untuk melakukan operasi
add secondary Indexpada tabel 1 miliar baris. Dalam pengujian ini, parameter innodb_polar_parallel_ddl_threads yang menentukan jumlah thread paralel disetel ke 1, 2, 4, 8, 16, dan 32. Gambar berikut menunjukkan hasil pengujian.
Nonaktifkan innodb_polar_use_sample_sort dan innodb_polar_use_parallel_bulk_load dari fitur DDL Paralel. Ketika innodb_bulk_load_page_grained_redo_enable disetel ke ON atau OFF, uji waktu (dalam detik) yang diperlukan untuk melakukan operasi
add secondary Indexpada tabel 1 miliar baris. Dalam pengujian ini, parameter innodb_polar_parallel_ddl_threads yang menentukan jumlah thread paralel disetel ke 1, 2, 4, 8, 16, dan 32. Gambar berikut menunjukkan hasil pengujian.
Pengujian 3
Uji kinerja node baca-saja ketika innodb_bulk_load_page_grained_redo_enable disetel ke ON. Dalam pengujian ini, jumlah operasi DDL bersamaan pada node utama dalam kluster adalah 1, 2, 4, 6, dan 8, dan kluster berisi tabel 1 miliar baris. Tabel berikut menunjukkan hasil pengujian.
Jumlah operasi DDL bersamaan
1
2
4
6
8
Status node baca-saja
Normal
Normal
Normal
Normal
Normal
Penggunaan CPU puncak (%)
1,86
1,71
1,76
2,25
2,36
Penggunaan memori puncak (%)
10,37
10,80
10,88
11
11,1
IOPS Baca (baca per detik)
10.965
10.762
10.305
10.611
10.751
Latensi replikasi puncak (s)
0
0,73
0,87
0,93
0,03
Uji kinerja node baca-saja ketika innodb_bulk_load_page_grained_redo_enable disetel ke OFF. Dalam pengujian ini, jumlah operasi DDL bersamaan pada node utama dalam kluster adalah 1, 2, 4, 6, dan 8, dan kluster berisi tabel 1 miliar baris. Tabel berikut menunjukkan hasil pengujian.
CatatanKetika jumlah operasi DDL bersamaan adalah 4, hasil pengujian menunjukkan data sebelum node baca-saja menjadi tidak tersedia.
Tanda
hyphen (-)dalam tabel menunjukkan bahwa operasi DDL gagal dilakukan dalam skenario jumlah operasi DDL bersamaan tertentu. Oleh karena itu, tidak ada hasil pengujian yang dikembalikan.
Jumlah operasi DDL bersamaan
1
2
4
6
8
Status node baca-saja
Normal
Normal
Tidak tersedia
Tidak tersedia
Tidak tersedia
Penggunaan CPU puncak (%)
4,2
9,5
10,3
-
-
Penggunaan memori puncak (%)
22,15
23,55
68,61
-
-
IOPS Baca (baca per detik)
9.243
7.578
7.669
-
-
Latensi replikasi puncak (s)
0,8
14,67
211
-
-
Hubungi kami
Jika Anda memiliki pertanyaan tentang operasi DDL, hubungi kami.