全部产品
Search
文档中心

PolarDB:DDL Online

更新时间:Jul 03, 2025

Bahasa definisi data online (DDL) memungkinkan eksekusi bersamaan operasi DDL dan transaksi lainnya. DDL Online meminimalkan durasi penguncian tabel database, sehingga meningkatkan konkurensi keseluruhan dan kinerja database.

Prasyarat

Ikhtisar

Operasi DDL dalam instance PolarDB-X diklasifikasikan menjadi dua kategori berikut:

  • Dieksekusi secara fisik: Operasi DDL didorong ke node data untuk dieksekusi. Operasi ini mencakup CREATE LOCAL INDEX, ALTER/ADD COLUMN, dan CREATE/DROP TABLE. Node komputasi hanya melakukan penerusan tingkat shard dari pernyataan fisik, koordinasi, dan manajemen metadata. Prinsip implementasi dan fitur online dari operasi ini mirip dengan operasi DDL MySQL.

  • Dieksekusi secara logis: Node komputasi menangani operasi DDL secara lengkap. Operasi ini mencakup GLOBAL INDEX, CREATE/DROP PARTITION, CREATE/DROP PRIMARY KEY, dan Ubah tipe data kolom tanpa mengunci tabel. Saat operasi ini dieksekusi, sistem membuat tabel sementara, menyalin data dari tabel asli ke tabel sementara, dan menyinkronkan pembaruan data tambahan. Setelah tabel sementara cukup terisi, sistem beralih aliran data dari tabel asli ke tabel sementara secara mulus. Node komputasi menangani proses pengisian ulang data, penulisan multi tambahan, dan manajemen metadata. Operasi ini tidak mengunci tabel.

Berikut ini adalah analisis fitur DDL online dari tiga dimensi berdasarkan dampaknya pada operasi SQL lainnya:

  • Apakah tabel terkunci?

    • Operasi DDL online hanya memblokir operasi bahasa manipulasi data (DML) selama beberapa detik saat pergantian tabel dan mengizinkan operasi DML untuk dieksekusi selama sebagian besar periode eksekusi.

    • Operasi DDL non-online mengunci tabel selama proses eksekusi, sehingga Anda tidak dapat melakukan operasi DML pada tabel tersebut.

  • Apakah data diisi ulang?

    • Operasi DDL yang hanya melibatkan perubahan metadata, seperti INSTANT ADD COLUMN dan RENAME TABLE, diselesaikan secara instan tanpa perlu mengisi ulang data.

    • Operasi DDL seperti DROP TABLE dan DROP INDEX hanya memodifikasi metadata dan menghapus file fisik terkait. Operasi ini selesai dalam waktu singkat tanpa perlu mengisi ulang data.

    • Operasi DDL lainnya, selain operasi INSTANT, operasi penghapusan tabel, dan operasi penghapusan indeks, menyalin dan menulis data asli ke indeks terkluster baru atau indeks sekunder selama eksekusi fisik atau logis. Eksekusi ini menggunakan sejumlah sumber daya klaster tertentu. Durasi eksekusi bervariasi berdasarkan jumlah data, tingkat konkurensi, dan spesifikasi instance.

  • Apakah penulisan multi sinkron dari pembaruan online diperlukan?

    • Operasi DDL yang dieksekusi secara logis mengisi ulang data ke tabel sementara dan secara bersamaan menulis lalu lintas DML online multi ke tabel sementara secara sinkron. Lalu lintas DML online mungkin bertentangan dengan data yang diisi ulang. Penulisan multi ditangani menggunakan pendekatan transaksi terdistribusi untuk memastikan atomicitas, yang menyebabkan operasi DML dieksekusi sebagai operasi logis. Ini mengakibatkan penurunan kinerja operasi online. Untuk mengatasi masalah ini, PolarDB-X mengimplementasikan penulisan multi asinkron untuk operasi DDL yang dieksekusi secara logis seperti MOVE/SPLIT PARTITION, Ubah tipe data kolom tanpa mengunci tabel, dan REBALANCE. Lalu lintas DML penulisan multi pertama kali disimpan dalam cache dan kemudian dieksekusi secara asinkron setelah pengisian ulang data selesai, yang meminimalkan konflik penulisan multi dan durasi penurunan kinerja. Apakah operasi DDL ini mendukung penulisan multi asinkron dijelaskan dalam bagian Fitur DDL Online dari topik ini.

    • Secara default, operasi DDL online asli yang dieksekusi secara fisik pada node data, mengisi ulang data, dan tidak mengunci tabel mengimplementasikan penulisan multi asinkron asli menggunakan log online. Apakah operasi DDL ini mendukung penulisan multi asinkron tidak dijelaskan dalam bagian Fitur DDL Online dari topik ini.

    • Jenis operasi DDL lainnya tidak memerlukan penulisan multi. Apakah operasi DDL ini mendukung penulisan multi asinkron tidak dijelaskan dalam bagian Fitur DDL Online dari topik ini.

