All Products
Search
Document Center

ApsaraDB RDS:Instant modify column charset

Last Updated:May 13, 2026

AliSQL mendukung fitur Instant Modify Column Charset. Fitur ini hanya mengubah metadata, sehingga menghindari pembuatan ulang tabel dan secara signifikan mengurangi waktu operasi serta meningkatkan efisiensi.

Ikhtisar fitur

Latar Belakang: Di MySQL komunitas, implementasi default set karakter UTF-8 adalah utf8mb3. Karena set karakter utf8mb3 menggunakan maksimal tiga byte per karakter, terjadi kehilangan data saat menyimpan karakter empat byte, seperti emoji. Meskipun MySQL komunitas telah mengubah set karakter defaultnya menjadi utf8mb4 mulai dari versi 8.0, modifikasi set karakter kolom pada tabel yang sudah ada biasanya tetap memerlukan pembuatan ulang tabel yang memakan waktu lama.

Ikhtisar: AliSQL mendukung fitur Instant Modify Column Charset. Alih-alih melakukan pembuatan ulang tabel—yang melibatkan pembuatan tabel sementara dan penyalinan data—fitur ini hanya memodifikasi metadata. Dengan demikian, modifikasi set karakter dapat diselesaikan dalam hitungan detik.

Algoritma: Kedua algoritma menyelesaikan operasi hanya dengan memodifikasi metadata. Saat Anda menggunakan fitur Instant Modify Column Charset, MySQL 5.7 hanya mendukung algoritma INPLACE. MySQL 8.0 mendukung kedua algoritma, yaitu INPLACE dan INSTANT.

Prasyarat

Untuk menggunakan fitur Instant Modify Column Charset, instans Anda harus memenuhi salah satu persyaratan versi database berikut. Jika versi mesin minor tidak memenuhi persyaratan, Anda dapat melakukan upgrade versi mesin minor.

  • MySQL 8.4

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

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

Catatan

MySQL 8.0 (versi mesin minor 20230630 atau lebih baru) dan MySQL 8.4 mendukung kedua algoritma INPLACE dan INSTANT. MySQL 8.0 (dengan versi mesin minor sebelum 20230630) hanya mendukung algoritma INPLACE.

Fitur Instant Modify Column Charset memiliki batasan-batasan berikut:

  • Tipe Kolom: Anda hanya dapat mengonversi set karakter untuk kolom CHAR dan VARCHAR.

  • Set Karakter: Hanya konversi dari utf8/utf8mb3 ke utf8mb4 yang didukung.

  • Mesin Penyimpanan: Hanya mesin penyimpanan InnoDB yang didukung.

  • Kolom yang Diindeks: Anda tidak dapat memodifikasi kolom yang diindeks.

  • Kunci Partisi: Anda tidak dapat memodifikasi kolom yang merupakan bagian dari kunci partisi.

  • Panjang Kolom: Modifikasi tidak boleh menyebabkan panjang penyimpanan maksimum kolom melewati batas 256 byte. Panjang tersebut harus tetap seluruhnya di bawah 256 byte atau seluruhnya pada atau di atas 256 byte. Untuk konversi dari utf8/utf8mb3 ke utf8mb4:

    • Untuk set karakter utf8/utf8mb3, yang menggunakan 3 byte per karakter, ambang batas 256 byte setara dengan 85 karakter.

    • Untuk set karakter utf8mb4, yang menggunakan 4 byte per karakter, ambang batas 256 byte setara dengan 63 karakter.

    image

    Oleh karena itu, fitur Instant Modify Column Charset hanya didukung jika panjang kolom yang didefinisikan (dalam karakter) berada dalam rentang (0, 63] atau (85, 65535].

Manajemen parameter

Parameter

Modifikasi parameter berikut hanya jika Anda menggunakan MySQL 8.0 dan perlu menentukan algoritma INSTANT:

Parameter

Deskripsi

loose_rds_upgrade_datatype_instant_enable

  • Deskripsi: Mengontrol fitur modifikasi tipe kolom secara instant.

  • Ruang lingkup: parameter global.

  • Tipe data: Boolean.

  • Nilai default: OFF.

  • Nilai valid: ON atau OFF.

  • Perlu restart: Tidak.

loose_innodb_instant_ddl_enabled

  • Deskripsi: Mengontrol operasi Instant DDL.

  • Ruang lingkup: parameter global.

  • Tipe data: Boolean.

  • Nilai default: ON.

  • Nilai valid: ON atau OFF.

  • Perlu restart: Tidak.

Modifikasi parameter

  1. Buka halaman Instances. Pada bilah navigasi atas, pilih Wilayah tempat instans RDS berada. Lalu, temukan instans RDS tersebut dan klik ID instansnya.

  2. Pada panel navigasi kiri, klik Parameter Settings.

  3. Pada tab Editable Parameters, cari parameter yang ingin Anda modifikasi dan ubah nilainya.

  4. Klik OK, lalu klik Submit Parameters. Pada kotak dialog yang muncul, tentukan kapan nilai parameter baru akan berlaku.

Prosedur

Prosedur ini menggunakan contoh tabel t1 dengan skema berikut:

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

Menentukan algoritma

Anda dapat menentukan algoritma INPLACE atau INSTANT saat memodifikasi set karakter kolom.

Inplace algorithm

-- Tentukan algoritma INPLACE untuk mengubah set karakter kolom c1 dan c2 menjadi utf8mb4.
ALTER TABLE `t1` MODIFY `c1` char(10) CHARACTER SET utf8mb4 DEFAULT NULL, ALGORITHM=INPLACE;
ALTER TABLE `t1` MODIFY `c2` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL, ALGORITHM=INPLACE;

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

Instant algorithm

-- Tentukan algoritma INSTANT untuk mengubah set karakter kolom c3 dan c4 menjadi utf8mb4.
ALTER TABLE `t1` MODIFY `c3` char(100) CHARACTER SET utf8mb4 DEFAULT NULL, ALGORITHM=INSTANT;
ALTER TABLE `t1` MODIFY `c4` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL, ALGORITHM=INSTANT;

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

Pemilihan algoritma otomatis

Jika Anda tidak menentukan algoritma, MySQL akan secara otomatis memilih algoritma yang paling sesuai.

-- Ubah set karakter kolom c1 menjadi utf8mb4 tanpa menentukan algoritma.
ALTER TABLE `t1` MODIFY `c1` char(10) CHARACTER SET utf8mb4 DEFAULT NULL;