All Products
Search
Document Center

ApsaraDB RDS:Modifikasi tipe kolom secara Online

Last Updated:May 13, 2026

AliSQL mendukung fitur Online Modify Column yang mendorong operasi modifikasi tipe kolom ke lapisan engine InnoDB, memungkinkan perubahan secara online tanpa menghambat operasi baca dan tulis.

Cara kerja

Latar belakang: Sejak MySQL 5.6, sebagian besar pernyataan Data Definition Language (DDL) telah mendukung Online DDL, yang memungkinkan operasi baca dan tulis pada tabel selama proses DDL. Namun, hingga MySQL 8.0, modifikasi tipe kolom tetap memerlukan metode COPY DDL. AliSQL memperluas MySQL komunitas dengan mengimplementasikan fitur Online Modify Column yang mendukung modifikasi kolom menggunakan metode INPLACE DDL.

Pengantar: Fitur Online Modify Column dari AliSQL menghindari kebutuhan membaca dan menyisipkan baris satu per satu di lapisan server—proses yang dilakukan oleh metode COPY. Sebagai gantinya, operasi modifikasi tipe kolom didorong ke lapisan engine InnoDB dan menggunakan kembali kerangka eksekusi INPLACE DDL dari komunitas. Seluruh proses identik dengan operasi INPLACE DDL lainnya, sehingga memungkinkan operasi baca dan tulis normal pada tabel selama modifikasi.

Prasyarat dan batasan

Untuk menggunakan fitur Online Modify Column, instans Anda harus menggunakan salah satu versi database berikut. Jika versi mesin minor-nya lebih lama dari yang disyaratkan, Anda dapat upgrade versi mesin minor.

  • MySQL 8.4

  • MySQL 8.0: versi mesin minor 20250731 atau lebih baru.

  • MySQL 5.7: versi mesin minor 20251031 atau lebih baru.

Fitur Online Modify Column memiliki batasan-batasan berikut:

  • Batasan engine: Hanya engine InnoDB yang didukung.

  • Batasan tipe kolom: Hanya modifikasi tipe dan perluasan panjang yang didukung untuk tipe data berikut:

    • Memperbesar ukuran tipe integer (modifikasi tipe): Termasuk mengubah dari tipe integer yang lebih kecil ke tipe yang lebih besar, seperti TINYINT, SMALLINT, MEDIUMINT, INT, dan BIGINT. Misalnya, mengubah kolom dari INT menjadi BIGINT didukung, tetapi mengubah dari BIGINT menjadi INT tidak didukung.

    • Memperpanjang panjang tipe string (perluasan panjang): Berlaku untuk memperpanjang panjang tipe CHAR dan VARCHAR. Misalnya, untuk mengubah kolom dari CHAR(M) menjadi CHAR(N), N harus lebih besar dari M.

  • Batasan lainnya: Anda tidak dapat memodifikasi kolom yang merupakan bagian dari kunci partisi.

Manajemen parameter

Parameter

Fitur Online Modify Column dikendalikan oleh parameter berikut:

Parameter

Deskripsi

loose_rds_upgrade_datatype_online_enable

  • Deskripsi: Mengaktifkan atau menonaktifkan fitur Online Modify Column.

  • Ruang lingkup: Global.

  • Tipe data: Boolean.

  • Nilai default: OFF.

  • Nilai valid: ON atau OFF.

  • Perlu restart: Tidak.

Ubah parameter

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Lalu, temukan instans RDS tersebut dan klik ID-nya.

  2. Di panel navigasi kiri, klik Parameter Settings.

  3. Di tab Editable Parameters, temukan parameter yang ingin Anda ubah dan konfigurasikan nilainya.

  4. Klik OK, lalu klik Submit Parameters. Di kotak dialog yang muncul, pilih kapan perubahan akan diterapkan.

Penggunaan

Untuk mengaktifkan fitur Online Modify Column, atur parameter loose_rds_upgrade_datatype_online_enable ke ON di Konsol. Contoh berikut menggunakan tabel bernama t1 dengan struktur sebagai berikut:

CREATE TABLE `t1` (
  `id` int NOT NULL,
  `c1` int DEFAULT NULL,
  `c2` char(10) DEFAULT NULL,
  `c3` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Tentukan algoritma INPLACE

Anda dapat menentukan algoritma INPLACE untuk modifikasi kolom secara online, termasuk modifikasi tipe dan perluasan panjang:

  • Modifikasi tipe: Ubah tipe kolom c1 menjadi bigint.

  • Perluasan panjang: Perpanjang panjang kolom c2 dan c3.

-- Modifikasi tipe: Gunakan algoritma INPLACE untuk mengubah tipe kolom c1.
ALTER TABLE `t1` MODIFY `c1` bigint DEFAULT NULL, ALGORITHM=INPLACE;

-- Lihat hasilnya.
SHOW CREATE TABLE `t1`\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int NOT NULL,
  `c1` bigint DEFAULT NULL,
  `c2` char(10) DEFAULT NULL,
  `c3` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)

-- Perluasan panjang: Gunakan algoritma INPLACE untuk memperpanjang panjang kolom c2 dan c3.
ALTER TABLE `t1` MODIFY `c2` char(20) DEFAULT NULL, ALGORITHM=INPLACE;
ALTER TABLE `t1` MODIFY `c3` varchar(100) DEFAULT NULL, ALGORITHM=INPLACE;

-- Lihat hasilnya.
SHOW CREATE TABLE `t1`\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int NOT NULL,
  `c1` bigint DEFAULT NULL,
  `c2` char(20) DEFAULT NULL,
  `c3` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)

Jangan tentukan algoritma

Jika Anda tidak menentukan algoritma, sistem akan secara otomatis memilih algoritma yang paling sesuai untuk modifikasi tipe kolom tersebut.

ALTER TABLE `t1` MODIFY `c1` bigint DEFAULT NULL;