当我更改MySQL表时,为我的日志表添加新列。具体说法如下:
alter table log_xxx add column `new_column` smallint NOT NULL after post_date;
如果我在执行此alter语句时执行SQL以插入一些记录,那么上述语句是否会锁定表log_xxx
?
我做了一些测试,执行insert语句在alter语句处理时仍然没有成功包含新列。所以我不知道alter table add column会不会锁定表?
有没有人知道这个问题?
答案 0 :(得分:0)
这取决于存储引擎,如果使用InnoDB,它可能会改变表并且不阻止DML操作,如果使用MyISAM,则在alter
开始之后开始的更新和写入操作,将被阻止,直到新表准备就绪。
这些链接可能会有所帮助: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html https://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html