mysql information_schema
information_schema
- select * from tables; # 所有数据库 所有表 信息
CREATE TEMPORARY TABLE `TABLES` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT COMMENT "表所属目录的名称。这个值总是如此def。",
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT COMMENT "表所属的模式(数据库)的名称。",
`TABLE_NAME` varchar(64) NOT NULL DEFAULT COMMENT "表的名称。",
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT COMMENT "BASE TABLE用于表格, VIEW用于视图或SYSTEM VIEW用于INFORMATION_SCHEMA 表格。",
`ENGINE` varchar(64) DEFAULT NULL COMMENT "对于分区表,ENGINE显示所有分区使用的存储引擎的名称。",
`VERSION` bigint(21) unsigned DEFAULT NULL, #此列未使用。通过删除.frmMySQL 8.0中的 文件,此列现在报告硬编码值10,这是.frmMySQL 5.7中使用的最后一个文件版本
`ROW_FORMAT` varchar(10) DEFAULT NULL, #该行的存储格式(Fixed, Dynamic,Compressed, Redundant,Compact)。对于 MyISAM表格,Dynamic 对应myisamchk -dvv报告的内容Packed。
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL, #行数。某些存储引擎(例如 MyISAM)存储确切的计数。对于其他存储引擎,例如InnoDB,该值是近似值,并且可以与实际值相差多达40%至50%。在这种情况下,用于SELECT COUNT(*)获得准确的计数。
`AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL, #平均行长。
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL, # For MyISAM,DATA_LENGTH 是数据文件的长度,以字节为单位。
For InnoDB,DATA_LENGTH 是为聚簇索引分配的大致内存量,以字节为单位。具体来说,它是聚集索引大小(以页为单位)乘以 InnoDB页面大小。
`MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL, #对于MyISAM, MAX_DATA_LENGTH是数据文件的最大长度。这是在给定数据指针大小的情况下可以存储在表中的数据的总字节数。
未使用InnoDB。
`INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL, #For MyISAM,INDEX_LENGTH 是索引文件的长度,以字节为单位。
For InnoDB,INDEX_LENGTH 是为非聚簇索引分配的大致内存量,以字节为单位。具体来说,它是非聚集索引大小(以页为单位)乘以InnoDB页面大小的总和 。
`DATA_FREE` bigint(21) unsigned DEFAULT NULL,
`AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL, #AUTO_INCREMENT
`CREATE_TIME` datetime DEFAULT NULL,
`UPDATE_TIME` datetime DEFAULT NULL,
`CHECK_TIME` datetime DEFAULT NULL,
`TABLE_COLLATION` varchar(32) DEFAULT NULL, #表默认排序规则。输出未显式列出表默认字符集,但排序规则名称以字符集名称开头。
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
`CREATE_OPTIONS` varchar(255) DEFAULT NULL, #显示 partitioned分区表。在MySQL 8.0.16之前,它还显示了ENCRYPTION为在每个表文件表空间中创建的表指定的 子句。从MySQL 8.0.16开始,如果表已加密或指定的加密与架构加密不同,它仅显示每表文件表空间的加密子句。对于在通用表空间中创建的表,不显示加密子句。要识别加密的每表和一般表空间,请查询该列。 INNODB_TABLESPACES ENCRYPTION
`TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT '' #创建表时使用的注释(或有关MySQL无法访问表信息的信息)。
) ENGINE=MEMORY DEFAULT CHARSET=utf8
- 查询某个数据库的存储数据大小:
select concat(round(sum(a.data_length/1024/1024/1024),100),'G') as data,a.* from tables a
where TABLE_SCHEMA="db_test";