• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: MySQL 8 中文手册 -> InnoDB存储引擎

    InnoDB和在线DDL

    在线DDL功能为即时和就地表更改以及并发DML提供支持。此功能的优点包括:

    • 在繁忙的生产环境中提高响应速度和可用性是不切实际的,在生产环境中,使表在几分钟或几小时内不可用。
    • 对于就地操作,使用LOCK子句在DDL操作期间调整性能与并发之间的平衡的能力。请参见 LOCK子句。
    • 与表复制方法相比,磁盘空间使用量和I / O开销更少。
    注意

    ALGORITHM=INSTANTADD COLUMNMySQL 8.0.12中提供了支持和其他操作。

    通常,您无需执行任何特殊操作即可启用在线DDL。默认情况下,MySQL在允许的情况下立即执行操作或在适当的位置执行操作,并且锁定尽可能少。

    您可以使用语句的ALGORITHMand LOCK子句控制DDL操作的各个方面ALTER TABLE。这些子句放在语句的末尾,用逗号将它们与表和列的规范分隔开。例如:

    ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;
    

    LOCK子句可用于就地执行的操作,并且可用于微调操作期间对表的并发访问程度。仅LOCK=DEFAULT支持立即执行的操作。该ALGORITHM子句主要用于性能比较,并在遇到任何问题时作为对旧表复制行为的后备。例如:

    • 为避免在就地ALTER TABLE操作期间意外使表不可用于读取,写入或两者都不可用,请在语句上指定一个子句,ALTER TABLE例如LOCK=NONE(允许读写)或LOCK=SHARED(允许读取)。如果请求的并发级别不可用,该操作将立即停止。
    • 为了比较算法之间的性能,运行与语句ALGORITHM=INSTANTALGORITHM=INPLACEALGORITHM=COPY。您还可以在old_alter_table启用配置选项的情况下运行语句,以强制使用ALGORITHM=COPY
    • 为避免使用ALTER TABLE复制表的操作绑定服务器,请使用include ALGORITHM=INSTANTALGORITHM=INPLACE。如果该语句不能使用指定的算法,则会立即暂停。