mysql表碎片的查询自己回收
admin
2023-05-19 06:42:49
0

在MySQL中,我们经常会使用VARCHARTEXTBLOB等可变长度的文本数据类型。不过,当我们使用这些数据类型之后,我们就不得不做一些额外的工作——MySQL数据表碎片整理。
每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。

当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。


1.或者查看某个表所占空间,以及碎片大小。

select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables where TABLE_SCHEMA='test';

或者

select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables where data_free !=0;


+------------+--------+------------+--------+-----------+
| table_name | engine | table_rows | length | DATA_FREE |
+------------+--------+------------+--------+-----------+
| curs       | InnoDB |          0 |  16384 |         0 |
| t          | InnoDB |         10 |  32768 |         0 |
| t1         | InnoDB |          9 |  32768 |         0 |
| tn         | InnoDB |          7 |  16384 |         0 |
+------------+--------+------------+--------+-----------+

table_name 表的名称
engine :表的存储引擎
table_rows  表里存在的行数
data_length 表的大小(表数据+索引大小)
DATA_FREE :表碎片的大小
以上单位都是byte字节

整理碎片:
整理碎片过程会锁边,尽量放在业务低峰期做操作

1、myisam存储引擎回收碎片
optimize table aaa_safe,aaa_user,t_platform_user,t_user;
2、innodb存储引擎回收碎片
alter table t engine=innodb;

1.MySQL官方建议不要经常(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可。

2.OPTIMIZE TABLE运行过程中,MySQL会锁定表。
4.默认情况下,直接对InnoDB引擎的数据表使用
OPTIMIZE TABLE

脚本回收innodb表碎片 

#!/bin/bash

DB=test

USER=root

PASSWD=root123

HOST=192.168.2.202

MYSQL_BIN=/usr/local/mysql/bin

D_ENGINE=InnoDB

$MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='"$DB"' "';" | grep -v "TABLE_NAME" >tables.txt

for t_name in  `cat tables.txt`

do

    echo "Starting table $t_name......"

sleep 1

 $MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "alter table $t_name engine='"$D_ENGINE"'"

 if [ $? -eq 0 ] 

 then

 echo "shrink table $t_name ended." >>con_table.log

sleep 1

else 

 echo "shrink failed!" >> con_table.log

fi

done

相关内容

热门资讯

特朗普:日本向我们求助 美日3日宣布联手干预日元汇率,引发市场复杂反应,日经指数一度下跌超过1500点。关于美政府为何购买日...
男子开车在停车场“只进不出”?... 近日,浙江宁波市多个停车场出现恶意逃费案件。当地警方迅速展开调查并抓获相关嫌疑人,其中一名嫌疑人通过...
15岁男生称在华山遭强制消费:... 事前不标价,事后被逼买!15岁男生称在华山遭遇“强制消费”,不买40元车票出不了山!
韩国多地遭遇超过40℃高温天气... 极目新闻记者 刘孝斌据央视新闻报道,当地时间8月2日,韩国多地遭遇超过40℃的高温天气。当天下午,庆...
抽油烟机不通电是什么原因? 抽油烟机电源插头没有插好,就会导致抽油烟机不通电;可能是因为抽油烟机的总电源开关没有开启。有些抽油烟...
双桶洗衣机脱水桶电机坏了有必要... 首先要考虑是否还在质保期,如果在那么就不用纠结了。自保以外,若果是轻微的小毛病,可以考虑修理下;但如...
冰箱压缩机坏了还有维修的价值吗 冰箱压缩机坏了还有维修的价值吗?有,但前提是冰箱的整个外观还算可以,而冷藏箱里的铜管又没有维修过,也...
洗衣机高温自洁功能怎么使用? 洗衣机电机坏了1、要使用洗衣机的高温自洁功能,首先需要打开水龙头。2、然后将洗衣机的电源插上。3、插...
MiniMax H3首发接入P... 导读:当商品图、卖点脚本和品牌素材可以被统一进一段视频上下文,商业视频的试错方式会被重新改写。 今天...
冰箱哪个品牌质量好 且看冰箱十... 最佳回答 冰箱的品牌还是比较多的,现在市面上的冰箱排行榜主要有以下几个,你可以参考一下。海尔冰...