All Products
Search
Document Center

ApsaraDB RDS:Modifikasi tipe kolom instan

Last Updated:May 13, 2026

AliSQL mendukung modifikasi tipe kolom instan. Fitur ini hanya memodifikasi metadata tanpa menyalin seluruh tabel, sehingga secara signifikan mengurangi waktu modifikasi dan meningkatkan efisiensi operasional.

Fitur

Latar belakang: Mulai dari versi 8.0, MySQL komunitas mendukung INSTANT DDL. Menambah atau menghapus kolom hanya memerlukan perubahan metadata dan tidak melibatkan penyalinan data, sehingga operasi DDL dapat diselesaikan dalam hitungan detik. Namun, untuk modifikasi tipe kolom, MySQL komunitas versi 8.0 hanya mendukung metode COPY DDL, yang memakan waktu lama. AliSQL memperluas MySQL komunitas dengan mendukung modifikasi tipe kolom instan menggunakan algoritma INSTANT DDL.

Pengantar: Fitur modifikasi tipe kolom instan pada AliSQL menghindari penyalinan data saat mengubah tipe kolom. Fitur ini memanfaatkan kerangka eksekusi INSTANT DDL dari MySQL komunitas. Operasi ini hanya mengubah metadata, prosesnya identik dengan operasi INSTANT DDL lainnya, dan selesai dalam hitungan detik.

Prasyarat

Untuk menggunakan fitur ini, instans RDS Anda harus memenuhi salah satu persyaratan versi berikut. Jika versi Anda tidak memenuhi persyaratan, Anda dapat upgrade versi mesin utama atau upgrade versi mesin minor:

  • MySQL 8.4

  • MySQL 8.0 dengan versi mesin minor 20251031 atau lebih baru

Fitur ini memiliki batasan berikut:

  • Mesin penyimpanan: Fitur ini hanya mendukung mesin penyimpanan InnoDB.

  • Kolom indeks: Anda tidak dapat memodifikasi kolom indeks.

  • Tipe kolom: Anda hanya dapat melakukan modifikasi tipe kolom dan ekstensi panjang berikut:

    • Memperluas tipe integer (modifikasi tipe kolom): TINYINT, SMALLINT, MEDIUMINT, INT, dan BIGINT hanya dapat diubah dari tipe yang lebih kecil ke tipe yang lebih besar. Misalnya, mengubah INT menjadi BIGINT didukung, tetapi mengubah BIGINT menjadi INT tidak didukung.

    • Memperpanjang tipe string (ekstensi panjang): Anda dapat menambah panjang tipe CHAR dan VARCHAR. Misalnya, untuk memodifikasi 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

Parameter berikut mengontrol fitur modifikasi tipe kolom instan:

Parameter

Deskripsi

loose_rds_upgrade_datatype_instant_enable

  • Deskripsi: Mengaktifkan atau menonaktifkan fitur modifikasi tipe kolom instan.

  • Ruang lingkup: parameter global.

  • Tipe data: Boolean.

  • Nilai default: OFF.

  • Nilai valid: ON atau OFF.

  • Diperlukan restart instans: Tidak.

loose_rds_upgrade_datatype_online_enable

  • Deskripsi: Mengaktifkan atau menonaktifkan fitur modifikasi tipe kolom online.

  • Ruang lingkup: parameter global.

  • Tipe data: Boolean.

  • Nilai default: OFF.

  • Nilai valid: ON atau OFF.

  • Diperlukan restart instans: Tidak.

loose_innodb_instant_ddl_enabled

  • Deskripsi: Mengontrol semua operasi INSTANT DDL.

  • Ruang lingkup: parameter global.

  • Tipe data: Boolean.

  • Nilai default: ON.

  • Nilai valid: ON atau OFF.

  • Diperlukan restart instans: Tidak.

Memodifikasi parameter

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

  2. Di panel navigasi kiri, klik Parameter Settings.

  3. Di tab Modifiable Parameters, cari parameter yang ingin dimodifikasi dan atur nilainya.

  4. Klik OK, lalu klik Submit Parameters. Di kotak dialog yang muncul, pilih rentang waktu agar perubahan diterapkan.

Penggunaan

Untuk mengaktifkan modifikasi tipe kolom instan, atur ketiga parameter berikut ke nilai ON di Konsol:

  • loose_rds_upgrade_datatype_online_enable

  • loose_rds_upgrade_datatype_instant_enable

  • loose_innodb_instant_ddl_enabled