Operasi DDL Online

Penting

Saat menggunakan pernyataan DDL untuk melakukan operasi tabel dan kolom, terutama dengan menggunakan pernyataan MODIFY COLUMN dan CHANGE COLUMN, Anda harus menentukan atribut kolom lengkap untuk menghindari modifikasi kolom yang tidak terduga akibat atribut yang hilang.

Operasi indeks

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Buat indeks sekunder lokal (LSI)

Tidak

Tidak

Tidak

Ya

-

Hapus LSI

Tidak

Tidak

Tidak

Tidak

-

Ganti nama LSI

Tidak

Tidak

Tidak

Tidak

-

Buat indeks sekunder global (GSI)

Ya

Tidak

Ya

Ya

Tidak

Hapus GSI

Ya

Tidak

Tidak

Tidak

-

Ganti nama GSI

Ya

Tidak

Tidak

Tidak

-

Operasi tabel

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Modifikasi format baris (ROW_FORMAT)

Tidak

Tidak

Ya

Ya

-

OPTIMIZE TABLE

Tidak

Tidak

Ya

Ya

-

Ganti nama tabel

Tidak

Tidak

Tidak

Tidak

-

Modifikasi set karakter default

Tidak

Tidak

Ya

Ya

-

Konversi set karakter

Tidak

Ya

Ya

Ya

-

Truncate tabel yang tidak memiliki GSIs (TRUNCATE TABLE WITHOUT GSI)

Tidak

Tidak

Ya

Tidak

-

Truncate tabel yang memiliki GSIs (TRUNCATE TABLE WITH GSI)

Ya

Tidak

Ya

Tidak

-

Operasi partisi

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Migrasi partisi

Ya

Tidak

Ya (Hanya partisi relevan yang dibuat ulang.)

Ya

Ya

Catatan
  • Tabel logis dan GSIs memiliki kunci utama eksplisit atau implisit, dan oleh karena itu mendukung fitur ini.

  • Secara default, indeks sekunder unik global tidak memiliki kunci utama dan tidak mendukung fitur ini.

Pisahkan partisi

Ya

Tidak

Ya (Hanya partisi relevan yang dibuat ulang.)

Ya

Gabungkan partisi

Ya

Tidak

Ya (Hanya partisi relevan yang dibuat ulang.)

Ya

Tidak

Tambahkan partisi

Catatan
  • Jika tidak ada partisi MAXVALUE yang didefinisikan untuk tabel yang dipartisi menggunakan metode partisi RANGE atau RANGE COLUMNS, Anda tidak perlu mengisi ulang data saat menambahkan partisi ke tabel. Jika tidak, Anda perlu mengisi ulang data partisi tertentu.

  • Jika tidak ada partisi DEFAULT yang didefinisikan untuk tabel yang dipartisi menggunakan metode partisi LIST atau LIST COLUMNS, Anda tidak perlu mengisi ulang data saat menambahkan partisi ke tabel. Jika tidak, Anda perlu mengisi ulang data partisi tertentu.

Ya

Tidak

Tidak

Tidak

-

Hapus partisi

