zoukankan      html  css  js  c++  java
  • paip.解决 数据库mysql增加列 字段很慢添加字段很慢

    paip.解决 数据库mysql增加列 字段很慢添加字段很慢
    #环境如下:
    mysql5.6    数据仅仅3w
    alter table xxx add column yyy int default 0;
    添加字段很慢,好几份中都没有好。。

    #原因以及解决
    [SQL] alter table grejx_def add column flag12 int default 0;
    受影响的行: 0
    不是那种lock--copoy--rewrite的方式.effeic row sh 0 ,为甚还是这么慢的是??
    Oracle 11g的快速加字段功能就是好啊..

    数据结构紊乱兰,只要不个table 优化给挂走ok兰。。
    字谣0.3s走ok兰..

    作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com
    转载请注明来源: http://blog.csdn.net/attilax

    #mysql数据库添加字段或者修改结构过程如下
    由于mysql在线ddl(加字段、加索引等修改表结构之类的操作)过程如下:

     A.对表加锁(表此时只读)
    B.复制原表物理结构
    C.修改表的物理结构
    D.把原表数据导入中间表中,数据同步完后,锁定中间表,并删除原表
    E.rename中间表为原表
    F.刷新数据字典,并释放锁



    添加字段很慢
    alter table grejx_def add column flag int default 0;

    #大的数据哈的解决
    ##停掉mysql服务器来修改表结构。然后进行滚动式更新
    Facebook数千台MySQL服务器在过去增加个索引需要几个月的滚动升级(后来他们自己开发了后面提到的工具,只需要几天)


    ##在加字段之前进行测验mysql是否复制表,以减低应用卡死的风险:
    在命令结束之后看看显示“rows affected “的值。例如,这里您可能会看到在做不同类型的DDL操作:

    拷贝表结构,然后插入少量的数据。去修改表结构。看影响的行。如果为0,则表示不会拷贝中间表的方式

    ##关于online-schema-change

    是percona推出的一个针对mysql在线ddl的工具

    #新的思路(手动执行mysql的过程)
    1:手动的创建好修改后的表结构 NEW_TAB。(比如新增字段,修改表字段类型。删除表字段,可以一并一次性搞定)
    对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更 过程中速度最慢的一部分)的速度。
    2:   选择性的将旧表OLD_TAB数据插入到修改后的表。(这里需要注意的是海量数据的处理。可以将表记录按照主键分批进行插入处理,其实在如果分表处理的话,在业务代码中也是可以进行修改处理的,分而治之。)

    3:rename表名称。 (这里需要注意的是RENAME过程中的锁表,可以在业务空闲的凌晨晚上进行处理)。

    #参考
    mysql在线修改表结构大数据表的风险与解决办法归纳 - 王滔 - 博客园.htm
    一个资料介绍online-schema-change这个工具,
    MYSQL 在线DDL操作是否copying data - zuoxingyu - 博客园.htm
  • 相关阅读:
    Windowless controls
    System进程无法创建一个Administrator用户的子进程
    PE文件分析工具
    使用IHTMLDocument3 的getElementById获取控件总是返回空的解决方法
    Windows Sockets2 详解2——堵塞与非堵塞模式
    CopySourceAsHtml外部工具版
    像使用C#一样使用C++
    Windows Sockets2 提供者专用扩展机制
    Windows Sockets2 详解1——服务器客户端通讯
    腾讯实习面试(二)
  • 原文地址:https://www.cnblogs.com/attilax/p/5964009.html
Copyright © 2011-2022 走看看