Contoh berikut menggunakan tabel bernama t1 dengan struktur sebagai 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;

Memodifikasi tipe kolom dengan algoritma INSTANT

Anda dapat menentukan algoritma INSTANT baik untuk modifikasi tipe kolom maupun ekstensi panjang:

  • Modifikasi tipe kolom: Tentukan algoritma INSTANT untuk mengubah tipe kolom c1 menjadi bigint.

  • Ekstensi panjang: Tentukan algoritma INSTANT untuk memperpanjang panjang kolom c2 dan c3.

Catatan

Jika Anda menentukan algoritma sebagai INPLACE, operasi tersebut akan melakukan modifikasi tipe kolom online, bukan instan.

-- Modifikasi tipe kolom: Tentukan algoritma INSTANT untuk memodifikasi tipe kolom c1.
ALTER TABLE `t1` MODIFY `c1` bigint DEFAULT NULL, ALGORITHM=INSTANT;

-- Lihat hasil modifikasi.
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)

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

-- Lihat hasil modifikasi.
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)

Memodifikasi tipe kolom tanpa menentukan algoritma

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

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

Menampilkan kolom yang dimodifikasi secara instan

Anda dapat memeriksa bidang PARENT_PHYSICAL_POSITION di tabel INFORMATION_SCHEMA.INNODB_COLUMNS untuk mengidentifikasi kolom mana yang dimodifikasi secara instan. Nilai -1 menunjukkan kolom standar, sedangkan nilai lainnya menunjukkan kolom yang dimodifikasi secara instan.

-- Kueri tabel INNODB_TABLES untuk menemukan TABLE_ID dari tabel contoh.
SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME = 'demo/t1';
+----------+---------+------+--------+-------+------------+---------------+------------+--------------+--------------------+-----------------------+-----------------------+---------------------+
| TABLE_ID | NAME    | FLAG | N_COLS | SPACE | ROW_FORMAT | ZIP_PAGE_SIZE | SPACE_TYPE | INSTANT_COLS | TOTAL_ROW_VERSIONS | INITIAL_COLUMN_COUNTS | CURRENT_COLUMN_COUNTS | TOTAL_COLUMN_COUNTS |
+----------+---------+------+--------+-------+------------+---------------+------------+--------------+--------------------+-----------------------+-----------------------+---------------------+
|     2197 | demo/t1 |   33 |      7 |  1129 | Dynamic    |             0 | Single     |            0 |                  3 |                     4 |                     4 |                   7 |
+----------+---------+------+--------+-------+------------+---------------+------------+--------------+--------------------+-----------------------+-----------------------+---------------------+
1 row in set (0.00 sec)

-- Gunakan TABLE_ID untuk mengambil informasi kolom dari tabel INNODB_COLUMNS.
-- Di hasil kueri, Anda dapat menemukan kolom yang dimodifikasi secara instan di bidang PARENT_PHYSICAL_POSITION (di mana nilainya bukan -1).
SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE TABLE_ID = 2197;
+----------+------+-----+-------+---------+-----+-------------+---------------+---------------+-----------------+--------------+------------------+--------------------------+
| TABLE_ID | NAME | POS | MTYPE | PRTYPE  | LEN | HAS_DEFAULT | DEFAULT_VALUE | VERSION_ADDED | VERSION_DROPPED | PHYSICAL_POS | VERSION_MODIFIED | PARENT_PHYSICAL_POSITION |
+----------+------+-----+-------+---------+-----+-------------+---------------+---------------+-----------------+--------------+------------------+--------------------------+
|     2197 | id   |   0 |     6 |    1283 |   4 |           0 | NULL          |             0 |               0 |            0 |                0 |                       -1 |
|     2197 | c1   |   1 |     6 |    1032 |   8 |           1 | NULL          |             1 |               0 |            6 |                0 |                        3 |
|     2197 | c2   |   2 |    13 | 2162942 |  60 |           1 | NULL          |             2 |               0 |            7 |                0 |                        4 |
|     2197 | c3   |   3 |    12 | 2166799 | 300 |           1 | NULL          |             3 |               0 |            8 |                0 |                        5 |
+----------+------+-----+-------+---------+-----+-------------+---------------+---------------+-----------------+--------------+------------------+--------------------------+
4 rows in set (0.02 sec)