Catatan
  • Pengisian ulang data tidak diperlukan jika Anda menghapus partisi terakhir dari tabel yang dipartisi menggunakan metode partisi RANGE atau RANGE COLUMNS. Pengisian ulang data diperlukan jika Anda menghapus partisi lainnya.

  • Jika tidak ada partisi DEFAULT yang didefinisikan untuk tabel yang dipartisi menggunakan metode partisi LIST atau LIST COLUMNS, Anda tidak perlu mengisi ulang data saat menghapus partisi dari tabel. Jika tidak, Anda perlu mengisi ulang data.

Ya

Tidak

Tidak

Tidak

-

Atur ulang partisi

Ya

Tidak

Ya (Hanya partisi relevan yang dibuat ulang.)

Ya

Tidak

Bersihkan partisi

Ya

Tidak

Tidak

Tidak

-

Ganti nama partisi

Ya

Tidak

Tidak

Tidak

-

Modifikasi partisi

Ya

Tidak

Ya (Hanya partisi relevan yang dibuat ulang.)

Ya

Tidak

Catatan

Fitur DDL online untuk operasi partisi yang dijelaskan dalam tabel sebelumnya berlaku baik untuk table groups maupun tabel.

Operasi perubahan urutan

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Buat urutan

Ya

Tidak

Tidak

Tidak

-

Hapus urutan

Ya

Tidak

Tidak

Tidak

-

Modifikasi atribut urutan

Ya

Tidak

Tidak

Tidak

-

Konversi tipe urutan

Ya

Tidak

Tidak

Tidak

-

Operasi kolom umum

Penting

Operasi kolom diklasifikasikan menjadi operasi kolom umum (operasi kolom yang tidak terkait dengan kunci utama, kunci partisi, atau kolom terhasilkan), operasi perubahan kunci utama dan kunci partisi, dan operasi kolom terhasilkan. Anda dapat mengeksekusi pernyataan SHOW FULL CREATE TABLE TABLE_NAME untuk melihat atribut kolom lengkap guna menentukan kategori operasi kolom.

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Tambahkan kolom. Untuk informasi lebih lanjut, lihat Catatan 1.

Tidak

Tidak

Ya

Ya

-

Hapus kolom

Tidak

Tidak

Ya

Ya

-

Ganti nama kolom

Tidak

Tidak

Tidak

Tidak

-

Ubah urutan kolom

Tidak

Tidak

Ya

Ya

-

Ubah nilai default kolom

Tidak

Tidak

Tidak

Tidak

-

Hapus nilai default kolom

Tidak

Tidak

Tidak

Tidak

-

Modifikasi tipe data kolom

Tidak

Ya

Ya

Ya

-

Perpanjang panjang kolom varchar. Untuk informasi lebih lanjut, lihat Catatan 2 dan Catatan 3.

Tidak

Tidak

Tidak

Tidak

-

Perpanjang panjang kolom char. Untuk informasi lebih lanjut, lihat Catatan 3.

Tidak

Ya

Ya

Ya

-

Ubah nilai dalam kolom menjadi NULL

Tidak

Tidak

Ya

Ya

-

Ubah nilai dalam kolom menjadi NOT NULL

Catatan

Jika opsi SQL_MODE berisi flag strict_trans_tables atau strict_all_tables, operasi ini merupakan operasi online. Jika tidak, algoritma COPY digunakan untuk mengunci tabel dan menyalin data.

Tidak

Tidak

Ya

Ya

-

