MySql教程

mysql元数据

本文主要是介绍mysql元数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

mysql系统自带的库

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等

performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象

mysql: 授权库,主要存储系统用户的权限信息

元数据information_schema

information_schema的基本应用
use information_schema;

desc tables; #tables是 information_schema库中的一个表

以下为tables中一些常用的字段

TABLE_SCHEMA 表所在的库名

TABLE_NAME 表名

ENGINE 存储引擎

TABLE_ROWS 数据行数

AVG_ROW_LENGTH 平均行长度

INDEX_LENGTH 索引长度

SELECT table_schema,table_name FROM information_schema.tables; #结果为所有库下的所有表

SELECT table_schema,table_name,ENGINE FROM information_schema.tables where ENGINE='INNODB';

. 统计world下的city表占用空间大小

-- 表占用磁盘空间=平均行长度*行数+索引长度

-- AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH

SELECT table_name,(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024

FROM information_schema.TABLES

WHERE table_schema='world' AND table_name='city';

-- 5. 统计world库占用空间大小

在表的基础上加sum函数

SELECT table_schema,SUM((AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH))/1024

FROM information_schema.TABLES

WHERE table_schema='world';

统计每个库占用空间大小

SELECT table_schema,SUM((AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH))/1024 total_size_KB

FROM information_schema.TABLES

group by table_schema;

2.2 配合concat()函数拼接语句或命令

例子:

-- 1. 模仿以下语句,进行数据库的分库分表备份。

mysqldump -uroot -p123 world city >/bak/world_city.sql

SELECT

CONCAT("mysqldump -uroot -p123 ",table_schema," ",table_name

," >/bak/",table_schema,"_",table_name,".sql")

FROM information_schema.tables;

-- 2. 模仿以下语句,进行批量生成对world库下所有表进行操作

ALTER TABLE world.city DISCARD TABLESPACE;

SELECT

CONCAT("ALTER TABLE ",table_schema,".",table_name," DISCARD TABLESPACE;")

FROM information_schema.tables

WHERE table_schema='world';

这篇关于mysql元数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!