全部产品
Search
文档中心

PolarDB:Optimasi replikasi fisik DDL

更新时间:Jul 06, 2025

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:

  • ON

  • OFF

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();
      Catatan
      • Dalam pengujian, ganti $table_size dengan jumlah rekaman dalam tabel Anda, seperti 1000000.

      • 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 key

      • add secondary Index

      • optimize 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 Index pada 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. 1

      • Ketika innodb_bulk_load_page_grained_redo_enable disetel ke ON atau OFF, uji waktu (dalam detik) yang diperlukan untuk melakukan operasi optimize table 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. 2

    • 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 Index pada 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. 3

      • 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 Index pada 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. 4

    • 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.

        Catatan
        • Ketika 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.