背景: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。成功。

 

最新文章

  1. Python virtualenv with Sublime Text 3
  2. percona教程:MySQL GROUP_CONCAT的使用
  3. CodeForces462 A. Appleman and Easy Task
  4. 【转载】Restarting an analysis in ANSYS
  5. 方便的一站式svn/git服务器软件(linux)
  6. Oracle 正则表达式函数-REGEXP_REPLACE 使用例子
  7. 获取 input 单选框和多选框的值
  8. Gson解析Json格式数据
  9. 安卓tabhost和子Activity通信方法
  10. java中使用URLClassLoader访问外部jar包的java类
  11. 用 jQuery Masonry 插件创建瀑布流式的页面
  12. UI常用控件的一些属性
  13. Windows下与Linux下编写socket程序的区别 《转载》
  14. VMware安装Centos6.8设置ip无法远程连接问题
  15. Google分析language垃圾信息
  16. 微软改名部又出动啦!微软宣布VSTS改名为Azure DevOps
  17. 打印图形|2014年蓝桥杯B组题解析第五题-fishers
  18. ActiveMq 配置多队列
  19. iOS学习笔记(4)——显示单组件选取器
  20. Yii2.0 发送邮件时中文附件乱码的问题

热门文章

  1. voxel体素网络滤波器
  2. 使用Hook拦截sendto函数解决虚拟局域网部分游戏联机找不到房间的问题——以文明6为例
  3. 勇者sky遇上的命中注定的恋人白羽竟然是妹妹2
  4. JZOJ 4213. 【五校联考1day2】对你的爱深不见底
  5. LeetCode-2055 蜡烛之间的盘子 及库函数 lower_bound 和 upper_bound学习使用
  6. Ubuntu 桌面系统升级
  7. WebAPI例子
  8. vue2 项目引入Fontawesome
  9. Centos7安装Docker 及 Docker-compose
  10. 10. watch的实现原理