Catatan

  1. PolarDB-X memungkinkan Anda menggunakan algoritma instan untuk menambahkan kolom dengan hanya memodifikasi metadata database. Operasi perubahan pada kolom tertentu dapat dieksekusi secara logis online. Tabel berikut menjelaskan fitur eksekusi online dari operasi ketika ALGORITHM=INSTANT atau ALGORITHM=OMC ditentukan secara eksplisit.

    Operasi

    Dieksekusi secara logis

    Mengunci tabel

    Membangun ulang tabel

    Mengisi ulang data

    Mendukung penulisan multi asinkron

    Instant ADD COLUMN

    Tidak

    Tidak

    Tidak

    Tidak

    -

    Ubah tipe kolom secara online

    Ya

    Tidak

    Ya

    Ya

    Ya

  2. Secara default, PolarDB-X node data 5.7 memungkinkan Anda memperpanjang panjang kolom VARCHAR menggunakan algoritma INPLACE. Namun, fitur ini tidak didukung pada node data 8.0. Jika panjang kolom VARCHAR adalah 255 byte atau kurang, hanya memerlukan satu byte untuk penyimpanan. Jika panjangnya 256 byte atau lebih, memerlukan dua byte untuk penyimpanan. Jika Anda ingin memperpanjang panjang kolom VARCHAR dari kurang dari atau sama dengan 255 byte menjadi sama dengan atau lebih dari 256 byte, perubahan tersebut tidak dapat dilakukan hanya dengan modifikasi metadata. Sebaliknya, jika Anda ingin mengurangi panjang kolom VARCHAR dari lebih dari 256 byte menjadi 255 byte atau kurang, perubahan tersebut dapat dilakukan hanya dengan modifikasi metadata.

    Operasi

    Dieksekusi secara logis

    Mengunci tabel

    Membangun ulang tabel

    Mengisi ulang data

    Mendukung penulisan multi asinkron

    Perpanjang panjang kolom VARCHAR menjadi lebih dari 256 byte

    Tidak

    Tidak

    Ya

    Ya

    -

  3. Secara default, PolarDB-X node data 5.7 memungkinkan Anda memperpanjang panjang kolom CHAR menggunakan algoritma INPLACE. Namun, fitur ini tidak didukung pada node data 8.0. Tabel berikut menjelaskan fitur eksekusi online dari operasi tersebut.

    Operasi

    Dieksekusi secara logis

    Mengunci tabel

    Membangun ulang tabel

    Mengisi ulang data

    Mendukung penulisan multi asinkron

    Perpanjang panjang kolom CHAR

    Tidak

    Tidak

    Ya

    Ya

    -

Operasi kunci utama dan kolom sharding

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Tambahkan kunci utama

Ya

Tidak

Ya

Ya

Tidak

Hapus kunci utama asli dan tambahkan kunci utama baru

Ya

Tidak

Ya

Ya

Tidak

Ubah metode sharding, jumlah shard, atau kolom sharding

Ya

Tidak

Ya (Tabel GSI atau tabel utama yang terlibat dalam perubahan sharding dibuat ulang.)

Ya

Tidak

Ubah definisi untuk kolom sharding dari GSI atau tabel utama

Ya

Tidak

Ya (The GSI atau tabel utama yang menggunakan kolom sharding dibuat ulang.)

Ya

Tidak

Operasi kolom terhasilkan

Operasi

Dieksekusi secara logis

Mengunci tabel

Membangun ulang tabel

Mengisi ulang data

Mendukung penulisan multi asinkron

Tambahkan kolom virtual (kolom VIRTUAL)

Tidak

Tidak

Tidak

Tidak

-

Hapus kolom virtual (kolom VIRTUAL)

Tidak

Tidak

Tidak

Tidak

-

Tambahkan kolom penyimpanan (kolom STORED)

Tidak

Ya

Ya

Ya

-

Hapus kolom penyimpanan (kolom STORED)

Tidak

Tidak

Ya

Ya

-

Tambahkan kolom logis (kolom LOGICAL)

Ya

Tidak

Ya

Ya

Tidak

Hapus kolom logis (kolom LOGICAL)

Ya

Tidak

Ya

Ya

-

Kelola fitur eksekusi online

PolarDB-X memungkinkan Anda mengelola fitur eksekusi online dengan metode berikut:

  • Untuk menambahkan kolom, Anda dapat menggunakan fitur Instant ADD COLUMN dengan menentukan ALGORITHM=INSTANT.

  • Untuk memodifikasi kolom secara online, Anda dapat menentukan ALGORITHM=OMC untuk menggunakan metode eksekusi logis.

  • Secara default, pernyataan DDL yang dieksekusi secara logis dijalankan secara online. Spesifikasi khusus tidak diperlukan.

  • Untuk eksekusi online operasi kolom umum yang dieksekusi secara fisik dan operasi DDL indeks lokal, Anda dapat menentukan ALGORITHM=INPLACE. Jika operasi tidak mendukung eksekusi online, kesalahan akan terjadi. Jika tidak, operasi langsung dijalankan.