数据库优化方案一 -- 重建表

前情:问题来源

delete 操作:delete一条记录时,只是把记录位置或者数据页标记为“可复用”;磁盘的文件大小不会太大变化,不能回收表空间。
问题:

数据库有个表每天会进行大量的插入操作,之后会定期delete掉旧的数据,只留最新的数据,最近看了些文章,发现delete并不能清理表空间,需要对表进行重建,才能清理调被占用的空间。

一、查看数据库表空间

1.进入information_schema数据库
use information_schema;
2.查看所有数据大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;
3.查看指定表大小
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='库名' and table_name='表名';
4.查看指定数据库的大小
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='库名';
5.查看所有表大小并排序
SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', CONCAT(ROUND(table_rows/1000000,4),'M') AS 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size',CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'FROM information_schema.TABLES  ORDER BY --total DESC;

二、找到空间占用大的表,重建并优化

1.重建表
alter table tablename ENGINE=InnoDB;
2.分析表
analyze table tablename;
3.优化表
optimize table tablename;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值