MySQL 在添加新的复合索引时是不是会在表上获得锁?
Posted
技术标签:
【中文标题】MySQL 在添加新的复合索引时是不是会在表上获得锁?【英文标题】:Does MySQL obtains a lock on the table while adding a new composite index?MySQL 在添加新的复合索引时是否会在表上获得锁? 【发布时间】:2021-04-20 06:51:56 【问题描述】:我有一张导致性能问题的生产表。我已经确定了一些可以添加以解决问题的快速索引。 mysql 在添加新索引时是否会获得表上的锁?是否取决于索引的性质(唯一性、复合性等)?
请注意,我没有任何特殊需要添加新列,因此不会运行任何 ALTER
命令。
【问题讨论】:
什么版本的 MySQL? 这很重要。 MYSql 版本:5.7 【参考方案1】:UNIQUE
索引必须检查唯一性。
对PRIMARY KEY
的任何更改都需要重建索引。 (对于 InnoDB)
新版本的 MySQL 可以添加索引而影响很小。
复合无所谓。
添加“新列”是一个不同的问题。这也“取决于”。如果您没有“after”子句,新版本可以“立即”执行此操作。
【讨论】:
我担心的是锁。 MySQL 在添加索引时是否会在表上获得任何类型的锁(读/写)?以上是关于MySQL 在添加新的复合索引时是不是会在表上获得锁?的主要内容,如果未能解决你的问题,请参考以下文章