mysql中如何优化表释放表空间
作者:风神幻龙 发布时间:2024-01-18 09:58:27
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。
来源:https://blog.csdn.net/a7442358/article/details/88312517
猜你喜欢
- 在正式的生产环境中,我们常常会需要监控服务器的状态,以保证公司整个业务的正常运转,常常我们会用到像nagios、zabbix这类工具进行实时
- 一、遍历函数(map)map函数用于遍历序列,对序列中每个元素进行操作,最终获取新的序列。lis=[2,3,4,5]new_list=map
- 不正确地调用Windows应用程序接口可能会产生一些意想不到的副作用,以及潜在地对一个应用程序的代码及数据段的破坏。正确地使用一个空的32位
- 这篇文章主要介绍了如何基于Python + requests实现发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 一安装pyinstaller(两种方式)1.通过命令:pip install pyinstaller具体操作:打开pycharm下方的Ter
- 本文是对《Python Qt GUI快速编程》的第9章的堆叠窗口例子Vehicle Rental用Python3+PyQt5+Qt Desi
- 同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月My
- 一、多项式拟合多项式拟合的话,用的的是numpy这个库的polyfit这个函数。那么多项式拟合,最简单的当然是,一次多项式拟合了,就是线性回
- asp+access用户登录代码,loginnew.asp网面包含了登录框及验证用户的代码an.mdb数据库名fd表名y_username用
- Thinkphp5微信小程序获取用户信息接口的实例详解首先在官网下载示例代码, 选php的,这里有个坑 官方的php文件,编码是UTF-8+
- 本文实例讲述了python在Windows8下获取本机ip地址的方法。分享给大家供大家参考。具体实现方法如下:import socket h
- 1.前言JavaWeb Struts2的 * 我们都能很熟悉,在请求交给Action处理之前,先在 * 中处理,处理完之后再交给Action
- 算法11、分小数和整数:如果小数点个数为1,则可能是小数。如小数点个数为0,则可能是整数。小数点个数非0也非1,那么就不是数字。2、如果是小
- delete 删除一张大表时空间不释放,非常慢是因为占用大量的系统资源,支持回退操作,空间还被这张表占用着。truncate table 表
- 1.3 安装 ASP.net跟基督山一起检查你们的计算机哦CPU Pentium II 450以上,推荐733内存 256M 推荐 512M
- 一. lamda匿名函数为了解决一些简单的需求而设计的一句话函数# 计算n的n次方def func(n): return n**nprint
- 用法本脚本用于批量扫描端口 1.在同目录下创建输入文件,属性inputFile为输入文件名2.属性th为线程数3.属性port为探测的目标端
- Windows•安装lxml最好的安装方式是通过wheel文件来安装,http://www.lfd.uci.edu/~gohlke/pyth
- 1、首先在本机安装ssh在cmd输入ssh,出现下面信息代表安装成功2、vscode安装 Remote - SSH 插件3、连接远程主机vs
- 前言说说外星人那些事儿....你以为的外星人......他们都是乘坐UFO来地球的,长的嗯哼可能比较有特色。也许长这样害!其实可能也或许不长