zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    block 专题--基础
    iOS开发之沙盒机制
    App上架流程(2016最新)
    团队项目个人总结
    结对开发训练(续)(郭林林&胡潇丹)
    结对开发训练(郭林林&胡潇丹)
    计算一篇英语文章出现频率最高的十个单词
    TLB和大叶
    韩顺平的java入门到精通中serversql笔记(包括emp表和dept表,linux的mysql版)
    IPv6
  • 原文地址:https://www.cnblogs.com/xiaoboluo768/p/5359183.html
Copyright © 2011-2022 走看看