2020-12-03
mysql中数据表DATA_LENGTH比INDEX_LENGTH小
今天mysql内存爆满,找到对应的表,检查表空间,发现DATA_LENGTH比INDEX_LENGTH小,INDEX_LENGTH值为DATA_LENGTH值的一倍,内存一直爆满
我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~

今天mysql内存爆满,找到对应的表,检查表空间,发现DATA_LENGTH比INDEX_LENGTH小,INDEX_LENGTH值为DATA_LENGTH值的一倍,内存一直爆满
1.MySQL删除数据是不释放空间的,统计信息本身不准确。
2.analyze table table_name 试一下看看
3.可以通过一些工具进行分析https://github.com/johnliu2008/py_innodb_page_info
4.内存爆满需要具体分析
由于是新项目,基本都会只会读写一张表,目前删除了全文索引,但是索引大小还是大过数据量
DATA_LENGTH:4687118336
INDEX_LENGTH:5471338496
DATA_FREE:4194304
对于DATA_FREE这空间的清除,好像到底上限,没办法清除为空
按照这个情况 可以alter table engine 试下。
或则弄个新的表 数据insert 看看。
注意:可以在从库上执行 sql_log_bin开启 ,不记录日志
重新复制了表,把原始表的数据导进去,在进行ALTER TABLE tmo ENGINE=InnoDB跟analyze table tmp;,结果跟之前一样
DATA_LENGTH:4687118336
INDEX_LENGTH:5471338496
DATA_FREE:4194304
看情况得把ibd文件分析一下https://github.com/johnliu2008/py_innodb_page_info