10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.4 mb
手册页(TGZ)- 237.6 kb
手册页(邮政编码)- 349.3 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册节选

14.13.6在线DDL限制

以下限制适用于在线DDL操作:

  • 对象上创建索引时复制该表临时表

  • ALTER TABLE条款锁=没有如果有就不允许吗在……级联在…设置为空表上的约束条件。

  • 在在线DDL操作完成之前,它必须等待持有表上元数据锁的事务提交或回滚。在线DDL操作可能在其执行阶段短暂地需要表上的排他元数据锁,并且在更新表定义时,在操作的最后阶段总是需要一个。因此,在表上持有元数据锁的事务可能导致在线DDL操作阻塞。在表上持有元数据锁的事务可能在在线DDL操作之前或期间已经启动。在表上持有元数据锁的长时间运行或不活动的事务可能导致在线DDL操作超时。

  • 在外键关系中的表上的在线DDL操作不等待在外键关系中的另一个表上执行的事务提交或回滚。事务在它正在更新的表上持有排他元数据锁,在与外键相关的表上持有共享元数据锁(外键检查所需)。共享元数据锁允许在线DDL操作继续进行,但当需要使用排他元数据锁更新表定义时,会在操作的最后阶段阻止该操作。当其他事务等待在线DDL操作完成时,这种场景可能会导致死锁。

  • 运行在线DDL操作时,运行ALTER TABLE语句应用来自其他连接线程在同一表上并发运行的DML操作的在线日志。当应用DML操作时,可能会遇到重复的键输入错误(错误1062(23000):重复的条目),即使重复的条目只是临时的,并且会被在线日志中稍后的条目还原。这类似于外键约束签入的思想InnoDB其中约束必须在事务期间保持。

  • 优化表对于一个InnoDB表映射到ALTER TABLE操作来重建表和更新索引统计信息并释放聚集索引中未使用的空间。二级索引的创建没有那么高效,因为键是按照它们在主键中出现的顺序插入的。优化表是否通过添加在线DDL支持来重新构建常规的和分区的InnoDB表。

  • 在MySQL 5.6之前创建的表包含时态列(日期DATETIME时间戳),并没有使用算法=复制不支持算法=原地.在这种情况下,anALTER TABLE……算法=原地操作返回以下错误:

    错误1846 (0A000):算法=INPLACE不支持。原因:无法更改INPLACE列类型。试算法=复制。
  • 以下限制通常适用于涉及重建表的大型表的在线DDL操作:

    • 不存在暂停在线DDL操作或限制在线DDL操作的I/O或CPU使用的机制。

    • 如果在线DDL操作失败,回滚的代价可能很高。

    • 长期运行的在线DDL操作会导致复制延迟。在线DDL操作必须在源上完成运行,然后才能在副本上运行。而且,在源上并发处理的DML只在副本上完成DDL操作后在副本上处理。

    有关在大型表上运行在线DDL操作的其他信息,请参见第14.13.2节“在线DDL性能和并发性”