mysql中如何优化表释放表空间

 更新时间:2023年02月18日 14:48:13   作者:风神幻龙  
这篇文章主要介绍了mysql中如何优化表释放表空间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mysql优化表释放表空间

方法一:optimize table table_name

这是我们经常见到的方法,这里就不在过多介绍。

方法二:alter table table_name engine=engine_name

该方法通常用于切换表的引擎,例如MyISAM转为InnoDB,但是同样适用于释放表空间,只不过切换后的引擎和原来的engine相同罢了。

注意事项

1.这两种方式都适用于我们常用的表,myisam和innodb。

2.优化表的时候会锁表,数据表越大,耗时越长,因此不要在网站忙时进行表优化。

mysql空间释放

今天还原了一个数据库。发现数据量有数十GB,想着看看哪些表的数据量多,于是查询了下。数据还真不少。3000多万行,这儿一张表居然有近1400万数据。....惭愧。以前没做什么处理。

USE information_schema; # 使用数据库元数据;
SELECT table_name,table_rows FROM TABLES WHERE table_schema = 'tjpro' order by table_rows desc; #查询表名和表行数,数据库为tjpro 
SELECT sum(table_rows) FROM tables WHERE table_schema = 'tjpro'; #统计行数
SELECT table_name,table_rows FROM tables WHERE table_schema = 'tjpro' order by table_rows desc limit 100; #查询最多行数的表前100

使用delete删除mysql数据的时候,mysql并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会彻底释放空间。被删除的数据将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。即,删除操作会带来一些数据碎片,正是这些碎片在占用硬盘空间。 -- 引自mysql

如何整理,清理这些空间呢,请往下看。

查询占用空间大小

这时候,我删除了数据最多的mis_system_data_remind_mas 表(测试库哟)之后。我再次查询该表占用的空间大小。

SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='dbname' AND TABLE_NAME='tablename(你的表名)';

默认是M为单位。第二栏。约为2.8个GB大小。

  • 然后清理一下。使用:OPTIMIZE TABLE

清理碎片

官方推荐使用 OPTIMIZE TABLE 命令来优化表,该命令会重新利用未使用的空间,并整理数据文件的碎片。

等待的时间有点长。等完成后,再次查询空间:

SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='dbname' AND TABLE_NAME='tablename(你的表名)';

可以看到,释放的空间约为2.8GB。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • MySQL导出数据遇到secure-file-priv问题的解决方法

    MySQL导出数据遇到secure-file-priv问题的解决方法

    这篇文章主要为大家详细介绍了MySQL导出数据遇到secure-file-priv问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • MySQL与sqlyog安装教程图文详解

    MySQL与sqlyog安装教程图文详解

    这篇文章主要介绍了MySQL与sqlyog安装教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • MySQL5.7的安装与配置详细操作步骤

    MySQL5.7的安装与配置详细操作步骤

    本文分步骤详细给大家介绍了MySQL5.7的安装与配置详细操作方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • MLSQL编译时权限控制示例详解

    MLSQL编译时权限控制示例详解

    这篇文章主要给大家介绍了关于MLSQL编译时权限控制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • MySQL存储过程中sql语句条件的in无效问题及解决

    MySQL存储过程中sql语句条件的in无效问题及解决

    这篇文章主要介绍了MySQL存储过程中sql语句条件的in无效问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 详解MySQL中数据类型和字段类型

    详解MySQL中数据类型和字段类型

    这篇文章主要为大家详细介绍了MySQL中数据类型和字段类型的使用,文中的示例代码讲解详细,对我们学习MySQL有一定帮助,需要的可以参考一下
    2022-09-09
  • win10下mysql 8.0.16 winx64安装配置方法图文教程

    win10下mysql 8.0.16 winx64安装配置方法图文教程

    这篇文章主要为大家详细介绍了win10下mysql 8.0.16 winx64安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • mysql 5.7.16 winx64安装配置方法图文教程

    mysql 5.7.16 winx64安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.16winx64安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-11-11
  • MySQL日期与时间函数的使用汇总

    MySQL日期与时间函数的使用汇总

    这篇文章主要给大家汇总介绍了关于MySQL日期与时间函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • mysql索引使用技巧及注意事项

    mysql索引使用技巧及注意事项

    本篇文章主要介绍了mysql索引使用技巧及注意事项,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论