PolarDB MySQL版支持在线上加索引,并且不会锁表。
具体实现方法如下:
ALTER TABLE
命令为表创建索引,例如ALTER TABLE table_name ADD INDEX index_name (column_name)
。ALTER TABLE
命令时,可以通过设置ALGORITHM=INPLACE
和LOCK=NONE
参数来避免锁表。例如:ALTER TABLE table_name ADD INDEX index_name (column_name) ALGORITHM=INPLACE LOCK=NONE
。需要注意的是,虽然这种方法不会锁表,但是会增加一些额外的系统开销。此外,如果表中的数据量较大,那么创建索引的过程可能需要较长时间。因此,建议在业务低峰期进行操作,并对操作过程中可能产生的风险进行评估和备份。
现在add 索引是可以online加的,就是加索引前和最后修改元数据是锁表,中间不影响DML的,大大降低了锁表时间,另外并行加索引的话,会再次减少创建索引的时间 ,此回答整理自钉群“PolarDB 专家面对面 - 慢SQL索引选择优化器新特性”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。