# Mysql 元数据

Mysql 元数据


Mysql元数据

概念

数据库是数据的结构化集合。元数据是“有关数据的数据”,除了表之外的都是元数据,都是基表,比如库表属性、状态信息、权限等。

information_schema库

infromation_schema库中的表,保存的是Mysql的元数据,是一个虚拟数据库,物理上并不存在相关的目录和文件。该库中包含的元数据表如下。
在这里插入图片描述

  • ​ CHARACTER_SETS:保存所有Mysql可用的字符集。相当于命令SHOW CHARACTER SET
SELECT * from information_schema.CHARACTER_SETS  #查看Mysql可用的字符集
  • COLUMNS:保存的是所有数据库的列信息
SELECT * from information_schema.`COLUMNS` #查看所有数据库的列信息
  • REFERENTIAL_CONSTRAINTS
SELECT * from information_schema.REFERENTIAL_CONSTRAINTS #查看数据库中的所有外键信息
  • SHEMATA
SELECT * from information_schema.SCHEMATA #查看所有的数据库
  • STATISTICS
SELECT * from information_schema.STATISTICS #查看所有的索引
  • TABLES
SELECT * from information_schema.`TABLES` #查看所有的数据库中的表信息

TABLE_SCHEMA    #  表所在的库 (库的名字)
TABLE_NAME      #  表名       (表的名字)
ENGINE          #  引擎           
TABLE_ROWS      #  表的行数
AVG_ROW_LENGTH  #  平均行长度    (行的长度)
INDEX_LENGTH    #  索引长度     (表的大小为 行数*长度+索引长度)
TABLE_COMMENT   #  表的注释
columns         #  表的所有信息

实际应用

统计库里表的个数
SELECT
	table_schema,
	count(table_name)
FROM
	information_schema. TABLES
GROUP BY
	TABLE_SCHEMA
统计所有非系统表
SELECT
	table_schema,
	table_name,
	ENGINE
FROM
	information_schema.`TABLES`
WHERE
	table_schema NOT IN (
		'mysql',
		'information_schema',
		'performance_schema'
	)
统计每个库总的数据量

数据量计算,表的行数乘以行的长度

SELECT table_schema,SUM(table_rows * AVG_ROW_LENGTH + INDEX_LENGTH)/1024/1024 AS "total_mb"
FROM information_schema.tables
WHERE table_schema NOT IN ('sys','information_schema','mysql','performance_schema')
GROUP BY table_schema
ORDER BY total_mb DESC;

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/106891181