面试题答案
一键面试- 尽量在业务低峰期操作:选择数据库负载较小的时间段执行
ALTER TABLE
,减少对正常业务的影响。 - 使用在线 DDL 工具:例如
pt-online-schema-change
(Percona Toolkit 工具集中的),它能在不锁表或极小锁表时间的情况下执行ALTER TABLE
。在执行过程中,它会创建一个临时表,将原表数据逐步复制到临时表并应用修改,最后替换原表。 - 分批次操作:如果
ALTER TABLE
涉及数据迁移(如修改列类型、添加默认值等),可以分批次处理数据。比如先修改部分数据,提交事务,再处理剩余数据,避免一次性处理大量数据导致长时间锁表。 - 提前做好索引规划:在执行
ALTER TABLE
前,如果涉及到索引的修改(如添加或删除索引),要提前规划好。因为删除索引通常比添加索引快,所以可以先删除不必要的索引,执行ALTER TABLE
后再重新添加索引,减少整体操作时间。 - 确保充足的系统资源:执行
ALTER TABLE
操作时,确保服务器有足够的 CPU、内存和磁盘 I/O 资源。如增加内存可使数据库在处理数据时减少磁盘 I/O 读写,提高操作速度。