【mysql 数据库监控篇】数据库表空间大小监控
来源:互联网 发布:访客网络没有网速 编辑:程序博客网 时间:2024/06/05 02:41
所用数据库占用空间大小
如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:
TABLE_SCHEMA : 数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录数DATA_LENGTH:数据大小INDEX_LENGTH:索引大小
所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。
进入 information_schema 这个数据库,执行如下sql 语句 :
-- 查看数据库占用空间大小(数据大小 + 索引大小)-- 数据长度SELECT concat(round(sum(DATA_LENGTH/1024/1024/1024),2),'GB') as data_size FROM information_schema.TABLES where TABLE_SCHEMA='cgjr';-- 索引长度SELECT concat(round(sum(INDEX_LENGTH/1024/1024/1024),2),'GB') as len_size FROM information_schema.TABLES where TABLE_SCHEMA='cgjr';-- 总空间大小SELECT concat(round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2),'G') as total_size FROM information_schema.TABLES where TABLE_SCHEMA='cgjr';-- 查看top10所有表的大小SELECT TABLE_NAME,round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2) as size_G,TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='cgjr' GROUP BY TABLE_NAME ORDER BY round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2) desc LIMIT 10
-- 查询所有数据库占用磁盘空间大小的SQL语句:select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024/1024,2),' GB') as data_size,concat(truncate(sum(index_length)/1024/1024/1024,2),'GB') as index_size,concat(truncate(sum(data_length)/1024/1024/1024,2)+truncate(sum(index_length)/1024/1024/1024,2),'GB') as total_sizefrom information_schema.tablesgroup by TABLE_SCHEMAorder by truncate(sum(data_length)/1024/1024/1024,2)+truncate(sum(index_length)/1024/1024/1024,2) desc;--数据库中有几十上百张表,那么哪些表的数据量比较大呢,如何查询mysql数据库中哪些表的数据量最大-- 查询单个库中所有表磁盘占用大小的SQL语句:select TABLE_NAME, concat(truncate(data_length/1024/1024/1024,2),' GB') as data_size,concat(truncate(index_length/1024/1024/1024,2),' GB') as index_size,concat(truncate(data_length/1024/1024/1024,2)+truncate(index_length/1024/1024/1024,2),'GB') as total_sizefrom information_schema.tables where TABLE_SCHEMA = 'cgjr'group by TABLE_NAMEorder by truncate(data_length/1024/1024/1024,2)+truncate(index_length/1024/1024/1024,2) desc LIMIT 10;
-- 查询数据库缓存占用大小的sql语句:select TABLE_NAME, concat(truncate(data_length/1024/1024/1024,2),' GB') as data_size,concat(truncate(data_free/1024/1024/1024,2),'GB') as free_sizefrom information_schema.tables where TABLE_SCHEMA = 'cgjr'group by TABLE_NAMEorder by concat(truncate(data_free/1024/1024/1024,2),'GB') desc LIMIT 10;
-- 释放数据库表 缓存占用大小的sql语句:optimize table t_resource_file;
结合mysql官方网站的信息,个人是这样理解的。当你删除数据时,mysql并不会回收,被已删除数据的占据的存储空间,以及索引位。而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。所以对于写比较频烦的表,要定期进行optimize,一个月一次,看实际情况而定了。举个例子来说吧。有100个php程序员辞职了,但是呢只是人走了,php的职位还在那里,这些职位不会撤销,要等新的php程序来填补这些空位。招一个好的程序员,比较难。我想大部分时间会空在那里。哈哈。
阅读全文
1 0
- 【mysql 数据库监控篇】数据库表空间大小监控
- zabbix监控数据库表空间大小
- 监控数据库表空间使用率
- 监控数据库表空间使用情况
- MySQL 数据库 性能监控
- SNMP监控MYSQL数据库
- perl 监控mysql数据库
- sqlserver数据库使用空间监控
- sqlserver数据库使用空间监控
- sqlserver数据库使用空间监控
- sqlserver数据库使用空间监控
- 实时监控mysql数据库变化
- Zabbix监控Mysql数据库性能
- Zabbix监控Mysql数据库性能
- zabbix监控mysql数据库参数
- Zabbix监控Mysql数据库性能
- MySQL 数据库性能实时监控
- nagios监控mysql数据库性能
- Python代码风格
- 安装linux系统时怎么手动分区
- leetcode326[easy]--- Power of Three
- Android.进程间的通信之AIDL
- 检测到目标URL存在http host头攻击漏洞
- 【mysql 数据库监控篇】数据库表空间大小监控
- 使用natapp做外网穿透详细jiaocheng
- 非线程/线程安全
- Java 得到指定数据Excel2003 与2007需要注意的地方
- Leetcode013 Roman to Integer
- linux下如何实现mysql数据库每天自动备份定时备份
- 传统登录方式弊端尽显,作为运营该如何解
- GLPK Mac 安装 例子
- USB通信涉及的描述符及其结构详解