![](https://i-blog.csdnimg.cn/blog_migrate/bbf5363a4ce5c759d61b00811eab3b04.png)
概述
对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新、删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件。
information_schema.tables存储了数据表的元数据信息,下面对常用的字段进行介绍:
- table_schema: 记录数据库名;
- table_name: 记录数据表名;
- engine : 存储引擎;
- table_rows: 关于表的粗略行估计;
- data_length : 记录表的大小(单位字节);
- index_length : 记录表的索引的大小;
- row_format: 可以查看数据表是否压缩过;
下面介绍几种常见的用法;
information_schema.tables信息;
use information_schema;
show create table tables;
![](https://i-blog.csdnimg.cn/blog_migrate/0eaf5f65b240bd70c0c45bc23db93caf.png)
desc tables;
![](https://i-blog.csdnimg.cn/blog_migrate/5eaea1502024f352850b15452258f346.png)
查询所有的数据库信息
select distinct TABLE_SCHEMA from tables ;
![](https://i-blog.csdnimg.cn/blog_migrate/82b2cb425a8a7aa0ca97cf2ae1595ff4.png)
查询数据库和数据表信息
显示mysql数据库下面的所有表信息:(共对比使用)
use mysql;
show tables;
![](https://i-blog.csdnimg.cn/blog_migrate/9ac8eab6461d9f17b3c20739634854ce.png)
通过information_schema.table获取数据库和数据表信息:
use information_schema;
select TABLE_SCHEMA ,table_name from tables where table_schema like 'mysql';
![](https://i-blog.csdnimg.cn/blog_migrate/8e9224b0208d5194407ef80119ff2940.png)
数据表大小以及索引大小
示例1:mysql.time_zone相关表
![](https://i-blog.csdnimg.cn/blog_migrate/16c53dd57c3cf1ccf672afd12fce9438.png)
获取time_zone相关表的大小:
select (sum(DATA_LENGTH) + sum(INDEX_LENGTH)) as size from tables where table_schema='mysql' and table_name like 'time_%';
![](https://i-blog.csdnimg.cn/blog_migrate/4abe824e0dd5e38a0d9c81b222a6533a.png)
示例2: 获取指定数据库的大小;
select (sum(DATA_LENGTH) + sum(INDEX_LENGTH)) as size from tables where table_schema='mysql';
![](https://i-blog.csdnimg.cn/blog_migrate/2e2b1d71215fc7ecc22a57f6ede660e5.png)
判断myisam数据表是否已压缩
select distinct row_format,engine from information_schema.tables where engine='myisam';
![](https://i-blog.csdnimg.cn/blog_migrate/9ec29aa9e863d2daec69b97be8bc6bfc.png)
- Fixed: 表示已压缩;
- Dynamic:表示未压缩;
select row_format,engine,table_name from information_schema.tables where engine='myisam';
![](https://i-blog.csdnimg.cn/blog_migrate/337c755cd3db061cecd86a12f421fad4.png)
通过Linux指令直接获取数据库和数据表信息:
mysql -uroot -pxxxx -D information_schema -e "select TABLE_SCHEMA ,table_name from tables where table_schema like 'hsm_syslog_%'"
![](https://i-blog.csdnimg.cn/blog_migrate/cb6c30db7024c8162d0c2d90d9e55ea4.png)
参数说明:
- -D:表示数据库名称
;
- -e:表示需要执行的指令:
;