首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL ALTER TABLE 實戰速查:列操作、索引管理、重命名、字符集轉換與線上 DDL 核心參數

     編輯:MySQL 綜合教學

快速上手:最常用 10 條 ALTER 語句模板

特性MODIFYCHANGE

列名保持不變**必須指定新列名** (可同名)
類型/屬性可修改可修改
移動位置支持 FIRST/AFTER支持 FIRST/AFTER
適用場景調整類型、長度、默認值、註釋重命名列、或同時改名改類型



位置移動語法

-- 語法
ALTER TABLE tbl_name ... [ALGORITHM={DEFAULT|INSTANT|INPLACE|COPY}] [LOCK={DEFAULT|NONE|SHARED|EXCLUSIVE}];

-- 參數含義
ALGORITHM:
  INSTANT  - 8.0.12+ 僅修改元數據,極速、零鎖 (添加帶默認值列、刪除列 8.0.29+、修改註釋等)
  INPLACE  - 原地重建,不拷貝臨時表,允許並發 DML (大多數 ADD INDEX、MODIFY COLUMN)
  COPY     - 拷貝臨時表,全程獨佔鎖 (修改字符集、引擎、刪除主鍵、5.6 早期版本)
  DEFAULT  - MySQL 自動選擇最優

LOCK:
  NONE     - 無鎖 (INSTANT 專用)
  SHARED   - 共享鎖 (允許讀寫,INPLACE 常用)
  EXCLUSIVE- 獨佔鎖 (阻塞讀寫,COPY 必用)
  DEFAULT  - 自動選擇

生產大表加索引標準寫法

-- 添加範圍分區
ALTER TABLE sales ADD PARTITION (PARTITION p2024 VALUES LESS THAN (2025));

-- 刪除分區 (數據永久刪除)
ALTER TABLE sales DROP PARTITION p2020;

-- 重組分區 (合併/拆分,保留數據)
ALTER TABLE sales REORGANIZE PARTITION p2020, p2021 INTO (
    PARTITION p2021 VALUES LESS THAN (2022)
);

-- 維護單分區
ALTER TABLE sales REBUILD PARTITION p2023;   -- 重建/整理碎片
ALTER TABLE sales ANALYZE PARTITION p2023;   -- 更新統計信息

總結:ALTER TABLE 操作決策樹

  1. 是否大表 (>500萬行/>5GB)?→ 是:必用 gh-ost/pt-osc 或 INSTANT/INPLACE 算法 + LOCK=SHARED/NONE;否:直接執行。
  2. 操作類型?→ 添加帶默認值列 用 INSTANT;加索引/修改列 用 INPLACE;改字符集/引擎/刪除列 需 COPY → 必走工具。
  3. 是否涉及分區?→ 使用分區專用子句 (ADD/DROP/REORGANIZE PARTITION)。
  4. 執行前必備:備份驗證、低峰期窗口、監控告警就緒、回滾方案預案。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved