• mysql 优化表空间报错Creating index 'PRIMARY' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again


    背景:mysql数据库中有几个表的碎片率太高,浪费了存储空间且降低了读写效率,需要整理。

    mysql版本:5.6

    先用optimize table 试试。

    也执行了很久。但是结束后,data_free 没有变化。

    再用 alter table table_name force。

    也等了很久,回来一看,居然报错了:Creating index 'PRIMARY' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again

    搜索引擎了一番,原来是有个参数小了。

    说明:innodb_online_alter_log_max_size是MySQL 5.6.6新加入的一个动态全局参数,用以指定对InnoDB表进行在线DDL操作时,所使用的临时日志文件的最大大小(以字节为单位,默认128M),在创建索引或者使用ALTER语句修改表时会使用该临时文件。该文件记录了DDL操作期间插入、更新、删除的数据。在必要的时候该日志文件的大小会根据innodb_sort_buffer_size的值增加容量,直至达到innodb_online_alter_log_max_size值指定的最大值。若临时表的大小超出此上限,则使用ALTER语句修改表的操作会失败,即当前所有未提交的DML操作都会回滚。因此,设置一个较大的值可以允许在线DDL操作期间有更多的DML操作被执行,但是过大的值会导致DDL操作后锁定表的时间更长(锁定表,应用日志记录到表上)。即在任务执行过程中有过多的新增数据进来,导致临时文件存放不下。
    ————————————————
    原文链接:https://blog.csdn.net/HYZX_9987/article/details/112010324

    调整:

    set  global innodb_online_alter_log_max_size=1073741824;

     

    再用 alter table table_name force。成功。

     
  • 相关阅读:
    面经补充
    一些杂项
    leetcode整理
    缓存问题及相关解决策略
    4.10 面经补充
    合并区间(二维数组与列表的转换)
    1.4任务
    jvm虚拟机笔记<八> 线程安全与锁优化
    jvm虚拟机笔记<七> 内存模型与线程
    jvm虚拟机笔记<六> 运行期优化
  • 原文地址:https://www.cnblogs.com/laijx/p/16178191.html
Copyright © 2020-2023  润新知