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