前言:
眼前你们对“mysql列出数据库的表”可能比较关切,兄弟们都想要知道一些“mysql列出数据库的表”的相关知识。那么小编在网络上搜集了一些有关“mysql列出数据库的表””的相关文章,希望大家能喜欢,兄弟们快快来学习一下吧!概述
今天主要分享下我们怎么在mysql数据库去统计表的碎片程度?
思路
这里主要会用到两个数据字典表:
information_schema.tables
information_schema.INNODB_SYS_TABLESPACES
结合innodb_sys_tablespaces这个数据字典的字段FILE_SIZE计算表的物理文件大小和逻辑大小。
表的大小逻辑计算为data_length+index_length=xxx,假设是AM左右,而物理文件大小是BM左右,那么碎片率大约是(B-A)/60*100%。
碎片程度比较高的表:
下面大家也可以把基数调整的稍大一些为1.1,然后以这个为基线来做统计。
SELECT t.table_schema, t.table_name, t.table_rows, t.data_length + t.index_length data_size, t.index_length index_size, t.avg_row_length, t.avg_row_length * t.table_rows logic_size, s.FILE_SIZE, TRUNCATE ( s.FILE_SIZE / ( t.data_length + t.index_length ) * 1.1 * 2, 0 ) tab_frag FROM information_schema.TABLES t, information_schema.INNODB_SYS_TABLESPACES s WHERE t.table_type = 'BASE TABLE' AND concat( t.table_schema, '/', t.table_name ) = s.NAME AND t.table_schema NOT IN ( 'sys', 'information_schema', 'mysql', 'test' ) -- and t.table_schema in('fsl_prod','fsl_prod_diaocha') AND s.FILE_SIZE > 102400000 AND ( t.data_length + t.index_length ) * 1.1 * 2 < s.FILE_SIZE ORDER BY s.FILE_SIZE;
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #mysql列出数据库的表 #mysql统计表