• mysql 5.6 online ddl


    innodb存储引擎实现online ddl的原理是在执行创建或删除操作的同时,将DML操作日志写入到一个缓存中,待完成索引创建后再重做应用到表上,以此达到数据的一致性,这个缓存大小由参数innodb_online_alter_log_max_size控制,默认是128M,若用户更新的表比较大,并且在创建过程中 伴有大量的写事务,可能碰到这个参数空间不够用的情况。

    以下几类DDL操作都可以通过在线的方式操作:

    A:辅助索引的创建与删除

    B:改变自增长值

    C:添加或删除外键

    D:列的重命名

    E:添加和删除列,但是会copy table

    F:改变row_format,改变key_block_size, 但是会copy table

    G:添加删除列的not null default xx,default null属性, 但是会copy table

    H:添加主键,虽然可以在线修改,但是会导致重新组织表,会copy table,代价非常大

    I:修改表持久化统计信息选项

    J:修改引擎,但是会copy table

    以下几类DDL操作不能通过在线方式操作(online ddl时会阻塞DML操作):

    A:修改数据列类型定义,会copy table

    B:修改表或列字符集转换, 会copy table

    C:删除主键, 会copy table

    D:添加全文索引,不会copy table

    需要特别注意的是,由于online ddl在创建索引完成后再通过重做DML操作日志来达到数据的一致性,这意味着在索引创建或删除的过程中,SQL优化器不会选择正在创建中或删除中的索引。

    参考信息:http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html

  • 相关阅读:
    less 28-31
    less27 27a
    sqli 26 26a
    sqli lab 25 25a
    kail 更新源
    sqli lab 23 、24
    less 20 21 22
    less18 19
    less 17
    数字类型,字符串类型,列表类型
  • 原文地址:https://www.cnblogs.com/xiaoboluo768/p/5359183.html
Copyright © 2020-2023  润新知