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

相关内容

热门资讯

苏州能模维申请服务器液冷散热器... 国家知识产权局信息显示,苏州能模维系统有限公司申请一项名为“一种服务器液冷散热器”的专利,公开号CN...
华为申请通信方法、设备和可读存... 国家知识产权局信息显示,华为技术有限公司申请一项名为“通信方法、设备和可读存储介质”的专利,公开号C...
批赖清德当局误判“台美关系”,... 海峡导报综合报道 美国总统特朗普结束访华行程后,外媒陆续报道其涉台相关说法。中国国民党17日批评民进...
家用冰箱温度调多少度合适 冰箱温度调节根据季节不同、需求不同来设定。通常来说夏季室外温度较高,控温可以调节在3-4档位,同时温...
智能冰箱温度调到多少合适 一般的食物适合的温度,新鲜食品区域推荐的温度是2.7-4.4℃,冷冻室的温度是-15℃。如果有单独的...
热水器平时调到什么温度合适 在热水器温度的调节上,要根据自己的实际情况来考虑,主要两个方面,第一,自己认为最合适的水温,第二,节...
冰箱调节温度1234567调哪... 一档的制冷效果是最低的,而七档是最高的,但一般都不会把温度调到一档或七档,不然会让冰箱超负荷运行。如...
多位省级政府“一把手”为本省份... 澎湃新闻记者 蒋子文近期,新疆、广西、青海、江西等省级政府“一把手”相继亮相本地足球赛事,并为比赛开...
兰石集团工业母机装备亮相越南国... 5月14日,第23届“越南国际机械、设备、技术及工业产品展”在越南河内国际展览中心开幕。作为国内工业...
外墙腻子粉一平方需要多少公斤 外墙刮腻子也是必要的一项工艺,要将外面的墙体全部清理干净以后,再刮上腻子找平,然后再刷上防水漆或者是...