Mysql用optimize table 优化

一、optimize table会重组表和索引数据,磁盘空间被回收:

1、创建临时表:与原表结构相同;
2、复制数据:将原表数据复制到临时表中;
3、优化数表:复制时,MySQL会重新整理和重组数据,去除碎片,提高数据连续性;
4、重命名表:将临时表重命名为原表。

optimize table your_table;

二、查看表占用情况:

1、Name:表名称
2、Engine:表的存储引擎
3、Version :版本
4、Row_format:行格式。对于MyISAM引擎,这可能是Dynamic,Fixed或Compressed。动态行的行长度可变,例如Varchar或Blob类型字段。固定行是指行长度不变,例如Char和Integer类型字段。
5、Rows :表中的行数。对于非事务性表,这个值是精确的,对于事务性引擎,这个值通常是估算的。
6、Avg_row_length :平均每行包括的字节数
7、Data_length :整个表的数据量(单位:字节)
8、Max_data_length :表可以容纳的最大数据量
9、Index_length :索引占用磁盘的空间大小
10、Data_free :对于MyISAM引擎,标识已分配,但现在未使用的空间,并且包含了已被删除行的空间。
11、Auto_increment :下一个Auto_increment的值
12、Create_time :表的创建时间
13、Update_time :表的最近更新时间
14、Check_time :使用 check table 或myisamchk工具检查表的最近时间
15、Collation :表的默认字符集和字符排序规则
16、Checksum :如果启用,则对整个表的内容计算时的校验和
17、Create_options :指表创建时的其他所有选项
18、Comment :包含了其他额外信息,对于MyISAM引擎,包含了注释徐标新,如果表使用的是innodb引擎 ,将现实表的剩余空间。如果是一个视图,注释里面包含了VIEW字样。

show table status from your_db like 'your_table'
SELECT table_name, round(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.tables
WHERE table_schema = "your_db"
  AND table_name = "your_table";


SELECT SUM(DATA_LENGTH + INDEX_LENGTH)
FROM information_schema.tables
WHERE table_schema = "your_db"
  AND table_name = "your_table";

 

information_schema在mysql8.0之后有缓存,数据不是最新的,可以通过以下获取最新的统计数据

ANALYZE TABLE `your_table`;

 

posted @ 2024-09-14 16:57  杜子烟  阅读(374)  评论(0编辑  收藏  举报