在mySQL 5.6中,什么是ALGORITHM参数的默认行为?

时间:2014-09-15 22:49:46

标签: mysql

我使用MySQL 5.6(及其Online-DDL功能)生成一些就地更改表操作,如" ADD COLUMN。"我看到LOCK参数默认为允许的最高并发级别(对于ADD COLUMN,这应该是" NONE")但是ALGORITHM参数的默认行为是什么?它在文档中说" ALGORITHM = DEFAULT与指定无ALGORITHM子句相同。"但这没有用,因为它没有说出ALGORITHM = DEFAULT等于什么。

http://dev.mysql.com/doc/refman/5.6/en/alter-table.html

有人知道吗?

1 个答案:

答案 0 :(得分:6)

默认值取决于您尝试应用的更改类型。

某些更改可以使用ALGORITHM = INPLACE,因此这是默认设置。其他更改永远不能使用在线DDL,因此它们的默认值为ALGORITHM = COPY。例如,无法在现场更改数据类型或删除主键。

https://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html。它们记录了如何处理不同的操作,默认情况下“Inplace”列中的“No”表示使用ALGORITHM = COPY,如果尝试使用ALGORITHM = INPLACE则会失败。

您可以强制操作使用ALGORITHM = COPY,即使它可以在原地工作,但如果无法执行,则无法请求操作使用ALGORITHM = INPLACE。