关于mysql中information_schema.tables

项目中出现这样一个SQL语句,现记录如下:

@Select("select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables"
            + " where table_schema = (select database())")
    List<Map<String, Object>> list();

这个SQL的功能是项目中自动生成代码中的一个SQL.

1. 获取所有表结构(TABLES)

SELECT  *  FROM information_schema.TABLES WHERE  TABLE_SCHEMA=‘数据库名‘;  TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。各字段说明如下:

字段 含义
Table_catalog 数据表登记目录
Table_schema 数据表所属的数据库名
Table_name 表名称
Table_type 表类型[system view|base table]
Engine 使用的数据库引擎[MyISAM|CSV|InnoDB]
Version 版本,默认值10
Row_format 行格式[Compact|Dynamic|Fixed]
Table_rows 表里所存多少行数据
Avg_row_length 平均行长度
Data_length 数据长度
Max_data_length 最大数据长度
Index_length 索引长度
Data_free 空间碎片
Auto_increment 做自增主键的自动增量当前值
Create_time 表的创建时间
Update_time 表的更新时间
Check_time 表的检查时间
Table_collation 表的字符校验编码集
Checksum 校验和
Create_options 创建选项
Table_comment 表的注释、备注

详细说明:

row_format

若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。

若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。

所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。

row_format还有其他一些值:

DEFAULT | FIXED | DYNAMIC | COMPRESSED | REDUNDANT | COMPACT

修改行格式

ALTER TABLE table_name ROW_FORMAT = DEFAULT

修改过程导致:

fixed--->dynamic: 这会导致CHAR变成VARCHAR

dynamic--->fixed: 这会导致VARCHAR变成CHAR

data_free

每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。

当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。

1.查询数据库空间碎片:

select table_name,data_free,engine from information_schema.tables where table_schema=‘yourdatabase‘;

2.对数据表优化:

optimeze table `table_name`;

时间: 2024-10-05 04:58:54

关于mysql中information_schema.tables的相关文章

mysql中information_schema.tables字段说明

1. 获取所有表结构(TABLES) SELECT  *  FROM information_schema.TABLES WHERE  TABLE_SCHEMA='数据库名';  TABLES表:提供了关于数据库中的表的信息(包括视图).详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息.各字段说明如下: 字段 含义 table_catalog 数据表登记目录 table_schema 数据表所属的数据库名 table_name 表名称 table_type 表类型[syste

MySQL中INFORMATION_SCHEMA是什么?(1)

在获取自增ID时,我用到了以下语句: select auto_increment from information_schema.tables where table_name = "表名"; 仔细一看,这其实就是一条查询语句,查询了information_schema数据库下的"tables"表,里面 以 table_name  为 "表名"  的一行记录的  auto_increment字段的值. 那么information_schema数据

MySQL中information_schema 数据库 是干什么的

MySQL中information_schema是什么 大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库. information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章 后,你就会对information_schema数据库有所了解. information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是

MySQL中information_schema是什么

MySQL中information_schema是什么 大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库. information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章 后,你就会对information_schema数据库有所了解. information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是

MySql中INFORMATION_SCHEMA

INFORMATION_SCHEMA是mysql数据库中查询元数据的数据库,元数据如:查询整个数据库中有多少张表,有多少个主键,多个列,模糊搜索表名等 1.模糊搜索表 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%medias%'

MySQL中information_schema数据库是干啥的

大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库.information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解. information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限

MYSQL中information_schema简介

一.information_schema简介 在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的表,表栏的数据类型与访问权 限等.在INFORMATION_SCHEMA中,有数个只读表.它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件. information_schema数据库表说明: SCHEMATA表:提供了当前mysql实例中所有数据库的信息.

MySQL中INFORMATION_SCHEMA是什么?(2)

information_schema数据库表说明: SCHEMATA:提供了当前mysql实例中所有数据库的信息.是show databases的结果取之此表. TABLES:提供了关于数据库中的表的信息(包括视图).详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息.是show tables from schemaname的结果取之此表. COLUMNS:提供了表中的列信息.详细表述了某张表的所有列以及每个列的信息.是show columns from schemaname.

mysql中 information_schema(和sql中的系统表类似)

information_schema数据库表说明: SCHEMATA表:提供了当前mysql实例中所有数据库的信息.是show databases的结果取之此表. TABLES表:提供了关于数据库中的表的信息(包括视图).详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息.是show tables from schemaname的结果取之此表. COLUMNS表:提供了表中的列信息.详细表述了某张表的所有列以及每个列的信息.是show columns from schemana