目录
INFORMATION_SCHEMA
提供对数据库
元数据的
访问
,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。
有时用于此信息的其他术语是
数据字典
和
系统目录
。
INFORMATION_SCHEMA
提供对数据库
元数据的
访问
,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。
有时用于此信息的其他术语是
数据字典
和
系统目录
。
INFORMATION_SCHEMA
是每个MySQL实例中的数据库,该实例存储有关MySQL服务器维护的所有其他数据库的信息。
该
INFORMATION_SCHEMA
数据库包含几个只读表。
它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且您无法在它们上设置触发器。
此外,没有具有该名称的数据库目录。
虽然你可以选择
INFORMATION_SCHEMA
与一个默认的数据库
USE
语句,你只能读取表的内容,不执行
INSERT
,
UPDATE
或
DELETE
对他们的操作。
以下是从
INFORMATION_SCHEMA
以下位置
检索信息的语句示例
:
MySQL的>SELECT table_name, table_type, engineFROM information_schema.tablesWHERE table_schema = 'db5'ORDER BY table_name;+ ------------ + ------------ + -------- + | table_name | table_type | 发动机| + ------------ + ------------ + -------- + | fk | 基础表| InnoDB | | fk2 | 基础表| InnoDB | | 转到| 基础表| MyISAM | | 进入| 基础表| MyISAM | | k | 基础表| MyISAM | | kurs | 基础表| MyISAM | | 循环| 基础表| MyISAM | | PK | 基础表| InnoDB | | t | 基础表| MyISAM | | t2 | 基础表| MyISAM | | t3 | 基础表| MyISAM | | t7 | 基础表| MyISAM | | 表| 基础表| MyISAM | | v | 查看| NULL | | v2 | 查看| NULL | | v3 | 查看| NULL | | v56 | 查看| NULL | + ------------ + ------------ + -------- + 17行(0.01秒)
说明:该语句请求数据库中所有表的列表
db5
,仅显示三条信息:表的名称,类型和存储引擎。
字符列的定义(例如,
TABLES.TABLE_NAME
)通常为
其中
至少64 MySQL使用的默认排序该字符集(
)的所有的搜索,排序,比较和其他串上这样的列操作。
VARCHAR(
N) CHARACTER SET
utf8N
utf8_general_ci
由于某些MySQL对象表示为文件,因此
INFORMATION_SCHEMA
字符串列中的
搜索
可能会受到文件系统区分大小写的影响。
有关更多信息,请参见
第10.8.7节“在INFORMATION_SCHEMA搜索中使用排序规则”
。
该
SELECT ... FROM INFORMATION_SCHEMA
语句旨在提供对
SHOW
MySQL支持
的各种
语句(
SHOW
DATABASES
,
SHOW
TABLES
等等)
提供的信息的访问的更一致的方法
。
SELECT
与以下相比,
使用
具有以下优点
SHOW
:
它符合Codd的规则,因为所有访问都是在表上完成的。
您可以使用熟悉的
SELECT
语句
语法
,只需要了解一些表名和列名。
实现者无需担心添加关键字。
您可以对
INFORMATION_SCHEMA
查询中
的结果进行筛选,排序,连接和转换为
应用程序所需的任何格式,例如数据结构或要解析的文本表示形式。
此技术可与其他数据库系统更具互操作性。 例如,Oracle数据库用户熟悉在Oracle数据字典中查询表。
由于
SHOW
熟悉且广泛使用,这些
SHOW
陈述仍然是一种替代方案。
事实上,随着
第25.42节“扩展显示声明”中
所述
INFORMATION_SCHEMA
,还有
实现
。
SHOW
每个MySQL用户都有权访问这些表,但只能看到表中与用户具有适当访问权限的对象相对应的行。
在某些情况下(例如,
表中
的
ROUTINE_DEFINITION
列
INFORMATION_SCHEMA
ROUTINES
),权限不足的用户可以看到
NULL
。
这些限制不适用于
InnoDB
表格;
只有
PROCESS
特权
才能看到它们
。
相同的权限适用于从
语句中
选择信息
INFORMATION_SCHEMA
和查看相同的信息
SHOW
。
在任何一种情况下,您都必须拥有对象的某些权限才能查看有关它的信息。
INFORMATION_SCHEMA
从多个数据库中搜索信息的查询可能需要很长时间并影响性能。
要检查查询的效率,您可以使用
EXPLAIN
。
有关使用
EXPLAIN
输出调优
INFORMATION_SCHEMA
查询的信息,请参见
第8.2.3节“优化INFORMATION_SCHEMA查询”
。
INFORMATION_SCHEMA
MySQL中表结构
的实现
遵循ANSI / ISO SQL:2003标准第11部分
Schemata
。
我们的意图是近似符合SQL:2003核心功能F021
基本信息模式
。
SQL Server 2000的用户(也遵循该标准)可能会注意到强烈的相似性。
但是,MySQL省略了许多与我们的实现无关的列,并添加了特定于MySQL的列。
一个这样添加的列是
表中
的
ENGINE
列
INFORMATION_SCHEMA
TABLES
。
虽然其他DBMS使用各种名称,例如
syscat
或
system
,标准名称是
INFORMATION_SCHEMA
。
为避免使用标准或DB2,SQL Server或Oracle中保留的任何名称,我们更改了标记为
“
MySQL扩展
”
的某些列的名称
。
(例如,我们改变了
COLLATION
对
TABLE_COLLATION
在
TABLES
表中。)查看附近的这篇文章的结尾的保留字列表:
https://web.archive.org/web/20070428032454/http://www.dbazine.com/db2 /
db2-disarticles / gulutzan5
。
以下部分描述了每个表和列
INFORMATION_SCHEMA
。
对于每列,有三条信息:
许多部分表明哪个
SHOW
语句等同于
SELECT
从中检索信息的
语句
INFORMATION_SCHEMA
。
对于
SHOW
在省略
子句时
显示缺省数据库信息的
语句,通常可以通过向
从
表
中检索信息的查询
的
子句
添加
条件来
选择缺省数据库的
信息
。
FROM
db_nameAND TABLE_SCHEMA = SCHEMA()
WHERE
INFORMATION_SCHEMA
这些部分讨论了其他
INFORMATION_SCHEMA
相关主题:
有关
INFORMATION_SCHEMA
特定于
InnoDB
存储引擎的
表的
信息
:
第25.39节“INFORMATION_SCHEMA InnoDB表”
有关
INFORMATION_SCHEMA
特定于线程池插件的
表的信息
:
第25.40节“INFORMATION_SCHEMA线程池表”
有关
插件
INFORMATION_SCHEMA
特定表的
信息
CONNECTION_CONTROL
:
第25.41节“INFORMATION_SCHEMA连接控制表”
有关
INFORMATION_SCHEMA
数据库的
常见问题解答:第A.7节“MySQL 8.0常见问题解答:INFORMATION_SCHEMA”
INFORMATION_SCHEMA
查询和优化器:
第8.2.3节“优化INFORMATION_SCHEMA查询”
排序规则对
INFORMATION_SCHEMA
比较的影响:
第10.8.7节“在INFORMATION_SCHEMA搜索中使用排序规则”
该
CHARACTER_SETS
表提供有关可用字符集的信息。
该
CHARACTER_SETS
表包含以下列:
CHARACTER_SET_NAME
字符集名称。
DEFAULT_COLLATE_NAME
字符集的默认排序规则。
DESCRIPTION
字符集的描述。
MAXLEN
存储一个字符所需的最大字节数。
SHOW CHARACTER SET
语句中
也提供了字符集信息
。
请参见
第13.7.6.3节“显示字符集语法”
。
以下陈述是等效的:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS [在哪里CHARACTER_SET_NAME喜欢'wild'] 显示字符集 [LIKE'wild']
该
CHECK_CONSTRAINTS
表(从MySQL 8.0.16开始提供)提供有关
CHECK
在表上定义的约束的
信息
。
该
CHECK_CONSTRAINTS
表包含以下列:
CONSTRAINT_CATALOG
约束所属目录的名称。
这个值总是如此
def
。
CONSTRAINT_SCHEMA
约束所属的模式(数据库)的名称。
CONSTRAINT_NAME
约束的名称。
CHECK_CLAUSE
指定约束条件的表达式。
该
COLLATIONS
表提供有关每个字符集的排序规则的信息。
该
COLLATIONS
表包含以下列:
COLLATION_NAME
整理名称。
CHARACTER_SET_NAME
与排序规则关联的字符集的名称。
ID
整理ID。
IS_DEFAULT
排序规则是否为其字符集的默认值。
IS_COMPILED
字符集是否编译到服务器中。
SORTLEN
这与对字符集中表示的字符串进行排序所需的内存量有关。
PAD_ATTRIBUTE
整理垫属性。
归类信息也可从
SHOW
COLLATION
声明中获得。
请参见
第13.7.6.4节“SHOW COLLATION语法”
。
以下陈述是等效的:
从INFORMATION_SCHEMA.COLLATIONS中选择COLLATION_NAME [COLLERE_NAME LIKE'wild'] 显示收集 [LIKE'wild']
该
COLLATION_CHARACTER_SET_APPLICABILITY
表指示哪种字符集适用于哪种排序规则。
该
COLLATION_CHARACTER_SET_APPLICABILITY
表包含以下列:
COLLATION_NAME
整理名称。
CHARACTER_SET_NAME
与排序规则关联的字符集的名称。
这些
COLLATION_CHARACTER_SET_APPLICABILITY
列等同于
SHOW
COLLATION
语句
显示的前两列
。
该
COLUMNS
表提供有关表中列的信息。
相关
ST_GEOMETRY_COLUMNS
表提供有关存储空间数据的表列的信息。
请参见
第25.27节“INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS表”
。
该
COLUMNS
表包含以下列:
TABLE_CATALOG
包含该列的表所属的目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
包含列的表所属的模式(数据库)的名称。
TABLE_NAME
包含该列的表的名称。
COLUMN_NAME
列的名称。
ORDINAL_POSITION
表中列的位置。
ORDINAL_POSITION
是必要的,因为你可能想说
ORDER BY
ORDINAL_POSITION
。
不同
SHOW
COLUMNS
,
SELECT
从
COLUMNS
表中没有自动排序。
COLUMN_DEFAULT
列的默认值。
这是
NULL
因为列具有显式默认值
NULL
,或者列定义包含无
DEFAULT
子句。
IS_NULLABLE
列可空性。
该值
YES
是否
NULL
可以将值存储在列中,
NO
如果不存在。
DATA_TYPE
列数据类型。
该
DATA_TYPE
值只是类型名称,没有其他信息。
该
COLUMN_TYPE
值包含类型名称以及可能的其他信息,例如精度或长度。
CHARACTER_MAXIMUM_LENGTH
对于字符串列,最大长度(以字符为单位)。
CHARACTER_OCTET_LENGTH
对于字符串列,最大长度(以字节为单位)。
NUMERIC_PRECISION
对于数字列,数字精度。
NUMERIC_SCALE
对于数字列,数字刻度。
DATETIME_PRECISION
对于时间列,小数秒精度。
CHARACTER_SET_NAME
对于字符串列,字符集名称。
COLLATION_NAME
对于字符串列,排序规则名称。
COLUMN_TYPE
列数据类型。
该
DATA_TYPE
值只是类型名称,没有其他信息。
该
COLUMN_TYPE
值包含类型名称以及可能的其他信息,例如精度或长度。
COLUMN_KEY
列是否已编入索引:
如果
COLUMN_KEY
为空,则列不会被索引,也不会仅作为多列非唯一索引中的辅助列索引。
如果
COLUMN_KEY
是
PRI
,则列是a
PRIMARY
KEY
或多列中的列之一
PRIMARY KEY
。
如果
COLUMN_KEY
是
UNI
,则列是
UNIQUE
索引
的第一列
。
(
UNIQUE
索引允许多个
NULL
值,但您可以
NULL
通过检查
Null
列
来判断列是否允许
。)
如果
COLUMN_KEY
是
MUL
,则该列是非唯一索引的第一列,其中在列中允许多次出现给定值。
如果超过一个
COLUMN_KEY
值适用于表中给定的列,
COLUMN_KEY
显示了一个具有最高优先级,顺序
PRI
,
UNI
,
MUL
。
甲
UNIQUE
索引可被显示为
PRI
,如果它不能包含
NULL
值并没有
PRIMARY KEY
在表中。
甲
UNIQUE
索引可能会显示为
MUL
如果若干列形成复合
UNIQUE
索引;
虽然列的组合是唯一的,但每列仍然可以保存给定值的多次出现。
EXTRA
有关给定列的任何其他可用信息。 在这些情况下,该值是非空的:
PRIVILEGES
您对该列的权限。
COLUMN_COMMENT
列定义中包含的任何注释。
GENERATION_EXPRESSION
对于生成的列,显示用于计算列值的表达式。 为非生成列清空。 有关生成的列的信息,请参见 第13.1.20.9节“创建表和生成的列” 。
SRS_ID
此值适用于空间列。
它包含列
SRID
值,指示存储在
列中的
值的空间参照系。
请参见
第11.5.1节“空间数据类型”
和
第11.5.5节“空间参考系统支持”
。
该值适用
NULL
于非空间列和没有
SRID
属性的
空间列
。
在
SHOW
COLUMNS
,
Type
显示包括来自几个不同
COLUMNS
列的
值
。
CHARACTER_OCTET_LENGTH
应该是相同的
CHARACTER_MAXIMUM_LENGTH
,除了多字节字符集。
CHARACTER_SET_NAME
可以源自
COLLATION_NAME
。
例如,如果你说
SHOW FULL COLUMNS FROM t
,并且你在
COLLATION_NAME
列中
看到
一个值
utf8_swedish_ci
,那么字符集就是第一个下划线之前:
utf8
。
列
SHOW
COLUMNS
声明
也可从
声明中获得。
请参见
第13.7.6.5节“显示列语法”
。
以下陈述几乎相同:
SELECT COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT 来自INFORMATION_SCHEMA.COLUMNS WHERE table_name ='tbl_name' [AND table_schema ='db_name'] [AND column_name LIKE'wild'] 显示列 来自tbl_name[FROMdb_name] [LIKE'wild']
该
COLUMN_PRIVILEGES
表提供有关列权限的信息。
它从
mysql.columns_priv
系统表中
获取其值
。
该
COLUMN_PRIVILEGES
表包含以下列:
GRANTEE
授予权限的帐户的名称,
格式为。
'
user_name'@'host_name'
TABLE_CATALOG
包含该列的表所属的目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
包含列的表所属的模式(数据库)的名称。
TABLE_NAME
包含该列的表的名称。
COLUMN_NAME
列的名称。
PRIVILEGE_TYPE
授予的特权。 该值可以是可以在列级别授予的任何权限; 请参见 第13.7.1.6节“GRANT语法” 。 每行列出一个权限,因此被授权者拥有每列权限一行。
在输出
SHOW
FULL
COLUMNS
中,例如,权限都在一列和小写中
select,insert,update,references
。
在
COLUMN_PRIVILEGES
,每行有一个特权,大写。
IS_GRANTABLE
YES
如果用户有
GRANT OPTION
权限,
NO
否则。
输出未
GRANT OPTION
列为单独的行
PRIVILEGE_TYPE='GRANT OPTION'
。
该
COLUMN_PRIVILEGES
表是一个非标准
INFORMATION_SCHEMA
表。
以下陈述 不 相同:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES 显示奖学金......
该
COLUMN_STATISTICS
表提供对列值的直方图统计信息的访问。
有关直方图统计信息,请参见 第8.9.6节“优化程序统计信息” 和 第13.7.3.1节“分析表语法” 。
您只能查看您拥有某些权限的列的信息。
该
COLUMN_STATISTICS
表包含以下列:
SCHEMA_NAME
统计信息适用的架构的名称。
TABLE_NAME
统计信息适用的列的名称。
COLUMN_NAME
统计信息适用的列的名称。
HISTOGRAM
甲
JSON
描述列统计对象,存储为直方图。
该
ENGINES
表提供有关存储引擎的信息。
这对于检查是否支持存储引擎或查看默认引擎是什么特别有用。
该
ENGINES
表包含以下列:
ENGINE
存储引擎的名称。
SUPPORT
服务器对存储引擎的支持级别,如下表所示。
| 值 | 含义 |
|---|---|
YES |
引擎受支持且处于活动状态 |
DEFAULT |
比如
YES
,加上这是默认引擎
|
NO |
不支持引擎 |
DISABLED |
引擎受支持但已被禁用 |
值
NO
意味着在不支持引擎的情况下编译服务器,因此无法在运行时启用它。
DISABLED
发生
的值
可能是因为服务器是使用禁用引擎的选项启动的,或者因为并未提供启用它所需的所有选项。
在后一种情况下,错误日志应包含指示禁用该选项的原因。
请参见
第5.4.2节“错误日志”
。
您可能还会看到
DISABLED
存储引擎,如果服务器已编译为支持它,但是启动了一个
选项。
对于
存储引擎,
表示服务器是在支持NDB Cluster的情况下编译的,但未使用该
选项
启动
。
--skip-
engine_nameNDB
DISABLED
--ndbcluster
所有MySQL服务器都支持
MyISAM
表。
无法禁用
MyISAM
。
COMMENT
存储引擎的简要说明。
TRANSACTIONS
存储引擎是否支持事务。
XA
存储引擎是否支持XA事务。
SAVEPOINTS
存储引擎是否支持保存点。
该
ENGINES
表是一个非标准
INFORMATION_SCHEMA
表。
存储引擎信息也可从
SHOW
ENGINES
声明中获得。
请参见
第13.7.6.16节“显示发动机语法”
。
以下陈述是等效的:
SELECT * FROM INFORMATION_SCHEMA.ENGINES 显示发动机
该
EVENTS
表提供有关事件管理器事件的信息,这将在
第24.4节“使用事件调度程序”中讨论
。
该
EVENTS
表包含以下列:
EVENT_CATALOG
事件所属目录的名称。
这个值总是如此
def
。
EVENT_SCHEMA
事件所属的架构(数据库)的名称。
EVENT_NAME
事件的名称。
DEFINER
以
格式
创建事件的用户的帐户
。
'
user_name'@'host_name'
TIME_ZONE
事件时区,用于调度事件的时区,在执行时在事件中生效。
默认值为
SYSTEM
。
EVENT_BODY
用于事件
DO
子句中
语句的语言
。
价值总是如此
SQL
。
EVENT_DEFINITION
构成事件
DO
子句
的SQL语句的文本
;
换句话说,这个事件执行的语句。
EVENT_TYPE
事件重复类型,
ONE TIME
(瞬态)或
RECURRING
(重复)。
EXECUTE_AT
对于一次性事件,这是在
用于创建事件
的
语句
DATETIME
的
AT
子句中
指定
的
值
CREATE
EVENT
,或者
ALTER
EVENT
是修改事件
的最后一个
语句中
指定
的
值
。
此列中显示的值反映
INTERVAL
了事件
AT
子句中
包含
的任何
值
的加或减
。
例如,如果使用创建事件
ON SCHEDULE AT CURRENT_TIMESTAMP +
'1:6' DAY_HOUR
,并且事件是在2018-02-09 14:05:30创建的,则此列中显示的值将为
'2018-02-10 20:05:30'
。
如果事件的时间由
EVERY
子句而不是
AT
子句确定(即,如果事件是重复出现的话),则此列的值为
NULL
。
INTERVAL_VALUE
对于重复事件,在事件执行之间等待的间隔数。
对于瞬态事件,值始终为
NULL
。
INTERVAL_FIELD
用于重复事件在重复之前等待的间隔的时间单位。
对于瞬态事件,值始终为
NULL
。
SQL_MODE
创建或更改事件时生效的SQL模式,以及执行事件的情况。 有关允许的值,请参见 第5.1.11节“服务器SQL模式” 。
STARTS
重复活动的开始日期和时间。
这将显示为
DATETIME
值,
NULL
如果没有为事件定义开始日期和时间
,
则显示该
值
。
对于瞬态事件,此列始终为
NULL
。
对于定义包含
STARTS
子句
的定期事件
,此列包含相应的
DATETIME
值。
与
EXECUTE_AT
列一样,此值可解析所使用的任何表达式。
如果没有
STARTS
影响事件发生时间的条款,则此列为
NULL
ENDS
对于定义包含
ENDS
子句
的定期事件
,此列包含相应的
DATETIME
值。
与
EXECUTE_AT
列一样,此值可解析所使用的任何表达式。
如果没有
ENDS
影响事件发生时间的条款,则此列为
NULL
。
STATUS
事件状态。
其中一个
ENABLED
,
DISABLED
或
SLAVESIDE_DISABLED
。
SLAVESIDE_DISABLED
表示事件的创建发生在充当复制主服务器的另一个MySQL服务器上并复制到充当从服务器的当前MySQL服务器,但该事件当前未在从服务器上执行。
有关更多信息,请参见
第17.4.1.16节“调用调用的功能”
。
信息。
ON_COMPLETION
两个值之一
PRESERVE
或
NOT PRESERVE
。
CREATED
事件创建的日期和时间。
这是一个
TIMESTAMP
价值。
LAST_ALTERED
上次修改事件的日期和时间。
这是一个
TIMESTAMP
价值。
如果事件自创建以来未被修改,则此值与
CREATED
值
相同
。
LAST_EXECUTED
事件上次执行的日期和时间。
这是一个
DATETIME
价值。
如果事件从未执行过,则此列为
NULL
。
LAST_EXECUTED
表示事件何时开始。
因此,该
ENDS
列永远不会少于
LAST_EXECUTED
。
EVENT_COMMENT
评论的文本,如果事件有一个。 如果不是,则该值为空。
ORIGINATOR
创建事件的MySQL服务器的服务器ID;
用于复制。
ALTER
EVENT
如果在主服务器上执行,则
可以将该值更新
为发生该语句的服务器的服务器ID。
默认值为0。
CHARACTER_SET_CLIENT
character_set_client
创建事件时系统变量
的会话值
。
COLLATION_CONNECTION
collation_connection
创建事件时系统变量
的会话值
。
DATABASE_COLLATION
与事件关联的数据库的排序规则。
该
EVENTS
表是一个非标准
INFORMATION_SCHEMA
表。
在次
EVENTS
表中使用事件时区或当前会话时区显示,如在
第24.4.4节,“事件的元数据”
。
有关
SLAVESIDE_DISABLED
和
ORIGINATOR
列的
更多信息
,请参见
第17.4.1.16节“调用调用的功能”
。
假设用户
'jon'@'ghidora'
创建了一个名为的事件
e_daily
,然后在几分钟后使用
ALTER
EVENT
语句
对其进行修改
,如下所示:
DELIMITER |
创造事件e_daily
按照时间表
每一天
评论'保存会话总数,然后每天清理表'
做
开始
INSERT INTO site_activity.totals(时间,总计)
SELECT CURRENT_TIMESTAMP,COUNT(*)
来自site_activity.sessions;
从site_activity.sessions中删除;
结束|
DELIMITER;
改变事件e_daily
ENABLE;
(请注意,注释可以跨越多行。)
然后,该用户可以运行以下
SELECT
语句,并获得显示的输出:
MySQL的>SELECT * FROM INFORMATION_SCHEMA.EVENTSWHERE EVENT_NAME = 'e_daily'AND EVENT_SCHEMA = 'myschema'\G*************************** 1。排******************** ******* EVENT_CATALOG:def EVENT_SCHEMA:myschema EVENT_NAME:e_daily DEFINER:jon @ ghidora TIME_ZONE:系统 EVENT_BODY:SQL EVENT_DEFINITION:开始 INSERT INTO site_activity.totals(时间,总计) SELECT CURRENT_TIMESTAMP,COUNT(*) 来自site_activity.sessions; 从site_activity.sessions中删除; 结束 EVENT_TYPE:RECURRING EXECUTE_AT:NULL INTERVAL_VALUE:1 INTERVAL_FIELD:DAY SQL_MODE:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION 开始时间:2018-08-08 11:06:34 ENDS:NULL 状态:已启用 ON_COMPLETION:NOT PRESERVE 创建时间:2018-08-08 11:06:34 LAST_ALTERED:2018-08-08 11:06:34 LAST_EXECUTED:2018-08-08 16:06:34 EVENT_COMMENT:保存会话总数,然后清除 每天一桌 原始人:1 CHARACTER_SET_CLIENT:utf8mb4 COLLATION_CONNECTION:utf8mb4_0900_ai_ci DATABASE_COLLATION:utf8mb4_0900_ai_ci
活动信息也可从
SHOW
EVENTS
声明中获得。
请参见
第13.7.6.18节“显示事件语法”
。
以下陈述是等效的:
选择
EVENT_SCHEMA,EVENT_NAME,DEFINER,TIME_ZONE,EVENT_TYPE,EXECUTE_AT,
INTERVAL_VALUE,INTERVAL_FIELD,STARTS,ENDS,STATUS,ORIGINATOR,
CHARACTER_SET_CLIENT,COLLATION_CONNECTION,DATABASE_COLLATION
来自INFORMATION_SCHEMA.EVENTS
WHERE table_schema =' db_name'
[AND column_name LIKE' wild']
展示活动
[FROM db_name]
[LIKE' wild']
该
FILES
表提供有关存储MySQL表空间数据的文件的信息。
该
FILES
表提供有关
InnoDB
数据文件的
信息
。
在NDB Cluster中,此表还提供有关存储NDB Cluster Disk Data表的文件的信息。
有关特定的其他信息
InnoDB
,请参阅
本节后面的
InnoDB Notes
;
有关NDB Cluster的其他信息,请参阅
NDB Notes
。
该
FILES
表包含以下列:
FILE_ID
对于
InnoDB
:表空间ID,也称为
space_id
或
fil_space_t::id
。
用于
NDB
:文件标识符。
FILE_ID
列值是自动生成的。
FILE_NAME
对于
InnoDB
:数据文件的名称。
每个表的
.ibd
文件
和一般表空间具有
文件扩展名。
撤消表空间以前缀为前缀
undo
。
系统表空间以前缀为前缀
ibdata
。
全局临时表空间以前缀为前缀
ibtmp
。
文件名包括文件路径,该路径可能与MySQL数据目录相关(
datadir
系统变量
的值
)。
用于
NDB
:
UNDO
由
CREATE LOGFILE GROUP
或
创建
的
日志文件
的名称
ALTER LOGFILE GROUP
,或由
CREATE
TABLESPACE
或
创建的数据文件创建
的
日志文件
的名称
ALTER
TABLESPACE
。
FILE_TYPE
对于
InnoDB
:表空间文件类型。
文件有三种可能的文件类型
InnoDB
。
TABLESPACE
是包含表,索引或其他形式的用户数据的任何系统,常规或每表文件表空间文件的文件类型。
TEMPORARY
是临时表空间的文件类型。
UNDO LOG
是undo tablespaces的文件类型,用于保存undo记录。
对于
NDB
:值之一
UNDO
LOG
,
DATAFILE
或
TABLESPACE
。
TABLESPACE_NAME
用于
InnoDB
:表空间的SQL名称。
通用表空间名称是
SYS_TABLESPACES.NAME
值。
对于其他表空间文件,名称以开始
innodb_
,如
innodb_system
,
innodb_undo
和
innodb_file_per_table
。
每个表的表空间名称格式是
,
表空间ID
在哪里
。
innodb_file_per_table_
####
用于
NDB
:与文件关联的表空间的名称。
TABLE_CATALOG
此值始终为空。
TABLE_SCHEMA
这个值总是如此
NULL
。
TABLE_NAME
对于
InnoDB
:此值始终为
NULL
。
用于
NDB
:与文件关联的磁盘数据表的名称(如果有)。
LOGFILE_GROUP_NAME
对于
InnoDB
:此值始终为
NULL
。
用于
NDB
:日志文件或数据文件所属的日志文件组的名称。
LOGFILE_GROUP_NUMBER
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:
UNDO
日志文件,日志文件所属的日志文件组的自动生成的ID号。
ENGINE
对于
InnoDB
:此值始终为
InnoDB
。
对于
NDB
:对于NDB群集磁盘数据日志文件或数据文件,此值始终为
NDB
或
NDBCLUSTER
。
FULLTEXT_KEYS
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB群集磁盘数据日志文件或数据文件,此值始终为空。
DELETED_ROWS
对于
InnoDB
:此值始终为
NULL
。
UPDATE_COUNT
对于
InnoDB
:此值始终为
NULL
。
FREE_EXTENTS
对于
InnoDB
:当前数据文件中完全空闲的区数。
对于
NDB
:文件尚未使用的范围数。
TOTAL_EXTENTS
对于
InnoDB
:当前数据文件中使用的完整范围的数量。
文件末尾的任何部分范围都不计算在内。
对于
NDB
:分配给文件的扩展区总数。
EXTENT_SIZE
对于
InnoDB
:对于具有4KB,8KB或16KB页面大小的文件,扩展区大小为1048576(1MB)。
对于页面大小为32KB的文件,范围大小为2097152字节(2MB),对于页面大小为64KB的文件,范围大小为4194304(4MB)。
FILES
不报告
InnoDB
页面大小。
页面大小由
innodb_page_size
系统变量
定义
。
也可以从
INNODB_TABLESPACES
表中
检索范围大小信息
FILES.FILE_ID =
INNODB_TABLESPACES.SPACE
。
对于
NDB
:文件范围的大小(以字节为单位)。
INITIAL_SIZE
对于
InnoDB
:文件的初始大小(以字节为单位)。
对于
NDB
:文件的大小(以字节为单位)。
这是已在使用的值相同
INITIAL_SIZE
的条款
CREATE LOGFILE GROUP
,
ALTER LOGFILE GROUP
,
CREATE
TABLESPACE
或
ALTER
TABLESPACE
用来创建该文件的语句。
MAXIMUM_SIZE
用于
InnoDB
:文件中允许的最大字节数。
该值适用
NULL
于除预定义系统表空间数据文件之外的所有数据文件。
最大系统表空间文件大小由
innodb_data_file_path
。
最大全局临时表空间文件大小由
innodb_temp_data_file_path
。
甲
NULL
对于预定义的系统表空间的数据文件值指示一个文件大小限制没有被明确定义。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终与
INITIAL_SIZE
值
相同
。
AUTOEXTEND_SIZE
对于
InnoDB
:
AUTOEXTEND_SIZE
是由
innodb_data_file_path
系统表空间或
innodb_temp_data_file_path
全局临时表空间
定义的自动扩展大小
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为空。
CREATION_TIME
对于
InnoDB
:此值始终为
NULL
。
用于
NDB
:创建文件的日期和时间。
LAST_UPDATE_TIME
对于
InnoDB
:此值始终为
NULL
。
用于
NDB
:上次修改文件的日期和时间。
LAST_ACCESS_TIME
对于
InnoDB
:此值始终为
NULL
。
用于
NDB
:服务器上次访问文件的日期和时间。
RECOVER_TIME
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
0
。
TRANSACTION_COUNTER
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
0
。
VERSION
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
ROW_FORMAT
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
TABLE_ROWS
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
AVG_ROW_LENGTH
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
DATA_LENGTH
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
MAX_DATA_LENGTH
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
INDEX_LENGTH
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
DATA_FREE
对于
InnoDB
:整个表空间的可用空间总量(以字节为单位)。
预定义的系统表空间(包括系统表空间和临时表表空间)可能包含一个或多个数据文件。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
CREATE_TIME
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
UPDATE_TIME
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
CHECK_TIME
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
CHECKSUM
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NULL
。
STATUS
对于
InnoDB
:此值是
NORMAL
默认值。
InnoDB
每个表的文件表空间可能会报告
IMPORTING
,这表示表空间尚不可用。
对于
NDB
:对于NDB Cluster Disk Data文件,此值始终为
NORMAL
。
EXTRA
对于
InnoDB
:此值始终为
NULL
。
对于
NDB
:对于NDB Cluster Disk Data文件,该
EXTRA
列显示文件所属的数据节点(每个数据节点都有自己的副本),以及其撤消缓冲区的大小。
假设您在具有四个数据节点的NDB群集上使用此语句:
创建LOGFILE GROUP mygroup
添加UNDOFILE'new_undo.dat'
INITIAL_SIZE 2G
ENGINE NDB;
CREATE LOGFILE
GROUP
成功
运行
语句
后
,您应该看到类似于此处针对该
FILES
表的
查询所示的结果
:
MySQL的>SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRAFROM INFORMATION_SCHEMA.FILESWHERE FILE_NAME = 'new_undo.dat';+ -------------------- + ----------- + ---------------- ------------------------- + | LOGFILE_GROUP_NAME | FILE_TYPE | 额外| + -------------------- + ----------- + ---------------- ------------------------- + | mygroup | UNDO LOG | CLUSTER_NODE = 5; UNDO_BUFFER_SIZE = 8388608 | | mygroup | UNDO LOG | CLUSTER_NODE = 6; UNDO_BUFFER_SIZE = 8388608 | | mygroup | UNDO LOG | CLUSTER_NODE = 7; UNDO_BUFFER_SIZE = 8388608 | | mygroup | UNDO LOG | CLUSTER_NODE = 8; UNDO_BUFFER_SIZE = 8388608 | + -------------------- + ----------- + ---------------- ------------------------- +
此信息未包含在NDB 8.0.15之前的NDB Cluster 8.0中。 (Bug#92796,Bug#28800252)
该
FILES
表是一个非标准
INFORMATION_SCHEMA
表。
以下说明适用于
InnoDB
数据文件。
报告的数据
FILES
是从
InnoDB
打开文件的内存缓存中
报告的
。
相比之下,
INNODB_DATAFILES
报告来自
InnoDB
SYS_DATAFILES
内部数据字典表的数据。
报告的数据
FILES
包括全局临时表空间数据。
此数据在
InnoDB
SYS_DATAFILES
内部数据字典表中
不可用,
因此不会报告
INNODB_DATAFILES
。
撤消表空间数据是
FILES
在存在单独的撤消表空间时
报告的
,默认情况下它们在MySQL 8.0中
以下查询返回与
InnoDB
表空间
相关的所有数据
。
选择 FILE_ID,FILE_NAME,FILE_TYPE,TABLESPACE_NAME,FREE_EXTENTS, TOTAL_EXTENTS,EXTENT_SIZE,INITIAL_SIZE,MAXIMUM_SIZE, AUTOEXTEND_SIZE,DATA_FREE,STATUS FROM INFORMATION_SCHEMA.FILES WHERE ENGINE ='InnoDB'\ G
该
FILES
表仅提供有关磁盘数据
文件的
信息
;
您无法使用它来确定单个
NDB
表的
磁盘空间分配或可用性
。
但是,可以看到为
NDB
磁盘上存储数据的
每个
表
分配了多少空间
- 以及使用
ndb_desc
为该表存储磁盘数据的可用空间
。
有关更多信息,请参见
第22.4.9节“
ndb_desc
- 描述NDB表”
。
的
CREATION_TIME
,
LAST_UPDATE_TIME
和
LAST_ACCESSED
值是所报告的操作系统,并不由所提供的
NDB
存储引擎。
如果操作系统未提供任何值,则显示这些列
0000-00-00 00:00:00
。
TOTAL EXTENTS
和
FREE_EXTENTS
列
之间的区别
是文件当前使用的区数:
SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used
来自INFORMATION_SCHEMA.FILES
WHERE FILE_NAME ='myfile.dat';
要估计文件使用的磁盘空间量,请将该差值乘以
EXTENT_SIZE
列
的值,该值
以字节为单位给出文件范围的大小:
SELECT(TOTAL_EXTENTS - FREE_EXTENTS)* EXTENT_SIZE AS bytes_used
来自INFORMATION_SCHEMA.FILES
WHERE FILE_NAME ='myfile.dat';
同样,您可以通过乘以
FREE_EXTENTS
以下
方法估算给定文件中可用的空间量
EXTENT_SIZE
:
SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free
来自INFORMATION_SCHEMA.FILES
WHERE FILE_NAME ='myfile.dat';
前面的查询产生的字节值只是近似值,它们的精度与值的成反比
EXTENT_SIZE
。
也就是说,越大
EXTENT_SIZE
,近似值越不准确。
同样重要的是要记住,一旦使用了一个扩展区,就不能在不删除它所属的数据文件的情况下再次释放它。 这意味着从磁盘数据表中删除 不会 释放磁盘空间。
范围大小可以在
CREATE
TABLESPACE
语句中
设置
。
有关更多信息,请参见
第13.1.21节“CREATE TABLESPACE语法”
。
FILES
在创建日志文件组之后,表中
存在另一行
。
此行包含
列
NULL
的值
FILE_NAME
。
对于此行,
FILE_ID
列
的值
始终
为
列
0
,
列
的值
始终
为
FILE_TYPE
列
UNDO
FILE
,
STATUS
列的值始终为
NORMAL
。
ENGINE
列
的值
始终为
NDBCLUSTER
。
在
FREE_EXTENTS
此行中列显示的提供给所有的自由程度总数撤消属于其名称和编号显示在一个给定的日志文件组文件
LOGFILE_GROUP_NAME
,并
LOGFILE_GROUP_NUMBER
分别列。
假设您的NDB群集上没有现有的日志文件组,并使用以下语句创建一个:
MySQL的>CREATE LOGFILE GROUP lg1ADD UNDOFILE 'undofile.dat'INITIAL_SIZE = 16MUNDO_BUFFER_SIZE = 1MENGINE = NDB;
现在,您可以
NULL
在查询
FILES
表
时
看到此
行
:
MySQL的>SELECT DISTINCTFILE_NAME AS File,FREE_EXTENTS AS Free,TOTAL_EXTENTS AS Total,EXTENT_SIZE AS Size,INITIAL_SIZE AS InitialFROM INFORMATION_SCHEMA.FILES;+ -------------- + --------- + --------- + ------ + ------- --- + | 档案| 免费| 总计| 尺寸| 初始| + -------------- + --------- + --------- + ------ + ------- --- + | undofile.dat | NULL | 4194304 | 4 | 16777216 | | NULL | 4184068 | NULL | 4 | NULL | + -------------- + --------- + --------- + ------ + ------- --- +
TOTAL_EXTENTS
由于维护撤消文件所需的开销,
可用于撤消日志记录的可用扩展区总数总是略小于
日志文件组中所有撤消文件
的
列值
之和
。
通过向日志文件组添加第二个撤消文件,然后针对该
FILES
表
重复上一个查询,可以看到这一点
:
MySQL的>ALTER LOGFILE GROUP lg1ADD UNDOFILE 'undofile02.dat'INITIAL_SIZE = 4MENGINE = NDB;MySQL的>SELECT DISTINCTFILE_NAME AS File,FREE_EXTENTS AS Free,TOTAL_EXTENTS AS Total,EXTENT_SIZE AS Size,INITIAL_SIZE AS InitialFROM INFORMATION_SCHEMA.FILES;+ ---------------- + --------- + --------- + ------ + ----- ----- + | 档案| 免费| 总计| 尺寸| 初始| + ---------------- + --------- + --------- + ------ + ----- ----- + | undofile.dat | NULL | 4194304 | 4 | 16777216 | | undofile02.dat | NULL | 1048576 | 4 | 4194304 | | NULL | 5223944 | NULL | 4 | NULL | + ---------------- + --------- + --------- + ------ + ----- ----- +
使用此日志文件组的磁盘数据表可用于撤消日志记录的可用空间量(以字节为单位)可以通过将可用扩展区的数量乘以初始大小来近似:
MySQL的>SELECTFREE_EXTENTS AS 'Free Extents',FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'FROM INFORMATION_SCHEMA.FILESWHERE LOGFILE_GROUP_NAME = 'lg1'AND FILE_NAME IS NULL;+ -------------- + ------------ + | 自由范围| 免费字节| + -------------- + ------------ + | 5223944 | 20895776 | + -------------- + ------------ +
如果您创建NDB群集磁盘数据表,然后在其中插入一些行,您可以看到之后大约有多少空间用于撤消日志记录,例如:
MySQL的>CREATE TABLESPACE ts1ADD DATAFILE 'data1.dat'USE LOGFILE GROUP lg1INITIAL_SIZE 512MENGINE = NDB;MySQL的>CREATE TABLE dd (c1 INT NOT NULL PRIMARY KEY,c2 INT,c3 DATE)TABLESPACE ts1 STORAGE DISKENGINE = NDB;MySQL的>INSERT INTO dd VALUES(NULL, 1234567890, '2007-02-02'),(NULL, 1126789005, '2007-02-03'),(NULL, 1357924680, '2007-02-04'),(NULL, 1642097531, '2007-02-05');MySQL的>SELECTFREE_EXTENTS AS 'Free Extents',FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'FROM INFORMATION_SCHEMA.FILESWHERE LOGFILE_GROUP_NAME = 'lg1'AND FILE_NAME IS NULL;+ -------------- + ------------ + | 自由范围| 免费字节| + -------------- + ------------ + | 5207565 | 20830260 | + -------------- + ------------ +
FILES
无论是否有任何数据文件与表空间相关联,表中
都会存在
任何NDB Cluster表空间
的附加行
。
此行包含
列
NULL
的值
FILE_NAME
。
对于此行,
FILE_ID
列
的值
始终
为
列
0
,
列
的值
始终
为
FILE_TYPE
列
TABLESPACE
,
STATUS
列的值始终为
NORMAL
。
ENGINE
列
的值
始终为
NDBCLUSTER
。
有关其他信息以及创建和删除NDB Cluster Disk Data对象的示例,请参见 第22.5.13节“NDB Cluster Disk Data Tables” 。
该
KEY_COLUMN_USAGE
表描述了哪些键列具有约束。
此表未提供有关功能键部件的信息,因为它们是表达式,表仅提供有关列的信息。
该
KEY_COLUMN_USAGE
表包含以下列:
CONSTRAINT_CATALOG
约束所属目录的名称。
这个值总是如此
def
。
CONSTRAINT_SCHEMA
约束所属的模式(数据库)的名称。
CONSTRAINT_NAME
约束的名称。
TABLE_CATALOG
表所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
表所属的模式(数据库)的名称。
TABLE_NAME
具有约束的表的名称。
COLUMN_NAME
具有约束的列的名称。
如果约束是外键,则这是外键的列,而不是外键引用的列。
ORDINAL_POSITION
列在约束内的位置,而不是列在表中的位置。 列位置从1开始编号。
POSITION_IN_UNIQUE_CONSTRAINT
NULL
对于唯一和主键约束。
对于外键约束,此列是正在引用的表的键中的序号位置。
REFERENCED_TABLE_SCHEMA
约束引用的模式的名称。
REFERENCED_TABLE_NAME
约束引用的表的名称。
REFERENCED_COLUMN_NAME
约束引用的列的名称。
假设有两个表名
t1
,
t3
并且具有以下定义:
CREATE TABLE t1
(
s1 INT,
s2 INT,
s3 INT,
主要关键(第3节)
)ENGINE = InnoDB;
CREATE TABLE t3
(
s1 INT,
s2 INT,
s3 INT,
KEY(S1),
约束CO FOREIGN KEY(第2条)参考文献t1(s3)
)ENGINE = InnoDB;
对于这两个表,该
KEY_COLUMN_USAGE
表有两行:
一行
CONSTRAINT_NAME
=
'PRIMARY'
,
TABLE_NAME
=
't1'
,
COLUMN_NAME
=
's3'
,
ORDINAL_POSITION
=
1
,
POSITION_IN_UNIQUE_CONSTRAINT
=
NULL
。
对于
NDB
:此值始终为
NULL
。
一行
CONSTRAINT_NAME
=
'CO'
,
TABLE_NAME
=
't3'
,
COLUMN_NAME
=
's2'
,
ORDINAL_POSITION
=
1
,
POSITION_IN_UNIQUE_CONSTRAINT
=
1
。
该
ndb_transid_mysql_connection_map
表提供了
作为API节点连接到NDB Cluster的
NDB
事务,
NDB
事务协调器和MySQL服务器
之间的映射
。
在填充
NDB群集信息数据库
的
server_operations
和
server_transactions
表
时使用此信息
ndbinfo
。
INFORMATION_SCHEMA
名称
|
SHOW
名称
|
备注 |
|---|---|---|
mysql_connection_id |
MySQL服务器连接ID | |
node_id |
事务协调器节点ID | |
ndb_transid |
NDB
交易ID
|
它
mysql_connection_id
与输出中显示的连接或会话ID相同
SHOW
PROCESSLIST
。
没有
SHOW
与此表关联的语句。
这是一个非标准表,特定于NDB Cluster。
它作为
INFORMATION_SCHEMA
插件
实现
;
您可以通过检查输出来验证它是否受支持
SHOW
PLUGINS
。
如果
ndb_transid_mysql_connection_map
启用了支持,则此语句的输出包括具有此名称,类型
INFORMATION SCHEMA
和状态
的插件,如此处
ACTIVE
所示(使用强调文本):
MySQL的> SHOW PLUGINS;
+ ---------------------------------- + -------- + ----- --------------- + --------- + --------- +
| 名称| 状态| 输入| 图书馆| 许可证|
+ ---------------------------------- + -------- + ----- --------------- + --------- + --------- +
| binlog | ACTIVE | 存储引擎| NULL | GPL |
| mysql_native_password | ACTIVE | 认证| NULL | GPL |
| CSV | ACTIVE | 存储引擎| NULL | GPL |
| 记忆| ACTIVE | 存储引擎| NULL | GPL |
| MRG_MYISAM | ACTIVE | 存储引擎| NULL | GPL |
| MyISAM | ACTIVE | 存储引擎| NULL | GPL |
| PERFORMANCE_SCHEMA | ACTIVE | 存储引擎| NULL | GPL |
| BLACKHOLE | ACTIVE | 存储引擎| NULL | GPL |
| 存档| ACTIVE | 存储引擎| NULL | GPL |
| ndbcluster | ACTIVE | 存储引擎| NULL | GPL |
| ndbinfo | ACTIVE | 存储引擎| NULL | GPL |
| ndb_transid_mysql_connection_map | ACTIVE | 信息模式| NULL | GPL |
| InnoDB | ACTIVE | 存储引擎| NULL | GPL |
| INNODB_TRX | ACTIVE | 信息模式| NULL | GPL |
| INNODB_LOCKS | ACTIVE | 信息模式| NULL | GPL |
| INNODB_LOCK_WAITS | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMP | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMP_RESET | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMPMEM | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMPMEM_RESET | ACTIVE | 信息模式| NULL | GPL |
| 分区| ACTIVE | 存储引擎| NULL | GPL |
+ ---------------------------------- + -------- + ----- --------------- + --------- + --------- +
22行(0.00秒)
该插件默认启用。
您可以通过使用该
--ndb-transid-mysql-connection-map
选项
启动服务器来禁用它(或强制服务器不运行,除非插件启动)
。
如果禁用该插件,状态将显示
SHOW
PLUGINS
为
DISABLED
。
无法在运行时启用或禁用插件。
尽管此表及其列的名称使用小写显示,但在SQL语句中引用它们时可以使用大写或小写。
要创建此表,MySQL服务器必须是随NDB Cluster分发提供的二进制文件,或者是从
NDB
启用
了
存储引擎支持
的NDB Cluster源构建的二进制文件
。
它在标准MySQL 8.0服务器中不可用。
该
KEYWORDS
表列出了MySQL所考虑的关键词,并且每一个都表示它是否被保留。
保留关键字在某些情况下可能需要特殊处理,例如用作标识符时的特殊引用(请参见
第9.3节“关键字和保留字”
)。
此表为应用程序提供MySQL关键字信息的运行时源。
在MySQL 8.0.13之前,从
KEYWORDS
没有选择默认数据库
的
表中进行选择会产生错误。
(Bug#90160,Bug#27729859)
该
KEYWORDS
表包含以下列:
WORD
关键字。
RESERVED
一个整数,指示关键字是保留(1)还是非保留(0)。
这些查询分别列出所有关键字,所有保留关键字和所有非保留关键字:
SELECT * FROM INFORMATION_SCHEMA.KEYWORDS; SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE RESERVED = 1; SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE RESERVED = 0;
后两个查询相当于:
选择WORD FROM INFORMATION_SCHEMA.KEYWORDS保留的位置; 选择WORD FROM INFORMATION_SCHEMA.KEYWORDS未保留;
如果从源代码构建MySQL,则构建过程会生成一个
keyword_list.h
头文件,其中包含一组关键字及其保留状态。
该文件可以
sql
在build目录下的目录中找到。
此文件可能对需要关键字列表的静态源的应用程序很有用。
该
OPTIMIZER_TRACE
表提供了由跟踪语句的优化程序跟踪功能生成的信息。
要启用跟踪,请使用
optimizer_trace
系统变量。
有关详细信息,请参阅
MySQL内部:跟踪优化程序
。
该
OPTIMIZER_TRACE
表包含以下列:
QUERY
跟踪声明的文本。
TRACE
跟踪,
JSON
格式。
MISSING_BYTES_BEYOND_MAX_MEM_SIZE
每个记住的跟踪是一个字符串,随着优化的进行而扩展,并将数据附加到该字符串。
该
optimizer_trace_max_mem_size
变量设置了所有当前记住的跟踪使用的内存总量的限制。
如果达到此限制,则不会扩展当前跟踪(因此不完整),该
MISSING_BYTES_BEYOND_MAX_MEM_SIZE
列显示跟踪中缺少的字节数。
INSUFFICIENT_PRIVILEGES
如果跟踪查询使用具有
SQL SECURITY
值的
视图或存储例程
DEFINER
,则可能是拒绝定义者以外的用户查看查询的跟踪。
在这种情况下,跟踪显示为空并且
INSUFFICIENT_PRIVILEGES
值为1.否则,该值为0。
该
PARAMETERS
表提供有关存储例程(存储过程和存储函数)的参数以及存储函数的返回值的信息。
该
PARAMETERS
表不包含内置SQL函数或用户定义函数(UDF)。
该
PARAMETERS
表包含以下列:
SPECIFIC_CATALOG
包含参数的例程所属的目录的名称。
这个值总是如此
def
。
SPECIFIC_SCHEMA
包含参数的例程所属的模式(数据库)的名称。
SPECIFIC_NAME
包含参数的例程的名称。
ORDINAL_POSITION
对于存储过程或函数的连续参数,
ORDINAL_POSITION
值为1,2,3等。
对于存储函数,还有一行适用于函数返回值(如
RETURNS
子句所述)。
返回值不是true参数,因此描述它的行具有以下独特特征:
的
ORDINAL_POSITION
值是0。
该
PARAMETER_NAME
和
PARAMETER_MODE
值是
NULL
因为返回值没有任何名称和模式不适用。
PARAMETER_MODE
参数的模式。
此值是一个
IN
,
OUT
或
INOUT
。
对于存储函数返回值,此值为
NULL
。
PARAMETER_NAME
参数的名称。
对于存储函数返回值,此值为
NULL
。
DATA_TYPE
参数数据类型。
该
DATA_TYPE
值只是类型名称,没有其他信息。
该
DTD_IDENTIFIER
值包含类型名称以及可能的其他信息,例如精度或长度。
CHARACTER_MAXIMUM_LENGTH
对于字符串参数,以字符为单位的最大长度。
CHARACTER_OCTET_LENGTH
对于字符串参数,以字节为单位的最大长度。
NUMERIC_PRECISION
对于数字参数,数字精度。
NUMERIC_SCALE
对于数字参数,数字刻度。
DATETIME_PRECISION
对于时间参数,小数秒精度。
CHARACTER_SET_NAME
对于字符串参数,字符集名称。
COLLATION_NAME
对于字符串参数,排序规则名称。
DTD_IDENTIFIER
参数数据类型。
该
DATA_TYPE
值只是类型名称,没有其他信息。
该
DTD_IDENTIFIER
值包含类型名称以及可能的其他信息,例如精度或长度。
ROUTINE_TYPE
PROCEDURE
用于存储过程,
FUNCTION
用于存储的函数。
该
PARTITIONS
表提供有关表分区的信息。
此表中的每一行对应于分区表的单个分区或子分区。
有关分区表的更多信息,请参见
第23章
分区
。
该
PARTITIONS
表包含以下列:
TABLE_CATALOG
表所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
表所属的模式(数据库)的名称。
TABLE_NAME
包含分区的表的名称。
PARTITION_NAME
分区的名称。
SUBPARTITION_NAME
如果
PARTITIONS
表行代表子分区,则为子分区的名称;
否则
NULL
。
对于
NDB
:此值始终为
NULL
。
PARTITION_ORDINAL_POSITION
所有分区的索引顺序与定义的顺序相同,
1
分配给第一个分区的编号。
随着分区的添加,删除和重组,索引可能会发生变化;
显示的数字是此列反映的当前订单,考虑到任何索引更改。
SUBPARTITION_ORDINAL_POSITION
给定分区中的子分区也被索引和重新索引,其方式与在表中索引分区的方式相同。
PARTITION_METHOD
值之一
RANGE
,
LIST
,
HASH
,
LINEAR HASH
,
KEY
,或
LINEAR KEY
;
也就是说,
第23.2节“分区类型”中
讨论的可用分区类型之一
。
SUBPARTITION_METHOD
值之一
HASH
,
LINEAR
HASH
,
KEY
,或
LINEAR
KEY
;
也就是说,
第23.2.6节“
子分区”中讨论的可用子分区类型之一
。
PARTITION_EXPRESSION
创建表的当前分区方案
的
CREATE
TABLE
or
ALTER
TABLE
语句中
使用的分区函数的表达式
。
例如,考虑
test
使用以下语句
在
数据库
中创建的分区表
:
CREATE TABLE tp(
c1 INT,
c2 INT,
c3 VARCHAR(25)
)
哈希分区(c1 + c2)
PARTITIONS 4;
所述
PARTITION_EXPRESSION
列中的
PARTITIONS
用于从该表中显示一个分区表中的行
c1 + c2
,如下所示:
MySQL的>SELECT DISTINCT PARTITION_EXPRESSIONFROM INFORMATION_SCHEMA.PARTITIONSWHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';+ ---------------------- + | PARTITION_EXPRESSION | + ---------------------- + | c1 + c2 | + ---------------------- +
SUBPARTITION_EXPRESSION
对于用于定义表的子分区的子分区表达式,这与
PARTITION_EXPRESSION
用于定义表分区的分区表达式的作用方式相同。
如果表没有子分区,则此列为
NULL
。
PARTITION_DESCRIPTION
此列用于RANGE和LIST分区。
对于
RANGE
分区,它包含分区
VALUES LESS THAN
子句中
设置的值
,可以是整数或
MAXVALUE
。
对于
LIST
分区,此列包含分区
VALUES
IN
子句中
定义的值,该
子句是逗号分隔的整数值列表。
对于
PARTITION_METHOD
除
RANGE
or
之外的
分区
LIST
,此列始终为
NULL
。
TABLE_ROWS
分区中的表行数。
对于分区
InnoDB
表,列中给出的行计数
TABLE_ROWS
仅是SQL优化中使用的估计值,并且可能并不总是精确的。
AVG_ROW_LENGTH
存储在此分区或子分区中的行的平均长度,以字节为单位。
这与
DATA_LENGTH
除以
相同
TABLE_ROWS
。
DATA_LENGTH
存储在此分区或子分区中的所有行的总长度,以字节为单位; 也就是说,分区或子分区中存储的总字节数。
MAX_DATA_LENGTH
可以存储在此分区或子分区中的最大字节数。
INDEX_LENGTH
此分区或子分区的索引文件的长度(以字节为单位)。
对于
NDB
表的
分区
,无论表使用隐式分区还是显式分区,
INDEX_LENGTH
列值始终为0.但是,您可以使用
ndb_desc
实用程序
获取等效信息
。
DATA_FREE
分配给分区或子分区但未使用的字节数。
CREATE_TIME
创建分区或子分区的时间。
UPDATE_TIME
上次修改分区或子分区的时间。
CHECK_TIME
检查此分区或子分区所属的表的最后一次。
对于分区
InnoDB
表,值始终为
NULL
。
CHECKSUM
校验和值,如果有的话;
否则
NULL
。
PARTITION_COMMENT
注释的文本,如果分区有一个。 如果不是,则该值为空。
分区注释的最大长度定义为1024个字符,
PARTITION_COMMENT
列
的显示宽度
也是1024,符合此限制的字符。
NODEGROUP
这是分区所属的节点组。
这仅与NDB Cluster表相关;
否则,值始终为
0
。
TABLESPACE_NAME
分区所属的表空间的名称。
DEFAULT
除非表使用
NDB
存储引擎
,否则
该值始终
为
(请参阅
本节末尾
的
注释
)。
该
PARTITIONS
表是一个非标准
INFORMATION_SCHEMA
表。
使用除
NDB
分区
之外的任何存储引擎
的
PARTITIONS
表
在
表中
都有一行
。
然而,值
PARTITION_NAME
,
SUBPARTITION_NAME
,
PARTITION_ORDINAL_POSITION
,
SUBPARTITION_ORDINAL_POSITION
,
PARTITION_METHOD
,
SUBPARTITION_METHOD
,
PARTITION_EXPRESSION
,
SUBPARTITION_EXPRESSION
,和
PARTITION_DESCRIPTION
列所有
NULL
。
此外,
PARTITION_COMMENT
这种情况下
的
列是空白的。
一个
NDB
未明确分区表具有在所述一个行
PARTITIONS
表中为NDB集群中的每个节点的数据。
对于每一行:
的
SUBPARTITION_NAME
,
SUBPARTITION_ORDINAL_POSITION
,
SUBPARTITION_METHOD
,
PARTITION_EXPRESSION
,
SUBPARTITION_EXPRESSION
,
CREATE_TIME
,
UPDATE_TIME
,
CHECK_TIME
,
CHECKSUM
,和
TABLESPACE_NAME
列所有
NULL
。
在
PARTITION_METHOD
始终
AUTO
。
该
NODEGROUP
列
default
。
在
PARTITION_EXPRESSION
与
PARTITION_COMMENT
列是空的。
该
PLUGINS
表提供有关服务器插件的信息。
该
PLUGINS
表包含以下列:
PLUGIN_NAME
用于在诸如
INSTALL
PLUGIN
和之类的
语句中引用插件的名称
UNINSTALL
PLUGIN
。
PLUGIN_VERSION
插件的常规类型描述符中的版本。
PLUGIN_STATUS
该插件的状态,一
ACTIVE
,
INACTIVE
,
DISABLED
,
DELETING
,或
DELETED
。
PLUGIN_TYPE
该类型的插件,如
STORAGE ENGINE
,
INFORMATION_SCHEMA
,或
AUTHENTICATION
。
PLUGIN_TYPE_VERSION
插件的特定于类型的描述符中的版本。
PLUGIN_LIBRARY
插件共享库文件的名称。
这是用于在诸如
INSTALL
PLUGIN
和之类的
语句中引用插件文件的名称
UNINSTALL
PLUGIN
。
此文件位于
plugin_dir
系统变量
指定的目录中
。
如果库名是
NULL
,则插件编译在中,无法卸载
UNINSTALL
PLUGIN
。
PLUGIN_LIBRARY_VERSION
插件API接口版本。
PLUGIN_AUTHOR
插件作者。
PLUGIN_DESCRIPTION
插件的简短描述。
PLUGIN_LICENSE
插件的许可方式(例如
GPL
)。
LOAD_OPTION
如何加载插件。
值是
OFF
,
ON
,
FORCE
,或
FORCE_PLUS_PERMANENT
。
请参见
第5.6.1节“安装和卸载插件”
。
该
PLUGINS
表是一个非标准
INFORMATION_SCHEMA
表。
对于安装的插件
INSTALL
PLUGIN
,
PLUGIN_NAME
和
PLUGIN_LIBRARY
值也会在
mysql.plugin
表中
注册
。
有关构成
PLUGINS
表中
信息基础的插件数据结构的信息
,请参见
第29.2节“MySQL插件API”
。
插件信息也可从
SHOW
PLUGINS
声明中获得。
请参见
第13.7.6.25节“SHOW PLUGINS语法”
。
这些陈述是等价的:
选择 PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE, PLUGIN_LIBRARY,PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS; 显示插件;
该
PROCESSLIST
表提供有关正在运行的线程的信息。
该
PROCESSLIST
表包含以下列:
ID
连接标识符。
这是在
语句的
列,Performance Schema
表
的
Id
列中
显示的相同类型的值
,并由
函数
返回
。
SHOW
PROCESSLIST
PROCESSLIST_ID
threads
CONNECTION_ID()
USER
发出声明的MySQL用户。
值是
system user
指服务器在内部处理任务而生成的非客户端线程。
这可能是复制从属或延迟行处理程序上使用的I / O或SQL线程。
对于
system user
,
Host
列中
未指定主机
。
unauthenticated user
指的是已与客户端连接关联但尚未对客户端用户进行身份验证的线程。
event_scheduler
指监视预定事件的线程(请参见
第24.4节“使用事件调度程序”
)。
甲
USER
的值
system
user
是从不同的
SYSTEM_USER
特权。
前者指定内部线程。
后者区分系统用户和常规用户帐户类别(请参见
第6.2.11节“帐户类别”
)。
HOST
发出语句的客户端的主机名(除了
system user
没有主机
的客户端
)。
TCP / IP连接的主机名以
格式
报告,
以便更容易确定哪个客户端正在执行哪些操作。
host_name:client_port
DB
默认数据库(如果选择了一个);
否则
NULL
。
COMMAND
线程正在执行的命令类型。
有关线程命令的说明,请参见
第8.14节“检查线程信息”
。
此列的值对应于
客户端/服务器协议和
状态变量
的
命令
。
请参见
第5.1.10节“服务器状态变量”
COM_
xxxCom_
xxx
TIME
线程处于当前状态的时间(以秒为单位)。 对于从属SQL线程,该值是最后一个复制事件的时间戳与从属机器的实时之间的秒数。 请参见 第17.2.2节“复制实现细节” 。
STATE
指示线程正在执行的操作,事件或状态。
有关
STATE
值的
说明,请
参见
第8.14节“检查线程信息”
。
大多数州对应于非常快速的操作。 如果一个线程在给定状态下停留很多秒,则可能存在需要调查的问题。
对于
SHOW
PROCESSLIST
声明中的价值
STATE
是
NULL
。
INFO
线程正在执行的语句,或者
NULL
它是否正在执行任何语句。
语句可能是发送到服务器的语句,如果语句执行其他语句,则可能是最内层语句。
例如,如果
CALL
语句执行正在执行语句的存储过程,则
SELECT
该
INFO
值显示该
SELECT
语句。
该
PROCESSLIST
表是一个非标准
INFORMATION_SCHEMA
表。
与
SHOW
PROCESSLIST
语句
的输出一样
,该
PROCESSLIST
表仅显示有关您自己的线程的信息,除非您拥有该
PROCESS
权限,在这种情况下,您也将看到有关其他线程的信息。
作为匿名用户,您根本看不到任何行。
如果SQL语句引用该
PROCESSLIST
表,则在语句执行开始时,MySQL会填充整个表一次,因此在语句期间存在读取一致性。
多语句事务没有读一致性。
进程信息也可以从
mysqladmin processlist
命令,
SHOW
PROCESSLIST
语句和Performance Schema
threads
表中获得(参见
第4.5.2节“
mysqladmin
- 管理MySQL服务器的客户端”
,
第13.7.6.29节“SHOW PROCESSLIST语法”
和
Section 26.12.17.5,“线程表”
)。
与
INFORMATION_SCHEMA
PROCESSLIST
表和
SHOW
PROCESSLIST
语句相比,由于它们需要互斥锁而导致性能损失,因此访问
threads
不需要互斥锁,并且对服务器性能的影响最小。
该
threads
表还显示了有关后台线程的信息,
PROCESSLIST
表中
SHOW
PROCESSLIST
没有。
这意味着
threads
可以用来监视其他线程信息源不能的活动。
以下陈述是等效的:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST 显示完整的流程列表
该
PROFILING
表提供了语句分析信息。
其内容对应于
SHOW
PROFILE
和
SHOW
PROFILES
语句
生成的信息
(参见
第13.7.6.30节“SHOW PROFILE语法”
)。
除非
profiling
会话变量设置为1,
否则该表为空
。
此表已弃用,将在以后的MySQL版本中删除。 请改用 Performance Schema ; 请参见 第26.19.1节“使用性能模式查询分析” 。
该
PROFILING
表包含以下列:
QUERY_ID
数字语句标识符。
SEQ
一个序列号,指示具有相同
QUERY_ID
值的
行的显示顺序
。
STATE
行测量适用的分析状态。
DURATION
语句执行在给定状态中保持多长时间,以秒为单位。
CPU_USER
,
CPU_SYSTEM
用户和系统CPU使用,以秒为单位。
CONTEXT_VOLUNTARY
,
CONTEXT_INVOLUNTARY
发生了多少自愿和非自愿的上下文切换。
BLOCK_OPS_IN
,
BLOCK_OPS_OUT
块输入和输出操作的数量。
MESSAGES_SENT
,
MESSAGES_RECEIVED
发送和接收的通信消息数。
PAGE_FAULTS_MAJOR
,
PAGE_FAULTS_MINOR
主要和次要页面错误的数量。
SWAPS
发生了多少掉期。
SOURCE_FUNCTION
,
SOURCE_FILE
和
SOURCE_LINE
指示配置文件状态在源代码中的位置执行的信息。
该
PROFILING
表是一个非标准
INFORMATION_SCHEMA
表。
分析信息也可以从
SHOW
PROFILE
和
SHOW
PROFILES
语句中获得。
请参见
第13.7.6.30节“显示配置文件语法”
。
例如,以下查询是等效的:
显示查询2; 选择状态,格式化(持续时间,6)作为持续时间 来自INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 2 ORDER BY SEQ;
该
REFERENTIAL_CONSTRAINTS
表提供有关外键的信息。
该
REFERENTIAL_CONSTRAINTS
表包含以下列:
CONSTRAINT_CATALOG
约束所属目录的名称。
这个值总是如此
def
。
CONSTRAINT_SCHEMA
约束所属的模式(数据库)的名称。
CONSTRAINT_NAME
约束的名称。
UNIQUE_CONSTRAINT_CATALOG
包含约束引用的唯一约束的目录的名称。
这个值总是如此
def
。
UNIQUE_CONSTRAINT_SCHEMA
包含约束引用的唯一约束的模式的名称。
UNIQUE_CONSTRAINT_NAME
约束引用的唯一约束的名称。
MATCH_OPTION
约束
MATCH
属性
的值
。
目前唯一有效的值是
NONE
。
UPDATE_RULE
约束
ON UPDATE
属性
的值
。
可能的值是
CASCADE
,
SET NULL
,
SET DEFAULT
,
RESTRICT
,
NO ACTION
。
DELETE_RULE
约束
ON DELETE
属性
的值
。
可能的值是
CASCADE
,
SET NULL
,
SET DEFAULT
,
RESTRICT
,
NO ACTION
。
TABLE_NAME
表的名称。
该值与
TABLE_CONSTRAINTS
表
中的值相同
。
REFERENCED_TABLE_NAME
约束引用的表的名称。
该
RESOURCE_GROUPS
表提供对资源组信息的访问。
有关资源组功能的一般讨论,请参见
第8.12.5节“资源组”
。
您只能查看您拥有某些权限的列的信息。
该
RESOURCE_GROUPS
表包含以下列:
RESOURCE_GROUP_NAME
资源组的名称。
RESOURCE_GROUP_TYPE
资源组类型,
SYSTEM
或者
USER
。
RESOURCE_GROUP_ENABLED
资源组是启用(1)还是禁用(0);
VCPU_IDS
CPU亲和力; 也就是说,资源组可以使用的一组虚拟CPU。 该值是以逗号分隔的CPU编号或范围的列表。
THREAD_PRIORITY
分配给资源组的线程的优先级。 优先级范围从-20(最高优先级)到19(最低优先级)。 系统资源组的优先级范围为-20到0.用户资源组的优先级范围为0到19。
该
ROUTINES
表提供有关存储例程(存储过程和存储函数)的信息。
该
ROUTINES
表不包含内置SQL函数或用户定义函数(UDF)。
该
ROUTINES
表包含以下列:
SPECIFIC_NAME
例程的名称。
ROUTINE_CATALOG
例程所属目录的名称。
这个值总是如此
def
。
ROUTINE_SCHEMA
例程所属的模式(数据库)的名称。
ROUTINE_NAME
例程的名称。
ROUTINE_TYPE
PROCEDURE
用于存储过程,
FUNCTION
用于存储的函数。
DATA_TYPE
如果例程是存储函数,则返回值数据类型。 如果例程是存储过程,则此值为空。
该
DATA_TYPE
值只是类型名称,没有其他信息。
该
DTD_IDENTIFIER
值包含类型名称以及可能的其他信息,例如精度或长度。
CHARACTER_MAXIMUM_LENGTH
对于存储的函数字符串返回值,以字符为单位的最大长度。
如果例程是存储过程,则此值为
NULL
。
CHARACTER_OCTET_LENGTH
对于存储函数字符串返回值,最大长度(以字节为单位)。
如果例程是存储过程,则此值为
NULL
。
NUMERIC_PRECISION
对于存储函数数字返回值,数字精度。
如果例程是存储过程,则此值为
NULL
。
NUMERIC_SCALE
对于存储的函数数字返回值,数字刻度。
如果例程是存储过程,则此值为
NULL
。
DATETIME_PRECISION
对于存储的函数时间返回值,小数秒精度。
如果例程是存储过程,则此值为
NULL
。
CHARACTER_SET_NAME
对于存储的函数字符串返回值,字符集名称。
如果例程是存储过程,则此值为
NULL
。
COLLATION_NAME
对于存储的函数字符串返回值,排序规则名称。
如果例程是存储过程,则此值为
NULL
。
DTD_IDENTIFIER
如果例程是存储函数,则返回值数据类型。 如果例程是存储过程,则此值为空。
该
DATA_TYPE
值只是类型名称,没有其他信息。
该
DTD_IDENTIFIER
值包含类型名称以及可能的其他信息,例如精度或长度。
ROUTINE_BODY
用于例程定义的语言。
这个值总是如此
SQL
。
ROUTINE_DEFINITION
例程执行的SQL语句的文本。
EXTERNAL_NAME
这个值总是如此
NULL
。
EXTERNAL_LANGUAGE
存储例程的语言。
该值从
数据字典表
的
external_language
列中
读取
mysql.routines
。
PARAMETER_STYLE
这个值总是如此
SQL
。
IS_DETERMINISTIC
YES
或者
NO
,取决于例程是否定义了
DETERMINISTIC
特征。
SQL_DATA_ACCESS
例程的数据访问特性。
值中的一个
CONTAINS SQL
,
NO
SQL
,
READS SQL DATA
,或
MODIFIES SQL DATA
。
SQL_PATH
这个值总是如此
NULL
。
SECURITY_TYPE
常规
SQL SECURITY
特征。
值是
DEFINER
或之一
INVOKER
。
CREATED
创建例程的日期和时间。
这是一个
TIMESTAMP
价值。
LAST_ALTERED
上次修改例程的日期和时间。
这是一个
TIMESTAMP
价值。
如果例程自创建以来未被修改,则此值与该
CREATED
值
相同
。
SQL_MODE
创建或更改例程时执行的SQL模式,以及执行例程的情况。 有关允许的值,请参见 第5.1.11节“服务器SQL模式” 。
ROUTINE_COMMENT
注释的文本,如果例程有一个。 如果不是,则该值为空。
DEFINER
以
格式
创建例程的用户的帐户
。
'
user_name'@'host_name'
CHARACTER_SET_CLIENT
character_set_client
创建例程时系统变量
的会话值
。
COLLATION_CONNECTION
collation_connection
创建例程时系统变量
的会话值
。
DATABASE_COLLATION
与例程关联的数据库的排序规则。
PARAMETERS
表中
还提供了有关存储的函数返回值的信息
。
存储函数的返回值行可以标识为
ORDINAL_POSITION
值为0的行。
模式是数据库,因此该
SCHEMATA
表提供有关数据库的信息。
该
SCHEMATA
表包含以下列:
CATALOG_NAME
架构所属目录的名称。
这个值总是如此
def
。
SCHEMA_NAME
架构的名称。
DEFAULT_CHARACTER_SET_NAME
架构默认字符集。
DEFAULT_COLLATION_NAME
架构默认排序规则。
SQL_PATH
这个值总是如此
NULL
。
DEFAULT_ENCRYPTION
架构默认加密。 此列已添加到MySQL 8.0.16中。
模式名称也可从
SHOW
DATABASES
声明中获得。
请参见
第13.7.6.14节“显示数据库语法”
。
以下陈述是等效的:
选择SCHEMA_NAME AS`数据库` 来自INFORMATION_SCHEMA.SCHEMATA [SCHEMA_NAME LIKE'wild'] 显示数据库 [喜欢 'wild']
您只能看到具有某种特权的数据库,除非您拥有全局
SHOW
DATABASES
特权。
因为任何静态全局特权被认为是所有数据库的特权,任何静态全局特权使用户能够看到所有的数据库名称
SHOW
DATABASES
或通过检查
SCHEMATA
表
INFORMATION_SCHEMA
,除了已经在通过局部撤销数据库级别被限制的数据库。
该
SCHEMA_PRIVILEGES
表提供有关架构(数据库)特权的信息。
它的价值来自于
mysql.db
系统表中
。
该
SCHEMA_PRIVILEGES
表包含以下列:
GRANTEE
授予权限的帐户的名称,
格式为。
'
user_name'@'host_name'
TABLE_CATALOG
架构所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
架构的名称。
PRIVILEGE_TYPE
授予的特权。 该值可以是可以在架构级别授予的任何权限; 请参见 第13.7.1.6节“GRANT语法” 。 每行列出一个权限,因此被授权者拥有每个模式权限一行。
IS_GRANTABLE
YES
如果用户有
GRANT OPTION
权限,
NO
否则。
输出未
GRANT OPTION
列为单独的行
PRIVILEGE_TYPE='GRANT OPTION'
。
该
SCHEMA_PRIVILEGES
表是一个非标准
INFORMATION_SCHEMA
表。
以下陈述 不是 相同:
SELECT ... FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES 显示奖学金......
该
STATISTICS
表提供有关表索引的信息。
STATISTICS
表示表统计信息的
列
包含缓存值。
该
information_schema_stats_expiry
系统变量定义缓存表统计到期之前的一段时间。
默认值为86400秒(24小时)。
如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时会从存储引擎中检索统计信息。
要随时更新给定表的缓存值,请使用
ANALYZE
TABLE
。
要始终直接从存储引擎检索最新统计信息,请进行设置
information_schema_stats_expiry=0
。
有关更多信息,请参见
第8.2.3节“优化INFORMATION_SCHEMA查询”
。
如果
innodb_read_only
启用
了
系统变量,则
ANALYZE
TABLE
可能会失败,因为它无法更新数据字典中使用的统计表
InnoDB
。
对于
ANALYZE
TABLE
更新密钥分发的操作,即使操作更新表本身(例如,如果它是
MyISAM
表)
,也可能发生故障
。
要获取更新的分布统计信息,请设置
information_schema_stats_expiry=0
。
该
STATISTICS
表包含以下列:
TABLE_CATALOG
包含索引的表所属的目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
包含索引的表所属的模式(数据库)的名称。
TABLE_NAME
包含索引的表的名称。
NON_UNIQUE
如果索引不能包含重复项,则为0;如果可以,则为1。
INDEX_SCHEMA
索引所属的模式(数据库)的名称。
INDEX_NAME
索引的名称。
如果索引是主键,则名称始终为
PRIMARY
。
SEQ_IN_INDEX
索引中的列序列号,以1开头。
COLUMN_NAME
列名称。
另请参见该
EXPRESSION
列
的说明
。
COLLATION
列如何在索引中排序。
这可以具有值
A
(升序),
D
(降序)或
NULL
(未排序)。
CARDINALITY
估计索引中的唯一值的数量。
要更新此号码,请运行
ANALYZE
TABLE
或(对于
MyISAM
表格)
myisamchk -a
。
CARDINALITY
根据存储为整数的统计信息计算,因此即使对于小型表,该值也不一定精确。
基数越高,MySQL在进行连接时使用索引的可能性就越大。
SUB_PART
索引前缀。
也就是说,
NULL
如果整列被索引
,
那么如果
列仅被部分索引,
则
索引字符的数量
。
前缀
限制
以字节为单位。
然而,前缀
长度
为索引规范
CREATE
TABLE
,
ALTER
TABLE
和
CREATE
INDEX
语句解释为非二进制字符串类型(字符数
CHAR
,
VARCHAR
,
TEXT
)和字节数为二进制串类型(
BINARY
,
VARBINARY
,
BLOB
)。
在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。
有关索引前缀的其他信息,请参见 第8.3.5节“列索引” 和 第13.1.15节“CREATE INDEX语法” 。
PACKED
指示密钥的打包方式。
NULL
如果不是。
NULLABLE
包含
YES
如果列可能包含
NULL
的值和
''
如果不。
INDEX_TYPE
使用的索引方法(
BTREE
,
FULLTEXT
,
HASH
,
RTREE
)。
COMMENT
有关未在其自己的列中描述的索引的信息,例如
disabled
是否已禁用索引。
INDEX_COMMENT
COMMENT
在创建索引时为索引
提供的任何注释都带有
属性。
IS_VISIBLE
索引是否对优化程序可见。 请参见 第8.3.12节“不可见索引” 。
EXPRESSION
MySQL 8.0.13及更高版本支持功能关键部分(请参阅
功能键部件
),它会影响
COLUMN_NAME
和
EXPRESSION
列:
对于非功能键部分,
COLUMN_NAME
表示由键部分索引的列,并且
EXPRESSION
是
NULL
。
对于功能键部分,
COLUMN_NAME
列是
NULL
并
EXPRESSION
指示关键部分的表达式。
INFORMATION_SCHEMA
索引
没有标准
表。
MySQL列列表类似于SQL Server 2000返回的列表
sp_statistics
,除了它们
QUALIFIER
并
OWNER
分别替换为
CATALOG
和
SCHEMA
。
有关表索引的信息也可从
SHOW
INDEX
语句中获得。
请参见
第13.7.6.22节“显示索引语法”
。
以下陈述是等效的:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name ='tbl_name' AND table_schema ='db_name' 显示索引 从tbl_nameFROMdb_name
该
ST_GEOMETRY_COLUMNS
表提供有关存储空间数据的表列的信息。
该表基于SQL / MM(ISO / IEC 13249-3)标准,并附有扩展名。
MySQL实现
ST_GEOMETRY_COLUMNS
为
INFORMATION_SCHEMA
COLUMNS
表
上的视图
。
该
ST_GEOMETRY_COLUMNS
表包含以下列:
TABLE_CATALOG
包含该列的表所属的目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
包含列的表所属的模式(数据库)的名称。
TABLE_NAME
包含该列的表的名称。
COLUMN_NAME
列的名称。
SRS_NAME
空间参照系(SRS)名称。
SRS_ID
空间参考系统ID(SRID)。
GEOMETRY_TYPE_NAME
列数据类型。
允许的值是:
geometry
,
point
,
linestring
,
polygon
,
multipoint
,
multilinestring
,
multipolygon
,
geometrycollection
。
此列是标准的MySQL扩展。
该
ST_SPATIAL_REFERENCE_SYSTEMS
表提供有关空间数据的可用空间参考系统的信息。
该表基于SQL / MM(ISO / IEC 13249-3)标准。
ST_SPATIAL_REFERENCE_SYSTEMS
表中的
条目
基于
欧洲石油勘探组
(EPSG)数据集,SRID 0除外,SRID 0对应于MySQL中使用的特殊SRS,表示无轴平坦笛卡尔平面,其轴没有分配单位。
有关SRS的其他信息,请参见
第11.5.5节“空间参考系统支持”
。
该
ST_SPATIAL_REFERENCE_SYSTEMS
表包含以下列:
SRS_NAME
空间参考系统名称。 这个值是唯一的。
SRS_ID
空间参考系统数字ID。 这个值是唯一的。
SRS_ID
values表示与空间函数的SRID参数一起传递的相同类型的值。
SRID 0(无单位笛卡尔平面)很特殊。
它始终是合法的空间参考系统ID,可用于依赖于SRID值的空间数据的任何计算。
ORGANIZATION
定义空间参考系统所基于的坐标系的组织的名称。
ORGANIZATION_COORDSYS_ID
由定义它的组织提供给空间参照系的数字ID。
DEFINITION
空间参考系统定义。
DEFINITION
值是WKT值,表示为
Open Geospatial Consortium
文档
OGC 12-063r5中
指定的值
。
当GIS功能需要定义时,SRS定义解析按需发生。 解析的定义缓存在数据字典缓存中,因此不会为每个需要SRS信息的语句产生解析开销。
DESCRIPTION
空间参考系统描述。
在
SRS_NAME
,
ORGANIZATION
,
ORGANIZATION_COORDSYS_ID
,和
DESCRIPTION
列包含可能会感兴趣的用户信息,但它们不是MySQL使用。
MySQL的>SELECT * FROM ST_SPATIAL_REFERENCE_SYSTEMSWHERE SRS_ID = 4326\G*************************** 1。排******************** ******* SRS_NAME:WGS 84 SRS_ID:4326 组织:EPSG ORGANIZATION_COORDSYS_ID:4326 定义:GEOGCS [“WGS 84”,DATUM [“世界大地测量系统1984”, SPHEROID [“WGS 84”,6378137,298.257223563, AUTHORITY [ “EPSG”, “7030”]],AUTHORITY [ “EPSG”, “6326”]], PRIMEM [ “格林威治”,0,AUTHORITY [ “EPSG”, “8901”]], UNIT [ “度”,0.017453292519943278, AUTHORITY [ “EPSG”, “9122”]], AXIS [ “纬度”,北],AXIS [ “龙”,EAST] AUTHORITY [ “EPSG”, “4326”]] 描述:
此条目描述了用于GPS系统的SRS。
它的名称(
SRS_NAME
)为WGS 84,ID(
SRS_ID
)为4326,这是
欧洲石油调查组
(EPSG)
使用的ID
。
DEFINITION
预测和地理SRS
的
值
分别
以
PROJCS
和
开头
GEOGCS
。
SRID 0的定义是特殊的,并且具有空
DEFINITION
值。
以下查询根据值确定表中有多少条目
ST_SPATIAL_REFERENCE_SYSTEMS
对应于投影,地理和其他SRS
DEFINITION
:
MySQL的>SELECTCOUNT(*),CASE LEFT(DEFINITION, 6)WHEN 'PROJCS' THEN 'Projected'WHEN 'GEOGCS' THEN 'Geographic'ELSE 'Other'END AS SRS_TYPEFROM ST_SPATIAL_REFERENCE_SYSTEMSGROUP BY SRS_TYPE;+ ---------- + ------------ + | COUNT(*)| SRS_TYPE | + ---------- + ------------ + | 1 | 其他| | 4668 | 预计| | 483 | 地理| + ---------- + ------------ +
为了能够操作存储在数据字典中的SRS条目,MySQL提供了以下SQL语句:
CREATE
SPATIAL REFERENCE
SYSTEM
:请参见
第13.1.19节“创建空间参考系统语法”
。
此声明的说明包括有关SRS组件的其他信息。
DROP
SPATIAL REFERENCE SYSTEM
:请参见
第13.1.31节“DROP空间参考系统语法”
。
该
ST_UNITS_OF_MEASURE
表(从MySQL 8.0.14开始提供)提供有关该
ST_Distance()
函数
可接受单位的信息
。
该
ST_UNITS_OF_MEASURE
表包含以下列:
UNIT_NAME
单位的名称。
UNIT_TYPE
单位类型(例如
LINEAR
)。
CONVERSION_FACTOR
用于内部计算的转换因子。
DESCRIPTION
单位的描述。
该
TABLES
表提供有关数据库中表的信息。
TABLES
表示表统计信息的
列
包含缓存值。
该
information_schema_stats_expiry
系统变量定义缓存表统计到期之前的一段时间。
默认值为86400秒(24小时)。
如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时会从存储引擎中检索统计信息。
要随时更新给定表的缓存值,请使用
ANALYZE
TABLE
。
要始终直接从存储引擎检索最新统计信息,请设置
information_schema_stats_expiry
为
0
。
有关更多信息,请参见
第8.2.3节“优化INFORMATION_SCHEMA查询”
。
如果
innodb_read_only
启用
了
系统变量,则
ANALYZE
TABLE
可能会失败,因为它无法更新数据字典中使用的统计表
InnoDB
。
对于
ANALYZE
TABLE
更新密钥分发的操作,即使操作更新表本身(例如,如果它是
MyISAM
表)
,也可能发生故障
。
要获取更新的分布统计信息,请设置
information_schema_stats_expiry=0
。
该
TABLES
表包含以下列:
TABLE_CATALOG
表所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
表所属的模式(数据库)的名称。
TABLE_NAME
表的名称。
TABLE_TYPE
BASE TABLE
用于表格,
VIEW
用于视图或
SYSTEM
VIEW
用于
表格
INFORMATION_SCHEMA
表格。
该
TABLES
表未列出
TEMPORARY
表格。
ENGINE
表的存储引擎。 请参见 第15章, InnoDB存储引擎 和 第16章, 备用存储引擎 。
对于分区表,
ENGINE
显示所有分区使用的存储引擎的名称。
VERSION
此列未使用。
通过删除
.frm
MySQL 8.0中
的
文件,此列现在报告硬编码值
10
,这是
.frm
MySQL 5.7中使用
的最后一个
文件版本。
ROW_FORMAT
该行的存储格式(
Fixed
,
Dynamic
,
Compressed
,
Redundant
,
Compact
)。
对于
MyISAM
表格,
Dynamic
对应
myisamchk -dvv
报告的内容
Packed
。
TABLE_ROWS
行数。
某些存储引擎(例如
MyISAM
)存储确切的计数。
对于其他存储引擎,例如
InnoDB
,该值是近似值,并且可以与实际值相差多达40%至50%。
在这种情况下,用于
SELECT
COUNT(*)
获得准确的计数。
TABLE_ROWS
是
NULL
对
INFORMATION_SCHEMA
表。
AVG_ROW_LENGTH
平均行长。
DATA_LENGTH
For
MyISAM
,
DATA_LENGTH
是数据文件的长度,以字节为单位。
For
InnoDB
,
DATA_LENGTH
是为聚簇索引分配的大致内存量,以字节为单位。
具体来说,它是聚集索引大小(以页为单位)乘以
InnoDB
页面大小。
有关其他存储引擎的信息,请参阅本节末尾的注释。
MAX_DATA_LENGTH
对于
MyISAM
,
MAX_DATA_LENGTH
是数据文件的最大长度。
这是在给定数据指针大小的情况下可以存储在表中的数据的总字节数。
未使用
InnoDB
。
有关其他存储引擎的信息,请参阅本节末尾的注释。
INDEX_LENGTH
For
MyISAM
,
INDEX_LENGTH
是索引文件的长度,以字节为单位。
For
InnoDB
,
INDEX_LENGTH
是为非聚簇索引分配的大致内存量,以字节为单位。
具体来说,它是非聚集索引大小(以页为单位)乘以
InnoDB
页面大小
的总和
。
有关其他存储引擎的信息,请参阅本节末尾的注释。
DATA_FREE
已分配但未使用的字节数。
InnoDB
tables报告表所属的表空间的可用空间。
对于位于共享表空间中的表,这是共享表空间的可用空间。
如果您使用多个表空间并且该表具有自己的表空间,则可用空间仅用于该表。
可用空间表示完全空闲的区域中的字节数减去安全边界。
即使可用空间显示为0,只要不需要分配新的扩展区,就可以插入行。
对于NDB Cluster,
DATA_FREE
显示磁盘上为磁盘数据表或磁盘分配但未使用的空间。
(内存数据资源使用情况由报告
DATA_LENGTH
列
。)
对于分区表,此值仅为估计值,可能不完全正确。
在这种情况下获取此信息的更准确方法是查询
INFORMATION_SCHEMA
PARTITIONS
表,如下例所示:
SELECT SUM(DATA_FREE)
来自INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_SCHEMA ='mydb'
AND TABLE_NAME ='mytable';
有关更多信息,请参见 第25.17节“INFORMATION_SCHEMA PARTITIONS表” 。
AUTO_INCREMENT
下一个
AUTO_INCREMENT
值。
CREATE_TIME
创建表时。
UPDATE_TIME
上次更新数据文件时。
对于某些存储引擎,此值为
NULL
。
例如,
InnoDB
在其
系统表空间中
存储多个表,
并且数据文件时间戳不适用。
即使
文件每次表
模式与每个
InnoDB
在单独的表
.ibd
文件,
改变缓冲
可以延缓写入到数据文件,因此,文件的修改时间是从最后插入的时间不同,更新或删除。
对于
MyISAM
,使用数据文件时间戳;
但是,在Windows上,更新不会更新时间戳,因此值不准确。
UPDATE_TIME
显示最后一个
UPDATE
,
INSERT
或
DELETE
在
InnoDB
未分区的表上
执行
的时间戳值
。
对于MVCC,时间戳值反映
COMMIT
时间,该时间被视为上次更新时间。
重新启动服务器或从
InnoDB
数据字典缓存中
逐出表时,时间戳不会保留
。
CHECK_TIME
上次检查表时。
此时并非所有存储引擎都更新,在这种情况下,值始终为
NULL
。
对于分区
InnoDB
表,
CHECK_TIME
总是如此
NULL
。
TABLE_COLLATION
表默认排序规则。 输出未显式列出表默认字符集,但排序规则名称以字符集名称开头。
CHECKSUM
实时校验和值(如果有)。
CREATE_OPTIONS
使用的额外选项
CREATE
TABLE
。
CREATE
TABLE
保留执行
时指定的原始选项
。
报告的信息可能与当前表设置和选项不同。
对于
InnoDB
表格,显示实际
ROW_FORMAT
和
KEY_BLOCK_SIZE
选项。
在MySQL 8.0之前,
CREATE_OPTIONS
显示最初提供的
ROW_FORMAT
和
KEY_BLOCK_SIZE
。
有关更多信息,请参见
第13.1.20节“CREATE TABLE语法”
。
CREATE_OPTIONS
显示
partitioned
分区表。
在MySQL 8.0.16之前,它还显示了
ENCRYPTION
为在每个表文件表空间中创建的表指定
的
子句。
从MySQL 8.0.16开始,如果表已加密或指定的加密与架构加密不同,它仅显示每表文件表空间的加密子句。
对于在通用表空间中创建的表,不显示加密子句。
要识别加密的每表和一般表空间,请查询该
列。
INNODB_TABLESPACES
ENCRYPTION
TABLE_COMMENT
创建表时使用的注释(或有关MySQL无法访问表信息的信息)。
对于
NDB
表,此语句的输出显示
AVG_ROW_LENGTH
和
DATA_LENGTH
列的
适当值,但
BLOB
不考虑列。
对于
NDB
表格,仅
DATA_LENGTH
包括存储在主存储器中的数据;
在
MAX_DATA_LENGTH
与
DATA_FREE
列应用到磁盘的数据。
对于NDB Cluster Disk Data表,
MAX_DATA_LENGTH
显示为磁盘数据表或片段的磁盘部分分配的空间。
(
DATA_LENGTH
列
报告内存数据资源使用情况
。)
对于
MEMORY
表,
DATA_LENGTH
,
MAX_DATA_LENGTH
,和
INDEX_LENGTH
值近似分配内存的实际数量。
分配算法大量保留存储器以减少分配操作的数量。
对于视图,大多数
TABLES
列为0或
NULL
除了
TABLE_NAME
表示视图名称,
CREATE_TIME
表示创建时间,并
TABLE_COMMENT
说
VIEW
。
表信息也可以从
SHOW
TABLE STATUS
和
SHOW
TABLES
语句中获得。
请参见
第13.7.6.36节“SHOW TABLE STATUS语法”
和
第13.7.6.37节“SHOW TABLES语法”
。
以下陈述是等效的:
选择
TABLE_NAME,ENGINE,VERSION,ROW_FORMAT,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
来自INFORMATION_SCHEMA.TABLES
WHERE table_schema =' db_name'
[AND table_name LIKE' wild']
显示表状态
来自db_name
[LIKE' wild']
以下陈述是等效的:
选择 TABLE_NAME,TABLE_TYPE 来自INFORMATION_SCHEMA.TABLES WHERE table_schema ='db_name' [AND table_name LIKE'wild'] 显示完整的表格 来自db_name[LIKE'wild']
该
TABLESPACES
表提供有关活动MySQL Cluster表空间的信息。
该
TABLESPACES
表包含以下列:
TABLESPACE_NAME
表空间的名称。
ENGINE
使用表空间的存储引擎的名称。
TABLESPACE_TYPE
表空间类型。
LOGFILE_GROUP_NAME
分配给表空间的日志文件组的名称。
EXTENT_SIZE
属于表空间的文件使用的扩展区的大小(以字节为单位)。
AUTOEXTEND_SIZE
没用过。
MAXIMUM_SIZE
没用过。
NODEGROUP_ID
没用过。
TABLESPACE_COMMENT
没用过。
该
TABLESPACES
表是一个非标准
INFORMATION_SCHEMA
表。
该
TABLESPACES
表未提供有关
InnoDB
表空间的
信息
。
有关
InnoDB
表空间元数据,请参阅
INFORMATION_SCHEMA
INNODB_TABLESPACES
和
INNODB_DATAFILES
表。
该
FILES
表还提供了
InnoDB
表空间的
元数据
。
该
TABLE_CONSTRAINTS
表描述了哪些表具有约束。
该
TABLE_CONSTRAINTS
表包含以下列:
CONSTRAINT_CATALOG
约束所属目录的名称。
这个值总是如此
def
。
CONSTRAINT_SCHEMA
约束所属的模式(数据库)的名称。
TABLE_SCHEMA
表所属的模式(数据库)的名称。
TABLE_NAME
表的名称。
该
CONSTRAINT_TYPE
约束的类型。
该值可以是
UNIQUE
,
PRIMARY KEY
,
FOREIGN KEY
,或(如MySQL的8.0.16的)
CHECK
。
这是一个
CHAR
(非
ENUM
)专栏。
该
UNIQUE
和
PRIMARY
KEY
信息是一样的,你从一开始什么
Key_name
在输出列从
SHOW
INDEX
当
Non_unique
列
0
。
ENFORCED
对于
CHECK
约束,值是
YES
或
NO
表示是否强制执行约束。
对于其他约束,值始终为
YES
。
此列已添加到MySQL 8.0.16中。
该
TABLE_PRIVILEGES
表提供有关表权限的信息。
它从
mysql.tables_priv
系统表中
获取其值
。
该
TABLE_PRIVILEGES
表包含以下列:
GRANTEE
授予权限的帐户的名称,
格式为。
'
user_name'@'host_name'
TABLE_CATALOG
表所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
表所属的模式(数据库)的名称。
TABLE_NAME
表的名称。
PRIVILEGE_TYPE
授予的特权。 该值可以是可以在表级别授予的任何权限; 请参见 第13.7.1.6节“GRANT语法” 。 每行列出一个权限,因此被授权者拥有每个表权限一行。
IS_GRANTABLE
YES
如果用户有
GRANT OPTION
权限,
NO
否则。
输出未
GRANT OPTION
列为单独的行
PRIVILEGE_TYPE='GRANT OPTION'
。
该
TABLE_PRIVILEGES
表是一个非标准
INFORMATION_SCHEMA
表。
以下陈述 不 相同:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES 显示奖学金......
该
TRIGGERS
表提供有关触发器的信息。
要查看有关表的触发器的信息,您必须具有
TRIGGER
该表
的
权限。
该
TRIGGERS
表包含以下列:
TRIGGER_CATALOG
触发器所属目录的名称。
这个值总是如此
def
。
TRIGGER_SCHEMA
触发器所属的架构(数据库)的名称。
TRIGGER_NAME
触发器的名称。
EVENT_MANIPULATION
触发事件。
这是触发器激活的关联表上的操作类型。
值为
INSERT
(插入了一行),
DELETE
(删除了一行)或
UPDATE
(一行被修改)。
EVENT_OBJECT_CATALOG
,
EVENT_OBJECT_SCHEMA
和
EVENT_OBJECT_TABLE
如
第24.3节“使用触发器”中所述
,每个触发器只与一个表相关联。
这些列分别表示此表所在的目录和模式(数据库)以及表名。
该
EVENT_OBJECT_CATALOG
值始终
def
。
ACTION_ORDER
触发器操作的序号位置在同一个表上的触发器列表中具有相同的
值
EVENT_MANIPULATION
和
ACTION_TIMING
值。
ACTION_CONDITION
这个值总是如此
NULL
。
ACTION_STATEMENT
触发体; 也就是说,触发器激活时执行的语句。 本文使用UTF-8编码。
ACTION_ORIENTATION
这个值总是如此
ROW
。
ACTION_TIMING
触发器在触发事件之前还是之后激活。
值是
BEFORE
或
AFTER
。
ACTION_REFERENCE_OLD_TABLE
这个值总是如此
NULL
。
ACTION_REFERENCE_NEW_TABLE
这个值总是如此
NULL
。
ACTION_REFERENCE_OLD_ROW
和
ACTION_REFERENCE_NEW_ROW
分别是旧的和新的列标识符。
该
ACTION_REFERENCE_OLD_ROW
值总是
OLD
和
ACTION_REFERENCE_NEW_ROW
值始终
NEW
。
CREATED
创建触发器的日期和时间。
这是
TIMESTAMP(2)
触发器
的
值(以百分之几秒为单位)。
SQL_MODE
创建触发器时生效的SQL模式,以及触发器执行的模式。 有关允许的值,请参见 第5.1.11节“服务器SQL模式” 。
DEFINER
以
格式
创建触发器的用户的帐户
。
'
user_name'@'host_name'
CHARACTER_SET_CLIENT
character_set_client
创建触发器时系统变量
的会话值
。
COLLATION_CONNECTION
collation_connection
创建触发器时系统变量
的会话值
。
DATABASE_COLLATION
与触发器关联的数据库的排序规则。
以下示例使用
第24.3节“使用触发器”中
ins_sum
定义的
触发器
:
MySQL的>SELECT * FROM INFORMATION_SCHEMA.TRIGGERSWHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G*************************** 1。排******************** ******* TRIGGER_CATALOG:def TRIGGER_SCHEMA:测试 TRIGGER_NAME:ins_sum EVENT_MANIPULATION:INSERT EVENT_OBJECT_CATALOG:def EVENT_OBJECT_SCHEMA:测试 EVENT_OBJECT_TABLE:帐户 ACTION_ORDER:1 ACTION_CONDITION:NULL ACTION_STATEMENT:SET @sum = @sum + NEW.amount ACTION_ORIENTATION:行 ACTION_TIMING:之前 ACTION_REFERENCE_OLD_TABLE:NULL ACTION_REFERENCE_NEW_TABLE:NULL ACTION_REFERENCE_OLD_ROW:OLD ACTION_REFERENCE_NEW_ROW:新的 创建时间:2018-08-08 10:10:12.61 SQL_MODE:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION DEFINER:我@ localhost CHARACTER_SET_CLIENT:utf8mb4 COLLATION_CONNECTION:utf8mb4_0900_ai_ci DATABASE_COLLATION:utf8mb4_0900_ai_ci
SHOW TRIGGERS
声明中
还提供了触发器信息
。
请参见
第13.7.6.38节“显示触发器语法”
。
该
USER_PRIVILEGES
表提供有关全局特权的信息。
它从
mysql.user
系统表中
获取其值
。
该
USER_PRIVILEGES
表包含以下列:
GRANTEE
授予权限的帐户的名称,
格式为。
'
user_name'@'host_name'
TABLE_CATALOG
目录的名称。
这个值总是如此
def
。
PRIVILEGE_TYPE
授予的特权。 该值可以是可在全局级别授予的任何特权; 请参见 第13.7.1.6节“GRANT语法” 。 每行列出一个权限,因此被授权者拥有的每个全局权限都有一行。
IS_GRANTABLE
YES
如果用户有
GRANT OPTION
权限,
NO
否则。
输出未
GRANT OPTION
列为单独的行
PRIVILEGE_TYPE='GRANT OPTION'
。
该
USER_PRIVILEGES
表是一个非标准
INFORMATION_SCHEMA
表。
以下陈述 不 相同:
SELECT ... FROM INFORMATION_SCHEMA.USER_PRIVILEGES 显示奖学金......
该
VIEWS
表提供有关数据库中视图的信息。
您必须有权
SHOW VIEW
访问此表。
该
VIEWS
表包含以下列:
TABLE_CATALOG
视图所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
视图所属的架构(数据库)的名称。
TABLE_NAME
视图的名称。
VIEW_DEFINITION
该
SELECT
提供该视图的定义语句。
此列包含您在
生成
的
Create Table
列中
看到的大部分内容
SHOW
CREATE VIEW
。
在之前
SELECT
略过单词并跳过单词
WITH CHECK OPTION
。
假设原始陈述是:
创建视图与AS SELECT s2,s1 FROM t 在哪里s1> 5 ORDER BY s1 WITH CHECK OPTION;
然后视图定义如下所示:
SELECT s2,s1 FROM t WHERE s1> 5 ORDER BY s1
CHECK_OPTION
CHECK_OPTION
属性
的值
。
值中的一个
NONE
,
CASCADE
或
LOCAL
。
IS_UPDATABLE
MySQL在
CREATE
VIEW
时间
设置了一个标志,称为视图可更新性标志
。
YES
如果
UPDATE
和
DELETE
(和类似操作)对视图合法,则
该标志设置为
(true)
。
否则,该标志设置为
NO
(false)。
表中
的
IS_UPDATABLE
列
VIEWS
显示此标志的状态。
这意味着服务器始终知道视图是否可更新。
如果视图是不可更新的,这样的语句
UPDATE
,
DELETE
以及
INSERT
是非法的,将被拒绝。
(即使视图是可更新的,也可能无法插入;有关详细信息,请参见
第24.5.3节“可更新和可插入视图”
。)
DEFINER
以
格式
创建视图的用户的帐户
。
'
user_name'@'host_name'
SECURITY_TYPE
视图
SQL SECURITY
特征。
值是
DEFINER
或之一
INVOKER
。
CHARACTER_SET_CLIENT
character_set_client
创建视图时系统变量
的会话值
。
COLLATION_CONNECTION
collation_connection
创建视图时系统变量
的会话值
。
MySQL允许不同的
sql_mode
设置告诉服务器要支持的SQL语法的类型。
例如,您可以使用
ANSI
SQL模式来确保MySQL
||
在查询中
正确解释标准SQL连接运算符double bar(
)。
如果您随后创建了一个连接项目的视图,您可能会担心将
sql_mode
设置
更改为
不同的值
ANSI
可能会导致视图无效。
但这种情况并非如此。
无论你如何编写视图定义,MySQL总是以规范的形式存储它。
下面是一个示例,显示服务器如何将双条串联运算符更改为
CONCAT()
函数:
MySQL的>SET sql_mode = 'ANSI';查询正常,0行受影响(0.00秒) MySQL的>CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;查询正常,0行受影响(0.00秒) MySQL的>SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWSWHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';+ ---------------------------------- + | VIEW_DEFINITION | + ---------------------------------- + | 选择concat('a','b')AS`col1` | + ---------------------------------- + 1排(0.00秒)
以规范形式存储视图定义的优点是,稍后对值的更改
sql_mode
不会影响视图的结果。
但是,另一个后果是
SELECT
服务器从定义中删除
之前的注释
。
该
VIEW_ROUTINE_USAGE
表(从MySQL 8.0.13开始提供)提供对视图定义中使用的存储函数的信息的访问。
该表未列出有关定义中使用的内置SQL函数或用户定义函数(UDF)的信息。
您只能查看您具有某些权限的视图的信息,并且仅针对您具有某些权限的函数。
该
VIEW_ROUTINE_USAGE
表包含以下列:
TABLE_CATALOG
视图所属目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
视图所属的架构(数据库)的名称。
TABLE_NAME
视图的名称。
SPECIFIC_CATALOG
视图定义中使用的函数所属的目录的名称。
这个值总是如此
def
。
SPECIFIC_SCHEMA
视图定义中使用的函数所属的模式(数据库)的名称。
SPECIFIC_NAME
视图定义中使用的函数的名称。
该
VIEW_TABLE_USAGE
表(从MySQL 8.0.13开始提供)提供对视图定义中使用的表和视图的信息的访问。
您只能查看您具有某些权限的视图的信息,并且仅针对您具有某些权限的表。
该
VIEW_TABLE_USAGE
表包含以下列:
VIEW_CATALOG
视图所属目录的名称。
这个值总是如此
def
。
VIEW_SCHEMA
视图所属的架构(数据库)的名称。
VIEW_NAME
视图的名称。
TABLE_CATALOG
视图定义中使用的表或视图所属的目录的名称。
这个值总是如此
def
。
TABLE_SCHEMA
视图定义中使用的表或视图所属的模式(数据库)的名称。
TABLE_NAME
视图定义中使用的表或视图的名称。
本节提供表的表定义
InnoDB INFORMATION_SCHEMA
。
有关相关信息和示例,请参见
第15.14节“InnoDB INFORMATION_SCHEMA表”
。
InnoDB INFORMATION_SCHEMA
表可用于监视正在进行的
InnoDB
活动,在问题发生之前检测低效率,或解决性能和容量问题。
随着您的数据库变得越来越大,越来越繁忙,在硬件容量的限制下运行,您可以监视和调整这些方面,以保持数据库平稳运行。
该
INNODB_BUFFER_PAGE
表列出了每个信息
页
的
InnoDB
缓冲池
。
有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表” 。
查询
INNODB_BUFFER_PAGE
表可能会影响性能。
除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询此表。
为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。
该
INNODB_BUFFER_PAGE
表包含以下列:
POOL_ID
缓冲池ID。 这是区分多个缓冲池实例的标识符。
BLOCK_ID
缓冲池块ID。
SPACE
表空间ID;
与...相同的价值
INNODB_TABLES.SPACE
。
PAGE_NUMBER
页码。
PAGE_TYPE
页面类型。 下表显示了允许的值。
表25.1 INNODB_BUFFER_PAGE.PAGE_TYPE值
| 页面类型 | 描述 |
|---|---|
ALLOCATED |
新分配的页面 |
BLOB |
未压缩的BLOB页面 |
COMPRESSED_BLOB2 |
后续comp BLOB页面 |
COMPRESSED_BLOB |
第一个压缩的BLOB页面 |
ENCRYPTED_RTREE |
加密的R树 |
EXTENT_DESCRIPTOR |
范围描述符页面 |
FILE_SPACE_HEADER |
文件空间标题 |
FIL_PAGE_TYPE_UNUSED |
没用过 |
IBUF_BITMAP |
插入缓冲区位图 |
IBUF_FREE_LIST |
插入缓冲区空闲列表 |
IBUF_INDEX |
插入缓冲区索引 |
INDEX |
B树节点 |
INODE |
索引节点 |
LOB_DATA |
未压缩的LOB数据 |
LOB_FIRST |
未压缩LOB的第一页 |
LOB_INDEX |
未压缩的LOB索引 |
PAGE_IO_COMPRESSED |
压缩页面 |
PAGE_IO_COMPRESSED_ENCRYPTED |
压缩和加密页面 |
PAGE_IO_ENCRYPTED |
加密页面 |
RSEG_ARRAY |
回滚段数组 |
RTREE_INDEX |
R树索引 |
SDI_BLOB |
未压缩的SDI BLOB |
SDI_COMPRESSED_BLOB |
压缩的SDI BLOB |
SDI_INDEX |
SDI指数 |
SYSTEM |
系统页面 |
TRX_SYSTEM |
交易系统数据 |
UNDO_LOG |
撤消日志页面 |
UNKNOWN |
未知 |
ZLOB_DATA |
压缩的LOB数据 |
ZLOB_FIRST |
压缩LOB的第一页 |
ZLOB_FRAG |
压缩的LOB片段 |
ZLOB_FRAG_ENTRY |
压缩LOB片段索引 |
ZLOB_INDEX |
压缩LOB指数 |
FLUSH_TYPE
冲洗类型。
FIX_COUNT
缓冲池中使用此块的线程数。 当为零时,该区块有资格被驱逐。
IS_HASHED
是否已在此页面上构建哈希索引。
NEWEST_MODIFICATION
最新修改的日志序列号。
OLDEST_MODIFICATION
最旧修改的日志序列号。
ACCESS_TIME
用于判断页面首次访问时间的抽象数字。
TABLE_NAME
页面所属表的名称。
此列仅适用于
PAGE_TYPE
值为的
页面
INDEX
。
INDEX_NAME
页面所属索引的名称。
这可以是聚簇索引或辅助索引的名称。
此列仅适用于
PAGE_TYPE
值为的
页面
INDEX
。
NUMBER_RECORDS
页面中的记录数。
DATA_SIZE
记录大小的总和。
此列仅适用于
PAGE_TYPE
值为的
页面
INDEX
。
COMPRESSED_SIZE
压缩的页面大小。
NULL
对于未压缩的页面。
PAGE_STATE
页面状态。 下表显示了允许的值。
表25.2 INNODB_BUFFER_PAGE.PAGE_STATE值
| 页面状态 | 描述 |
|---|---|
FILE_PAGE |
缓冲的文件页面 |
MEMORY |
包含主内存对象 |
NOT_USED |
在免费列表中 |
NULL |
清理压缩页面,刷新列表中的压缩页面,用作缓冲池监视标记的页面 |
READY_FOR_USE |
一个免费的页面 |
REMOVE_HASH |
在放入空闲列表之前应删除散列索引 |
IO_FIX
此页面是否有任何I / O待处理:
IO_NONE
=没有挂起的I / O,
IO_READ
=读取挂起,
IO_WRITE
=写入挂起。
IS_OLD
块是否在LRU列表中的旧块的子列表中。
FREE_PAGE_CLOCK
freed_page_clock
当块最后放置在LRU列表的头部时
,
计数器
的值
。
该
freed_page_clock
计数器跟踪从LRU列表的末尾去除的块数。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE LIMIT 1\G
*************************** 1。排******************** *******
POOL_ID:0
BLOCK_ID:0
空间:97
PAGE_NUMBER:2473
PAGE_TYPE:INDEX
FLUSH_TYPE:1
FIX_COUNT:0
IS_HASHED:是的
NEWEST_MODIFICATION:733855581
OLDEST_MODIFICATION:0
ACCESS_TIME:3378385672
TABLE_NAME:`employees``salaries`
INDEX_NAME:PRIMARY
NUMBER_RECORDS:468
DATA_SIZE:14976
COMPRESSED_SIZE:0
PAGE_STATE:FILE_PAGE
IO_FIX:IO_NONE
IS_OLD:是的
FREE_PAGE_CLOCK:66
此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
删除表,表行,分区或索引时,关联页将保留在缓冲池中,直到其他数据需要空间。
该
INNODB_BUFFER_PAGE
表报告有关这些页面的信息,直到它们从缓冲池中逐出。
有关
InnoDB
管理缓冲池数据的
更多信息
,请参见
第15.5.1节“缓冲池”
。
该
INNODB_BUFFER_PAGE_LRU
表提供有关
InnoDB
缓冲池中
页面的信息
;
特别是,如何在LRU列表中对它们进行排序,以确定哪些页面
在缓冲池变满时从缓冲池中
逐出
。
该
INNODB_BUFFER_PAGE_LRU
表与表具有相同的列
INNODB_BUFFER_PAGE
,除了
INNODB_BUFFER_PAGE_LRU
表具有
LRU_POSITION
和
COMPRESSED
列而不是
列
BLOCK_ID
和
PAGE_STATE
列。
有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表” 。
查询
INNODB_BUFFER_PAGE_LRU
表可能会影响性能。
除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询此表。
为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。
该
INNODB_BUFFER_PAGE_LRU
表包含以下列:
POOL_ID
缓冲池ID。 这是区分多个缓冲池实例的标识符。
LRU_POSITION
页面在LRU列表中的位置。
SPACE
表空间ID;
与...相同的价值
INNODB_TABLES.SPACE
。
PAGE_NUMBER
页码。
PAGE_TYPE
页面类型。 下表显示了允许的值。
表25.3 INNODB_BUFFER_PAGE_LRU.PAGE_TYPE值
| 页面类型 | 描述 |
|---|---|
ALLOCATED |
新分配的页面 |
BLOB |
未压缩的BLOB页面 |
COMPRESSED_BLOB2 |
后续comp BLOB页面 |
COMPRESSED_BLOB |
第一个压缩的BLOB页面 |
ENCRYPTED_RTREE |
加密的R树 |
EXTENT_DESCRIPTOR |
范围描述符页面 |
FILE_SPACE_HEADER |
文件空间标题 |
FIL_PAGE_TYPE_UNUSED |
没用过 |
IBUF_BITMAP |
插入缓冲区位图 |
IBUF_FREE_LIST |
插入缓冲区空闲列表 |
IBUF_INDEX |
插入缓冲区索引 |
INDEX |
B树节点 |
INODE |
索引节点 |
LOB_DATA |
未压缩的LOB数据 |
LOB_FIRST |
未压缩LOB的第一页 |
LOB_INDEX |
未压缩的LOB索引 |
PAGE_IO_COMPRESSED |
压缩页面 |
PAGE_IO_COMPRESSED_ENCRYPTED |
压缩和加密页面 |
PAGE_IO_ENCRYPTED |
加密页面 |
RSEG_ARRAY |
回滚段数组 |
RTREE_INDEX |
R树索引 |
SDI_BLOB |
未压缩的SDI BLOB |
SDI_COMPRESSED_BLOB |
压缩的SDI BLOB |
SDI_INDEX |
SDI指数 |
SYSTEM |
系统页面 |
TRX_SYSTEM |
交易系统数据 |
UNDO_LOG |
撤消日志页面 |
UNKNOWN |
未知 |
ZLOB_DATA |
压缩的LOB数据 |
ZLOB_FIRST |
压缩LOB的第一页 |
ZLOB_FRAG |
压缩的LOB片段 |
ZLOB_FRAG_ENTRY |
压缩LOB片段索引 |
ZLOB_INDEX |
压缩LOB指数 |
FLUSH_TYPE
冲洗类型。
FIX_COUNT
缓冲池中使用此块的线程数。 当为零时,该区块有资格被驱逐。
IS_HASHED
是否已在此页面上构建哈希索引。
NEWEST_MODIFICATION
最新修改的日志序列号。
OLDEST_MODIFICATION
最旧修改的日志序列号。
ACCESS_TIME
用于判断页面首次访问时间的抽象数字。
TABLE_NAME
页面所属表的名称。
此列仅适用于
PAGE_TYPE
值为的
页面
INDEX
。
INDEX_NAME
页面所属索引的名称。
这可以是聚簇索引或辅助索引的名称。
此列仅适用于
PAGE_TYPE
值为的
页面
INDEX
。
NUMBER_RECORDS
页面中的记录数。
DATA_SIZE
记录大小的总和。
此列仅适用于
PAGE_TYPE
值为的
页面
INDEX
。
COMPRESSED_SIZE
压缩的页面大小。
NULL
对于未压缩的页面。
COMPRESSED
页面是否被压缩。
IO_FIX
此页面是否有任何I / O待处理:
IO_NONE
=没有挂起的I / O,
IO_READ
=读取挂起,
IO_WRITE
=写入挂起。
IS_OLD
块是否在LRU列表中的旧块的子列表中。
FREE_PAGE_CLOCK
freed_page_clock
当块最后放置在LRU列表的头部时
,
计数器
的值
。
该
freed_page_clock
计数器跟踪从LRU列表的末尾去除的块数。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1。排******************** *******
POOL_ID:0
LRU_POSITION:0
空间:97
PAGE_NUMBER:1984
PAGE_TYPE:INDEX
FLUSH_TYPE:1
FIX_COUNT:0
IS_HASHED:是的
NEWEST_MODIFICATION:719490396
OLDEST_MODIFICATION:0
ACCESS_TIME:3378383796
TABLE_NAME:`employees``salaries`
INDEX_NAME:PRIMARY
NUMBER_RECORDS:468
DATA_SIZE:14976
COMPRESSED_SIZE:0
压缩:没有
IO_FIX:IO_NONE
IS_OLD:是的
FREE_PAGE_CLOCK:0
此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
查询此表可能需要MySQL分配大块连续内存,超过缓冲池中活动页数的64字节。 此分配可能会导致内存不足错误,尤其是对于具有多千兆字节缓冲池的系统。
查询此表需要MySQL在遍历LRU列表时锁定表示缓冲池的数据结构,这会降低并发性,尤其是对于具有多GB缓冲池的系统。
删除表,表行,分区或索引时,关联页将保留在缓冲池中,直到其他数据需要空间。
该
INNODB_BUFFER_PAGE_LRU
表报告有关这些页面的信息,直到它们从缓冲池中逐出。
有关
InnoDB
管理缓冲池数据的
更多信息
,请参见
第15.5.1节“缓冲池”
。
该
INNODB_BUFFER_POOL_STATS
表提供了
SHOW
ENGINE INNODB
STATUS
输出
中提供的大量相同的缓冲池信息
。
使用
InnoDB
缓冲池
服务器状态变量
也可以获得许多相同的信息
。
在缓冲池中创建页面 “ 年轻 ” 或 “ 不年轻 ” 的想法 是指 在缓冲池数据结构的头部和尾部 的 子列表 之间传送它们 。 “ 年轻 ”的 页面 需要更长的时间才能从缓冲池中老化,而 “ 不年轻 ”的 页面 会更加接近 驱逐 点 。
有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表” 。
该
INNODB_BUFFER_POOL_STATS
表包含以下列:
POOL_ID
缓冲池ID。 这是区分多个缓冲池实例的标识符。
POOL_SIZE
InnoDB
页面中
的
缓冲池大小。
FREE_BUFFERS
InnoDB
缓冲池中
的空闲页数
。
DATABASE_PAGES
InnoDB
包含数据
的
缓冲池中
的页数
。
此数字包括脏页面和干净页面。
OLD_DATABASE_PAGES
old
缓冲池子列表中
的页数
。
MODIFIED_DATABASE_PAGES
修改(脏)数据库页面的数量。
PENDING_DECOMPRESS
待解压缩的页数。
PENDING_READS
待处理读数。
PENDING_FLUSH_LRU
LRU中待刷新的页数。
PENDING_FLUSH_LIST
刷新列表中待刷新的页数。
PAGES_MADE_YOUNG
年轻的页数。
PAGES_NOT_MADE_YOUNG
不年轻的页数。
PAGES_MADE_YOUNG_RATE
每秒生成的页数(自上次打印输出/时间过后页面变得年轻)。
PAGES_MADE_NOT_YOUNG_RATE
每秒未生成的页数(自上次打印输出/经过时间以来未打印的页数)。
NUMBER_PAGES_READ
读取的页数。
NUMBER_PAGES_CREATED
创建的页数。
NUMBER_PAGES_WRITTEN
写的页数。
PAGES_READ_RATE
每秒读取的页数(自上次打印输出/经过时间以来读取的页数)。
PAGES_CREATE_RATE
每秒创建的页数(自上次打印输出/时间过后创建的页数)。
PAGES_WRITTEN_RATE
每秒写入的页数(自上次打印输出/经过时间以来写入的页数)。
NUMBER_PAGES_GET
逻辑读取请求的数量。
HIT_RATE
缓冲池命中率。
YOUNG_MAKE_PER_THOUSAND_GETS
每千人年轻人获得的页数。
NOT_YOUNG_MAKE_PER_THOUSAND_GETS
千分之一的页数不是千分之一。
NUMBER_PAGES_READ_AHEAD
提前读取的页数。
NUMBER_READ_AHEAD_EVICTED
InnoDB
由预读后台线程
读入
缓冲池
的页面数,这些页面
随后在没有被查询访问的情况下被逐出。
READ_AHEAD_RATE
每秒预读速率(自上次打印输出/经过时间以来预读的页数)。
READ_AHEAD_EVICTED_RATE
每秒不访问的预读页数(自上次打印输出/时间过后未读取的预读页)。
LRU_IO_TOTAL
总LRU I / O.
LRU_IO_CURRENT
当前间隔的LRU I / O.
UNCOMPRESS_TOTAL
解压缩的总页数。
UNCOMPRESS_CURRENT
在当前间隔中解压缩的页数。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS\G
*************************** 1。排******************** *******
POOL_ID:0
POOL_SIZE:8192
FREE_BUFFERS:1
DATABASE_PAGES:8085
OLD_DATABASE_PAGES:2964
MODIFIED_DATABASE_PAGES:0
PENDING_DECOMPRESS:0
PENDING_READS:0
PENDING_FLUSH_LRU:0
PENDING_FLUSH_LIST:0
PAGES_MADE_YOUNG:22821
PAGES_NOT_MADE_YOUNG:3544303
PAGES_MADE_YOUNG_RATE:357.62602199870594
PAGES_MADE_NOT_YOUNG_RATE:0
NUMBER_PAGES_READ:2389
NUMBER_PAGES_CREATED:12385
NUMBER_PAGES_WRITTEN:13111
PAGES_READ_RATE:0
PAGES_CREATE_RATE:0
PAGES_WRITTEN_RATE:0
NUMBER_PAGES_GET:33322210
HIT_RATE:1000
YOUNG_MAKE_PER_THOUSAND_GETS:18
NOT_YOUNG_MAKE_PER_THOUSAND_GETS:0
NUMBER_PAGES_READ_AHEAD:2024
NUMBER_READ_AHEAD_EVICTED:0
READ_AHEAD_RATE:0
READ_AHEAD_EVICTED_RATE:0
LRU_IO_TOTAL:0
LRU_IO_CURRENT:0
UNCOMPRESS_TOTAL:0
UNCOMPRESS_CURRENT:0
此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_CACHED_INDEXES
表报告
InnoDB
每个索引缓冲池中
缓存的索引页数
。
有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表” 。
该
INNODB_CACHED_INDEXES
表包含以下列:
SPACE_ID
表空间ID。
INDEX_ID
索引的标识符。 索引标识符在实例中的所有数据库中都是唯一的。
N_CACHED_PAGES
InnoDB
缓冲池中
缓存的索引页数
。
此查询返回
InnoDB
缓冲池中
缓存
的特定索引
的索引页数
:
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CACHED_INDEXES WHERE INDEX_ID=65\G
*************************** 1。排******************** *******
SPACE_ID:4294967294
INDEX_ID:65
N_CACHED_PAGES:45
此查询返回
InnoDB
缓冲池中为每个索引
缓存的索引页数
,使用
INNODB_INDEXES
和
INNODB_TABLES
表来解析每个
INDEX_ID
值
的表名和索引名
。
选择 tables.NAME AS table_name, indexes.NAME AS index_name, cached.N_CACHED_PAGES AS n_cached_pages 从 INFORMATION_SCHEMA.INNODB_CACHED_INDEXES作为缓存, INFORMATION_SCHEMA.INNODB_INDEXES AS索引, INFORMATION_SCHEMA.INNODB_TABLES AS表 哪里 cached.INDEX_ID = indexes.INDEX_ID AND indexes.TABLE_ID = tables.TABLE_ID;
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
在
INNODB_CMP
与
INNODB_CMP_RESET
表提供了相关的操作状态信息
压缩
InnoDB
表。
在
INNODB_CMP
与
INNODB_CMP_RESET
表有这些列:
PAGE_SIZE
压缩页面大小,以字节为单位。
COMPRESS_OPS
PAGE_SIZE
压缩
了B树页面大小的次数
。
只要创建空页面或未压缩修改日志的空间用完,页面就会被压缩。
COMPRESS_OPS_OK
PAGE_SIZE
已成功压缩
B树页面大小的次数
。
此计数不应超过
COMPRESS_OPS
。
COMPRESS_TIME
用于尝试压缩大小的B树页面的总时间(以秒为单位)
PAGE_SIZE
。
UNCOMPRESS_OPS
B-tree页面大小
PAGE_SIZE
未压缩的次数。
压缩失败时或在缓冲池中不存在未压缩页面时首次访问时,B树页面将被解压缩。
UNCOMPRESS_TIME
用于解压缩大小的B树页面的总时间(以秒为单位)
PAGE_SIZE
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP\G
*************************** 1。排******************** *******
page_size:1024
compress_ops:0
compress_ops_ok:0
compress_time:0
uncompress_ops:0
uncompress_time:0
*************************** 2.排******************** *******
page_size:2048
compress_ops:0
compress_ops_ok:0
compress_time:0
uncompress_ops:0
uncompress_time:0
*************************** 3。排******************** *******
page_size:4096
compress_ops:0
compress_ops_ok:0
compress_time:0
uncompress_ops:0
uncompress_time:0
****************************排******************** *******
page_size:8192
compress_ops:86955
compress_ops_ok:81182
compress_time:27
uncompress_ops:26828
uncompress_time:5
****************************排******************** *******
page_size:16384
compress_ops:0
compress_ops_ok:0
compress_time:0
uncompress_ops:0
uncompress_time:0
使用这些表来衡量
数据库
InnoDB
中表
压缩
的有效性
。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关用法信息,请参见
第15.9.1.4节“在运行时监视InnoDB表压缩”
和
第15.14.1.3节“使用压缩信息模式表”
。
有关
InnoDB
表压缩的
一般信息
,请参见
第15.9节“InnoDB表和页面压缩”
。
在
INNODB_CMPMEM
与
INNODB_CMPMEM_RESET
上压缩表提供状态信息
页
的内
InnoDB
缓冲池
。
在
INNODB_CMPMEM
与
INNODB_CMPMEM_RESET
表有这些列:
PAGE_SIZE
块大小(以字节为单位)。 该表的每条记录都描述了这种大小的块。
BUFFER_POOL_INSTANCE
缓冲池实例的唯一标识符。
PAGES_USED
PAGE_SIZE
当前正在使用
的块大小的数量
。
PAGES_FREE
PAGE_SIZE
当前可用于分配
的大小块数
。
此列显示内存池中的外部碎片。
理想情况下,这些数字最多应为1。
RELOCATION_OPS
PAGE_SIZE
已重新定位
块大小的次数
。
伙伴系统
在尝试形成更大的释放块时
可以重新定位已
释放块
的已分配
“
伙伴邻居
”
。
从
INNODB_CMPMEM_RESET
表中
读取
重置此计数。
RELOCATION_TIME
用于重新定位大小块的总时间(以微秒为单位)
PAGE_SIZE
。
从表中读取
INNODB_CMPMEM_RESET
重置此计数。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM\G
*************************** 1。排******************** *******
page_size:1024
buffer_pool_instance:0
pages_used:0
pages_free:0
relocation_ops:0
relocation_time:0
*************************** 2.排******************** *******
page_size:2048
buffer_pool_instance:0
pages_used:0
pages_free:0
relocation_ops:0
relocation_time:0
*************************** 3。排******************** *******
page_size:4096
buffer_pool_instance:0
pages_used:0
pages_free:0
relocation_ops:0
relocation_time:0
****************************排******************** *******
page_size:8192
buffer_pool_instance:0
pages_used:7673
pages_free:15
relocation_ops:4638
relocation_time:0
****************************排******************** *******
page_size:16384
buffer_pool_instance:0
pages_used:0
pages_free:0
relocation_ops:0
relocation_time:0
使用这些表来衡量
数据库
InnoDB
中表
压缩
的有效性
。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关用法信息,请参见
第15.9.1.4节“在运行时监视InnoDB表压缩”
和
第15.14.1.3节“使用压缩信息模式表”
。
有关
InnoDB
表压缩的
一般信息
,请参见
第15.9节“InnoDB表和页面压缩”
。
在
INNODB_CMP_PER_INDEX
与
INNODB_CMP_PER_INDEX_RESET
表提供了相关的操作状态信息
压缩
InnoDB
表和索引,与数据库,表和索引的每个组合单独的统计数据,以帮助您评估特定表的性能和压缩的实用性。
对于压缩
InnoDB
表,
将压缩
表数据和所有
二级索引
。
在此上下文中,表数据仅被视为另一个索引,恰好包含所有列:
聚簇索引
。
在
INNODB_CMP_PER_INDEX
与
INNODB_CMP_PER_INDEX_RESET
表有这些列:
DATABASE_NAME
包含适用表的模式(数据库)。
TABLE_NAME
用于监视压缩统计信息的表。
INDEX_NAME
用于监视压缩统计信息的索引。
COMPRESS_OPS
尝试的压缩操作数。 网页 每当创建一个空的页面或压缩未压缩修改日志的空间用完。
COMPRESS_OPS_OK
成功压缩操作的次数。
减去该
COMPRESS_OPS
值以获得
压缩失败次数
。
除以该
COMPRESS_OPS
值以获得压缩失败的百分比。
COMPRESS_TIME
用于压缩此索引中的数据的总时间(以秒为单位)。
UNCOMPRESS_OPS
执行的解压缩操作数。
压缩的
InnoDB
网页未压缩的压缩时
出现故障
,或者在第一时间压缩页面的访问
缓冲池
和未压缩的页面不存在。
UNCOMPRESS_TIME
用于解压缩此索引中的数据的总时间(以秒为单位)。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX\G
*************************** 1。排******************** *******
database_name:员工
table_name:工资
index_name:PRIMARY
compress_ops:0
compress_ops_ok:0
compress_time:0
uncompress_ops:23451
uncompress_time:4
*************************** 2.排******************** *******
database_name:员工
table_name:工资
index_name:emp_no
compress_ops:0
compress_ops_ok:0
compress_time:0
uncompress_ops:1597
uncompress_time:0
使用这些表来衡量
特定表,索引或两者
的
InnoDB
表
压缩
的有效性
。
您必须具有
PROCESS
查询这些表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关这些表的列的其他信息,包括数据类型和缺省值。
因为为每个索引收集单独的度量会产生大量的性能开销,
INNODB_CMP_PER_INDEX
并且
INNODB_CMP_PER_INDEX_RESET
默认情况下不会收集统计信息。
innodb_cmp_per_index_enabled
在对要监视的压缩表执行操作之前,
必须启用
系统变量。
有关用法信息,请参见
第15.9.1.4节“在运行时监视InnoDB表压缩”
和
第15.14.1.3节“使用压缩信息模式表”
。
有关
InnoDB
表压缩的
一般信息
,请参见
第15.9节“InnoDB表和页面压缩”
。
该
INNODB_COLUMNS
表提供了有关的元数据
InnoDB
表列的
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_COLUMNS
表包含以下列:
TABLE_ID
表示与列关联的表的标识符;
与...相同的价值
INNODB_TABLES.TABLE_ID
。
NAME
列的名称。
这些名称可以是大写或小写,具体取决于
lower_case_table_names
设置。
列没有特殊的系统保留名称。
POS
表中列的序号位置,从0开始并按顺序递增。
删除列时,将重新排序其余列,以使序列没有间隙。
POS
虚拟生成列
的
值对列序列号和列的序号位置进行编码。
有关更多信息,请参见
第25.39.30节“INFORMATION_SCHEMA INNODB_VIRTUAL表”中
的
POS
列说明
。
MTYPE
代表
“
主要类型
”
。
列类型的数字标识符。
1 =
VARCHAR
,2 =
CHAR
,3 =
FIXBINARY
,4 =
BINARY
,5 =
BLOB
,6 =
INT
,7 =
SYS_CHILD
,8 =
SYS
,9 =
FLOAT
,10 =
DOUBLE
,11 =
DECIMAL
,12 =
VARMYSQL
,13 =
MYSQL
,14 =
GEOMETRY
。
PRTYPE
的
InnoDB
“
精确类型
”
,与表示MySQL数据类型,字符集代码,和为空比特的二进制值。
LEN
列长度,例如4 for
INT
和8 for
BIGINT
。
对于多字节字符集中的字符列,此长度值是表示定义所需的最大字节长度,例如
;
也就是说,它可能是
,
依此类推,具体取决于字符编码。
VARCHAR(
N)2*
N3*
N
HAS_DEFAULT
一个布尔值,指示使用
ALTER
TABLE ...
ADD COLUMN
with
立即添加的列是否
ALGORITHM=INSTANT
具有默认值。
立即添加的所有列都具有默认值,这使得此列成为是否立即添加列的指示。
DEFAULT_VALUE
使用
ALTER
TABLE
... ADD COLUMN
with
立即添加的列的初始默认值
ALGORITHM=INSTANT
。
如果
NULL
指定了或未指定
默认值
,则此列将报告
NULL
。
明确指定的非
NULL
默认值以内部二进制格式显示。
对列默认值的后续修改不会更改此列报告的值。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS where TABLE_ID = 71\G
*************************** 1。排******************** *******
TABLE_ID:71
名称:col1
POS:0
MTYPE:6
PRTYPE:1027
LEN:4
HAS_DEFAULT:0
DEFAULT_VALUE:NULL
*************************** 2.排******************** *******
TABLE_ID:71
名称:col2
POS:1
MTYPE:2
PRTYPE:524542
LEN:10
HAS_DEFAULT:0
DEFAULT_VALUE:NULL
*************************** 3。排******************** *******
TABLE_ID:71
名称:col3
POS:2
MTYPE:1
PRTYPE:524303
LEN:10
HAS_DEFAULT:0
DEFAULT_VALUE:NULL
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_DATAFILES
表提供了
InnoDB
每个表文件和一般表空间的
数据文件路径信息
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INFORMATION_SCHEMA
FILES
表报告
InnoDB
表空间类型的
元数据,
包括每表文件表空间,通用表空间,系统表空间,全局临时表空间和撤消表空间。
该
INNODB_DATAFILES
表包含以下列:
SPACE
表空间ID。
PATH
表空间数据文件路径。 如果 在MySQL数据目录之外的位置创建了 每表文件表 空间,则路径值是完全限定的目录路径。 否则,该路径相对于数据目录。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_DATAFILES WHERE SPACE = 57\G
*************************** 1。排******************** *******
空间:57
路径:./ test / t1.ibd
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_FIELDS
表提供有关
InnoDB
索引
的键列(字段)的元数据
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_FIELDS
表包含以下列:
INDEX_ID
与此键字段关联的索引的标识符;
与...相同的价值
INNODB_INDEXES.INDEX_ID
。
NAME
表中原始列的名称;
与...相同的价值
INNODB_COLUMNS.NAME
。
POS
索引中键字段的序号位置,从0开始并按顺序递增。 删除列时,将重新排序其余列,以使序列没有间隙。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FIELDS WHERE INDEX_ID = 117\G
*************************** 1。排******************** *******
INDEX_ID:117
名称:col1
POS:0
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_FOREIGN
表提供有关
InnoDB
外键的
元数据
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_FOREIGN
表包含以下列:
ID
外键索引的名称(不是数字值),以模式(数据库)名称开头(例如
test/products_fk
)。
FOR_NAME
此外 键关系 中子表 的名称 。
REF_NAME
此外 键关系中 父表 的名称 。
N_COLS
外键索引中的列数。
TYPE
包含有关外键列的信息的位标志的集合,ORed在一起。
0 =
ON DELETE/UPDATE
RESTRICT
,1 =
ON DELETE CASCADE
,2 =
ON DELETE SET NULL
,4 =
ON
UPDATE CASCADE
,8 =
ON UPDATE SET
NULL
,16 =
ON DELETE NO ACTION
,32 =
ON UPDATE NO ACTION
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FOREIGN\G
*************************** 1。排******************** *******
ID:test / fk1
FOR_NAME:测试/孩子
REF_NAME:测试/家长
N_COLS:1
类型:1
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_FOREIGN_COLS
表提供有关的状态信息
InnoDB
外键列的
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_FOREIGN_COLS
表包含以下列:
ID
与此索引键字段关联的外键索引;
与...相同的价值
INNODB_FOREIGN.ID
。
FOR_COL_NAME
子表中关联列的名称。
REF_COL_NAME
父表中关联列的名称。
POS
外键索引中此键字段的序号位置,从0开始。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FOREIGN_COLS WHERE ID = 'test/fk1'\G
*************************** 1。排******************** *******
ID:test / fk1
FOR_COL_NAME:parent_id
REF_COL_NAME:id
POS:0
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_FT_BEING_DELETED
表提供了表的快照
INNODB_FT_DELETED
;
它仅在
OPTIMIZE
TABLE
维护操作
期间
使用。
当
OPTIMIZE
TABLE
运行时,该
INNODB_FT_BEING_DELETED
表被清空,并且
DOC_ID
值是从除去
INNODB_FT_DELETED
表。
由于内容
INNODB_FT_BEING_DELETED
通常具有较短的生命周期,因此该表对监视或调试的实用性有限。
有关
OPTIMIZE
TABLE
在带有
FULLTEXT
索引的
表上
运行的信息
,请参见
第12.9.6节“微调MySQL全文搜索”
。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如,
test/articles
)。
输出类似于为
INNODB_FT_DELETED
表
提供的示例
。
有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表” 。
该
INNODB_FT_BEING_DELETED
表包含以下列:
DOC_ID
正在删除的行的文档ID。
此值可能反映您为基础表定义的ID列的值,也可能是
InnoDB
表中没有合适的列时
生成的序列值
。
执行文本搜索时,将使用此值,以便在
通过
语句
INNODB_FT_INDEX_TABLE
从
FULLTEXT
索引中
物理删除已删除行的数据之前
跳过
表中的行
OPTIMIZE
TABLE
。
有关更多信息,请参阅
优化InnoDB全文索引
。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
您必须具有
PROCESS
查询此表
的
权限。
有关
InnoDB
FULLTEXT
搜索的
更多信息
,请参见
第15.6.2.4节“InnoDB FULLTEXT索引”
和
第12.9节“全文搜索函数”
。
该
INNODB_FT_CONFIG
表提供有关表的
FULLTEXT
索引和关联处理的
元数据
InnoDB
。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如,
test/articles
)。
有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表” 。
该
INNODB_FT_CONFIG
表包含以下列:
KEY
指定
InnoDB
包含
FULLTEXT
索引
的
表
的元数据项的名称
。
此列的值可能会更改,具体取决于性能调整和
InnoDB
全文处理
调试的需要
。
关键名称及其含义包括:
optimize_checkpoint_limit
:
OPTIMIZE
TABLE
运行停止
的秒数
。
synced_doc_id
:下一个
DOC_ID
要发行。
stopword_table_name
:
database/table
用户定义的停用词表的名称。
VALUE
如果没有用户定义的停用词表,则
该
列为空。
use_stopword
:指示是否使用停用词表,该表是在
FULLTEXT
创建索引
时定义的
。
VALUE
与相应
KEY
列
关联的值
,反映
表
的
FULLTEXT
索引
方面的某些限制或当前值
InnoDB
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
+ --------------------------- + ------------------- +
| KEY | 价值|
+ --------------------------- + ------------------- +
| optimize_checkpoint_limit | 180 |
| synced_doc_id | 0 |
| stopword_table_name | test / my_stopwords |
| use_stopword | 1 |
+ --------------------------- + ------------------- +
此表仅用于内部配置。 它不用于统计信息目的。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关
InnoDB
FULLTEXT
搜索的
更多信息
,请参见
第15.6.2.4节“InnoDB FULLTEXT索引”
和
第12.9节“全文搜索函数”
。
该
INNODB_FT_DEFAULT_STOPWORD
表包含
在
表
上
创建
索引
时默认使用
的
停用词
列表
。
有关默认
禁用
词列表以及如何定义自己的
禁用
词列表的信息,请参见
第12.9.4节“全文
停用词
”
。
FULLTEXT
InnoDB
InnoDB
有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表” 。
该
INNODB_FT_DEFAULT_STOPWORD
表包含以下列:
value
默认情况下用作
表的
FULLTEXT
索引
的停用词的单词
InnoDB
。
如果使用
innodb_ft_server_stopword_table
或
innodb_ft_user_stopword_table
系统变量
覆盖默认的停用词处理,则不使用此选项
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+ ------- +
| 价值|
+ ------- +
| a |
| 关于|
| 一个|
| 是|
| 作为|
| 在|
| 是|
| 通过|
| com |
| 德|
| en |
| 为|
| 来自|
| 如何|
| 我|
| 在|
| 是|
| 它|
| la |
| 的
| 在|
| 或者
| 那个|
| |
| 这个|
| 到|
| 是|
| 什么|
| 当|
| 哪里|
| 谁|
| 将|
| 与|
| und |
| |
| www |
+ ------- +
36行(0.00秒)
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关
InnoDB
FULLTEXT
搜索的
更多信息
,请参见
第15.6.2.4节“InnoDB FULLTEXT索引”
和
第12.9节“全文搜索函数”
。
该
INNODB_FT_DELETED
表存储从
表
的
FULLTEXT
索引
中删除的行
InnoDB
。
为了避免在索引的DML操作期间进行昂贵的索引重组
InnoDB FULLTEXT
,有关新删除的单词的信息将单独存储,在执行文本搜索时从搜索结果中过滤掉,并且仅在您
OPTIMIZE
TABLE
为
InnoDB
表
发出
语句
时从主搜索索引中删除
。
有关更多信息,请参阅
优化InnoDB全文索引
。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如,
test/articles
)。
有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表” 。
该
INNODB_FT_DELETED
表包含以下列:
DOC_ID
新删除的行的文档ID。
此值可能反映您为基础表定义的ID列的值,也可能是
InnoDB
表中没有合适的列时
生成的序列值
。
执行文本搜索时,将使用此值,以便在
通过
语句
INNODB_FT_INDEX_TABLE
从
FULLTEXT
索引中
物理删除已删除行的数据之前
跳过
表中的行
OPTIMIZE
TABLE
。
有关更多信息,请参阅
优化InnoDB全文索引
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
+ -------- +
| DOC_ID |
+ -------- +
| 6 |
| 7 |
| 8 |
+ -------- +
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关
InnoDB
FULLTEXT
搜索的
更多信息
,请参见
第15.6.2.4节“InnoDB FULLTEXT索引”
和
第12.9节“全文搜索函数”
。
该
INNODB_FT_INDEX_CACHE
表提供有关
FULLTEXT
索引中
新插入行的标记信息
。
为了避免在DML操作期间进行昂贵的索引重组,有关新索引词的信息将单独存储,并且仅在
OPTIMIZE
TABLE
运行时,服务器关闭时或者当缓存大小超过由
innodb_ft_cache_size
或
定义的限制时
与主搜索索引组合。
innodb_ft_total_cache_size
系统变量。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如,
test/articles
)。
有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表” 。
该
INNODB_FT_INDEX_CACHE
表包含以下列:
WORD
从新插入的行的文本中提取的单词。
FIRST_DOC_ID
此单词出现在
FULLTEXT
索引中
的第一个文档ID
。
LAST_DOC_ID
此单词出现在
FULLTEXT
索引中
的最后一个文档ID
。
DOC_COUNT
此单词在
FULLTEXT
索引中
出现的行数
。
在缓存表中可以多次出现相同的单词,每个组合
DOC_ID
和
POSITION
值一次。
DOC_ID
新插入行的文档ID。
此值可能反映您为基础表定义的ID列的值,也可能是
InnoDB
表中没有合适的列时
生成的序列值
。
POSITION
该值的特定实例在相关文档中的位置由该
DOC_ID
值
标识
。
该值不代表绝对位置;
它是添加到该
POSITION
单词的上一个实例
的偏移量
。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如
test/articles
)。
以下示例演示如何使用
innodb_ft_aux_table
系统变量显示有关
FULLTEXT
指定表
的
索引的
信息
。
MySQL的>USE test;MySQL的>CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT (title,body)) ENGINE=InnoDB;MySQL的>INSERT INTO articles (title,body) VALUES('MySQL Tutorial','DBMS stands for DataBase ...'),('How To Use MySQL Well','After you went through a ...'),('Optimizing MySQL','In this tutorial we will show ...'),('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),('MySQL vs. YourSQL','In the following database comparison ...'),('MySQL Security','When configured properly, MySQL ...');MySQL的>SET GLOBAL innodb_ft_aux_table = 'test/articles';MySQL的>SELECT WORD, DOC_COUNT, DOC_ID, POSITIONFROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE LIMIT 5;+ ------------ + ----------- + -------- + ---------- + | WORD | DOC_COUNT | DOC_ID | 位置| + ------------ + ----------- + -------- + ---------- + | 1001 | 1 | 4 | 0 | | 之后| 1 | 2 | 22 | | 比较| 1 | 5 | 44 | | 配置| 1 | 6 | 20 | | 数据库| 2 | 1 | 31 | + ------------ + ----------- + -------- + ---------- +
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关
InnoDB
FULLTEXT
搜索的
更多信息
,请参见
第15.6.2.4节“InnoDB FULLTEXT索引”
和
第12.9节“全文搜索函数”
。
该
INNODB_FT_INDEX_TABLE
表提供有关用于处理针对
表
的
FULLTEXT
索引的
文本搜索的反向索引的信息
InnoDB
。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如,
test/articles
)。
有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表” 。
该
INNODB_FT_INDEX_TABLE
表包含以下列:
WORD
从作为a的一部分的列的文本中提取的单词
FULLTEXT
。
FIRST_DOC_ID
此单词出现在
FULLTEXT
索引中
的第一个文档ID
。
LAST_DOC_ID
此单词出现在
FULLTEXT
索引中
的最后一个文档ID
。
DOC_COUNT
此单词在
FULLTEXT
索引中
出现的行数
。
在缓存表中可以多次出现相同的单词,每个组合
DOC_ID
和
POSITION
值一次。
DOC_ID
包含单词的行的文档ID。
此值可能反映您为基础表定义的ID列的值,也可能是
InnoDB
表中没有合适的列时
生成的序列值
。
POSITION
该值的特定实例在相关文档中的位置由该
DOC_ID
值
标识
。
这个表最初是空的。
在查询之前,将
innodb_ft_aux_table
系统变量
的值设置为
包含
FULLTEXT
索引
的表的名称(包括数据库名称)
(例如,
test/articles
)。
以下示例演示如何使用
innodb_ft_aux_table
系统变量显示有关
FULLTEXT
指定表
的
索引的
信息
。
在出现新插入行的信息之前
INNODB_FT_INDEX_TABLE
,
FULLTEXT
必须将索引缓存刷新到磁盘。
这是通过
OPTIMIZE
TABLE
在索引表上
运行
操作
来完成
的
innodb_optimize_fulltext_only
系统变量已启用。
(该示例最后再次禁用该变量,因为它只是暂时启用。)
MySQL的>USE test;MySQL的>CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT (title,body)) ENGINE=InnoDB;MySQL的>INSERT INTO articles (title,body) VALUES('MySQL Tutorial','DBMS stands for DataBase ...'),('How To Use MySQL Well','After you went through a ...'),('Optimizing MySQL','In this tutorial we will show ...'),('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),('MySQL vs. YourSQL','In the following database comparison ...'),('MySQL Security','When configured properly, MySQL ...');MySQL的>SET GLOBAL innodb_optimize_fulltext_only=ON;MySQL的>OPTIMIZE TABLE articles;+ --------------- + ---------- + ---------- + ---------- + | 表| Op | Msg_type | Msg_text | + --------------- + ---------- + ---------- + ---------- + | test.articles | 优化| 状态| 好的 + --------------- + ---------- + ---------- + ---------- + MySQL的>SET GLOBAL innodb_ft_aux_table = 'test/articles';MySQL的>SELECT WORD, DOC_COUNT, DOC_ID, POSITIONFROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE LIMIT 5;+ ------------ + ----------- + -------- + ---------- + | WORD | DOC_COUNT | DOC_ID | 位置| + ------------ + ----------- + -------- + ---------- + | 1001 | 1 | 4 | 0 | | 之后| 1 | 2 | 22 | | 比较| 1 | 5 | 44 | | 配置| 1 | 6 | 20 | | 数据库| 2 | 1 | 31 | + ------------ + ----------- + -------- + ---------- + MySQL的>SET GLOBAL innodb_optimize_fulltext_only=OFF;
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
有关
InnoDB
FULLTEXT
搜索的
更多信息
,请参见
第15.6.2.4节“InnoDB FULLTEXT索引”
和
第12.9节“全文搜索函数”
。
该
INNODB_INDEXES
表提供有关
InnoDB
索引的
元数据
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_INDEXES
表包含以下列:
INDEX_ID
索引的标识符。 索引标识符在实例中的所有数据库中都是唯一的。
NAME
索引的名称。
通过
InnoDB
具有一致名称
隐式创建的大多数索引,
但索引名称不一定是唯一的。
实施例:
PRIMARY
用于一主键索引,
GEN_CLUST_INDEX
用于表示当没有指定的主键索引,并且
ID_IND
,
FOR_IND
和
REF_IND
为外键约束。
TABLE_ID
表示与索引关联的表的标识符;
与...相同的价值
INNODB_TABLES.TABLE_ID
。
TYPE
从标识索引类型的位级信息派生的数值。
0 =非唯一二级指数;
1 =自动生成聚簇索引(
GEN_CLUST_INDEX
);
2 =唯一的非聚集索引;
3 =聚集索引;
32 =全文索引;
64 =空间指数;
128 =
虚拟生成列
上的辅助索引
。
N_FIELDS
索引键中的列数。
对于
GEN_CLUST_INDEX
索引,此值为0,因为索引是使用人工值而不是实际表列创建的。
PAGE_NO
索引B树的根页码。
对于全文索引,该
PAGE_NO
列未使用并设置为-1(
FIL_NULL
),因为全文索引在多个B树(辅助表)中布局。
SPACE
索引所在的表空间的标识符。
0表示
InnoDB
系统表空间
。
任何其他数字表示使用
文件每表
模式中
的单独
.ibd
文件
创建
的表
。
TRUNCATE
TABLE
声明
后,此标识符保持不变
。
由于表的所有索引都与表存在于同一个表空间中,因此该值不一定是唯一的。
MERGE_THRESHOLD
索引页面的合并阈值。
如果索引页中的数据量低于
MERGE_THRESHOLD
删除行时或更新操作缩短行时
的
值,则
InnoDB
尝试将索引页与相邻索引页合并。
默认阈值为50%。
有关更多信息,请参见
第15.8.11节“配置索引页的合并阈值”
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEXES WHERE TABLE_ID = 34\G
*************************** 1。排******************** *******
INDEX_ID:39
名称:GEN_CLUST_INDEX
TABLE_ID:34
类型:1
N_FIELDS:0
PAGE_NO:3
空间:23
MERGE_THRESHOLD:50
*************************** 2.排******************** *******
INDEX_ID:40
姓名:i1
TABLE_ID:34
TYPE:0
N_FIELDS:1
PAGE_NO:4
空间:23
MERGE_THRESHOLD:50
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_LOCKS
表提供有关
InnoDB
事务已请求但尚未获取的每个锁的信息,以及事务持有的阻止另一个事务的每个锁。
该表已弃用,自MySQL 8.0.1起删除。
请改用Performance Schema
data_locks
表。
请参见
第26.12.12.1节“data_locks表”
。
INNODB_LOCKS
和
之间的差异
data_locks
:
如果事务持有锁,
INNODB_LOCKS
则仅在另一个事务正在等待时才显示锁。
data_locks
无论是否有任何事务正在等待它,都会显示锁定。
该
data_locks
表具有对应于没有列
LOCK_SPACE
,
LOCK_PAGE
或
LOCK_REC
。
该
INNODB_LOCKS
表需要全局
PROCESS
特权。
该
data_locks
表需要
SELECT
从表中选择
通常的Performance Schema特权
。
下表显示了从
INNODB_LOCKS
列到
data_locks
列
的映射
。
使用此信息将应用程序从一个表迁移到另一个表。
表25.4从INNODB_LOCKS到data_locks列的映射
| INNODB_LOCKS专栏 | data_locks列 |
|---|---|
LOCK_ID |
ENGINE_LOCK_ID |
LOCK_TRX_ID |
ENGINE_TRANSACTION_ID |
LOCK_MODE |
LOCK_MODE |
LOCK_TYPE |
LOCK_TYPE |
LOCK_TABLE
(组合模式/表名)
|
OBJECT_SCHEMA
(模式名称),
OBJECT_NAME
(表名)
|
LOCK_INDEX |
INDEX_NAME |
LOCK_SPACE |
没有 |
LOCK_PAGE |
没有 |
LOCK_REC |
没有 |
LOCK_DATA |
LOCK_DATA |
该
INNODB_LOCK_WAITS
表包含每个被阻止
InnoDB
事务的
一行或多行
,指示它已请求的锁以及阻止该请求的任何锁。
该表已弃用,自MySQL 8.0.1起删除。
请改用Performance Schema
data_lock_waits
表。
请参见
第26.12.12.2节“data_lock_waits表”
。
这些表的所需权限不同:该
INNODB_LOCK_WAITS
表需要全局
PROCESS
权限。
该
data_lock_waits
表需要
SELECT
从表中选择
通常的Performance Schema特权
。
下表显示了从
INNODB_LOCK_WAITS
列到
data_lock_waits
列
的映射
。
使用此信息将应用程序从一个表迁移到另一个表。
表25.5从INNODB_LOCK_WAITS到data_lock_waits列的映射
| INNODB_LOCK_WAITS列 | data_lock_waits列 |
|---|---|
REQUESTING_TRX_ID |
REQUESTING_ENGINE_TRANSACTION_ID |
REQUESTED_LOCK_ID |
REQUESTING_ENGINE_LOCK_ID |
BLOCKING_TRX_ID |
BLOCKING_ENGINE_TRANSACTION_ID |
BLOCKING_LOCK_ID |
BLOCKING_ENGINE_LOCK_ID |
该
INNODB_METRICS
表提供了各种
InnoDB
性能信息,补充了性能模式表的特定重点领域
InnoDB
。
通过简单的查询,您可以检查系统的整体运行状况。
通过更详细的查询,您可以诊断性能瓶颈,资源短缺和应用程序问题等问题。
每个监视器代表
InnoDB
源代码中的
一个点
,用于收集计数器信息。
每个计数器都可以启动,停止和重置。
您还可以使用公共模块名称为一组计数器执行这些操作。
默认情况下,收集的数据相对较少。
要启动,停止和复位计数器,设置系统变量之一
innodb_monitor_enable
,
innodb_monitor_disable
,
innodb_monitor_reset
,或
innodb_monitor_reset_all
使用计数器的名称,模块,使用了这样一个名字的通配符匹配的名字
“
%
”
字符,或特殊关键字
all
。
有关使用信息,请参见 第15.14.6节“InnoDB INFORMATION_SCHEMA度量表” 。
该
INNODB_METRICS
表包含以下列:
NAME
柜台的唯一名称。
SUBSYSTEM
该
InnoDB
指标适用
的方面
。
COUNT
自计数器启用以来的值。
MAX_COUNT
自计数器启用以来的最大值。
MIN_COUNT
自计数器启用以来的最小值。
AVG_COUNT
自计数器启用以来的平均值。
COUNT_RESET
自上次重置以来的计数器值。
(本
_RESET
栏目像一个秒表一圈柜台:您可以测量一段时间间隔内的活动,而累积的数字仍然在使用
COUNT
,
MAX_COUNT
等。)
MAX_COUNT_RESET
自上次重置以来的最大计数器值。
MIN_COUNT_RESET
自上次重置以来的最小计数器值。
AVG_COUNT_RESET
自上次重置以来的平均计数器值。
TIME_ENABLED
上次启动的时间戳。
TIME_DISABLED
最后一站的时间戳。
TIME_ELAPSED
计数器启动后经过的时间(以秒为单位)。
TIME_RESET
上次重置的时间戳。
STATUS
计数器是否仍在运行(
enabled
)或停止(
disabled
)。
TYPE
该项目是累积计数器,还是衡量某些资源的当前值。
COMMENT
柜台说明。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME='dml_inserts'\G
*************************** 1。排******************** *******
名称:dml_inserts
SUBSYSTEM:dml
COUNT:3
MAX_COUNT:3
MIN_COUNT:NULL
AVG_COUNT:0.046153846153846156
COUNT_RESET:3
MAX_COUNT_RESET:3
MIN_COUNT_RESET:NULL
AVG_COUNT_RESET:NULL
TIME_ENABLED:2014-12-04 14:18:28
TIME_DISABLED:NULL
TIME_ELAPSED:65
TIME_RESET:NULL
状态:已启用
TYPE:status_counter
注释:插入的行数
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
事务计数器
COUNT
值可能与Performance Schema
EVENTS_TRANSACTIONS_SUMMARY
表中
报告的事务事件数不同
。
InnoDB
仅计算它执行的那些事务,而Performance Schema收集服务器发起的所有未中止事务的事件,包括空事务。
该
INNODB_SESSION_TEMP_TABLESPACES
表提供有关用于内部和用户创建的临时表的会话临时表空间的元数据。
这个表是在MySQL 8.0.13中添加的。
该
INNODB_SESSION_TEMP_TABLESPACES
表包含以下列:
ID
进程或会话ID。
SPACE
表空间ID。 为会话临时表空间保留了40万个空间ID。 每次启动服务器时都会重新创建会话临时表空间。 服务器关闭时,空间ID不会保留,可以重复使用。
PATH
表空间数据文件路径。
会话临时表空间具有
ibt
文件扩展名。
SIZE
表空间的大小,以字节为单位。
STATE
表空间的状态。
ACTIVE
表示会话当前使用表空间。
INACTIVE
表示表空间位于可用会话临时表空间池中。
PURPOSE
表空间的目的。
INTRINSIC
表示表空间用于优化程序使用的优化内部临时表。
SLAVE
表示已分配表空间用于在复制从属服务器上存储用户创建的临时表。
USER
表示表空间用于用户创建的临时表。
NONE
表示表空间未使用。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_SESSION_TEMP_TABLESPACES;
+ ---- + ------------ + ---------------------------- + - ----- + ---------- + ----------- +
| ID | 空间| 路径| SIZE | 国家| 目的|
+ ---- + ------------ + ---------------------------- + - ----- + ---------- + ----------- +
| 8 | 4294566162 | ./#innodb_temp/temp_10.ibt | 81920 | ACTIVE | INTRINSIC |
| 8 | 4294566161 | ./#innodb_temp/temp_9.ibt | 98304 | ACTIVE | 用户|
| 0 | 4294566153 | ./#innodb_temp/temp_1.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566154 | ./#innodb_temp/temp_2.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566155 | ./#innodb_temp/temp_3.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566156 | ./#innodb_temp/temp_4.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566157 | ./#innodb_temp/temp_5.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566158 | ./#innodb_temp/temp_6.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566159 | ./#innodb_temp/temp_7.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566160 | ./#innodb_temp/temp_8.ibt | 81920 | 不活跃| 没有|
+ ---- + ------------ + ---------------------------- + - ----- + ---------- + ----------- +
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_TABLES
表提供有关
InnoDB
表的
元数据
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_TABLES
表包含以下列:
TABLE_ID
InnoDB
表
的标识符
。
该值在实例中的所有数据库中都是唯一的。
NAME
表的名称,在适当的位置以模式(数据库)名称开头(例如,
test/t1
)。
数据库和用户表的名称与最初定义的名称相同,可能受
lower_case_table_names
设置的
影响
。
FLAG
一个数值,表示有关表格式和存储特征的位级信息。
N_COLS
表中的列数。
报告的数字包括由创建了三个隐藏列
InnoDB
(
DB_ROW_ID
,
DB_TRX_ID
,和
DB_ROLL_PTR
)。
报告的数字还包括
虚拟生成的列
(如果存在)。
SPACE
表所在表空间的标识符。
0表示
InnoDB
系统表空间
。
任何其他数字表示
每个表
的
文件表
空间或一般的表空间。
TRUNCATE
TABLE
声明
后,此标识符保持不变
。
对于每表文件表空间,此标识符对于实例中所有数据库的表是唯一的。
ROW_FORMAT
该表的行格式(
Compact
,
Redundant
,
Dynamic
,或
Compressed
)。
ZIP_PAGE_SIZE
zip页面大小。
仅适用于行格式为的表
Compressed
。
SPACE_TYPE
表所属的表空间类型。
可能的值包括
System
系统表空间,
General
一般表空间和
Single
每个表的文件表空间。
表分配给系统表空间使用
CREATE
TABLE
或
拥有
的
。
有关更多信息,请参阅
。
ALTER
TABLE
TABLESPACE=innodb_system
SPACE_TYPE
General
CREATE
TABLESPACE
INSTANT_COLS
使用
ALTER TABLE
... ADD COLUMN
with
添加第一个即时列之前表中的列数
ALGORITHM=INSTANT
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE TABLE_ID = 214\G
*************************** 1。排******************** *******
TABLE_ID:214
姓名:test / t1
标志:129
N_COLS:4
空间:233
ROW_FORMAT:紧凑
ZIP_PAGE_SIZE:0
SPACE_TYPE:一般
INSTANT_COLS:0
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_TABLESPACES
表提供有关
InnoDB
每个表文件,常规表和撤消表空间的
元数据
。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INFORMATION_SCHEMA
FILES
表报告
InnoDB
表空间类型的
元数据,
包括每表文件表空间,通用表空间,系统表空间,全局临时表空间和撤消表空间。
该
INNODB_TABLESPACES
表包含以下列:
SPACE
表空间ID。
NAME
模式(数据库)和表名。
FLAG
一个数值,表示有关表空间格式和存储特征的位级信息。
ROW_FORMAT
表空间行格式(
Compact or
Redundant
,
Dynamic
或
Compressed
,或
Undo
)。
此列中的数据是从驻留在数据文件中的表空间标志信息中解释的。
如果表空间行格式是
Redundant
或者
Compact
,
则无法从此标志信息中确定
,这就是可能
ROW_FORMAT
值
之一的原因
Compact or
Redundant
。
PAGE_SIZE
表空间页面大小。
此列中的数据是从驻留在
.ibd
文件中
的表空间标记信息中解释的
。
ZIP_PAGE_SIZE
表空间zip页面大小。
此列中的数据是从驻留在
.ibd
文件中
的表空间标记信息中解释的
。
SPACE_TYPE
表空间的类型。
可能的值包括
General
常规表空间,
Single
每表文件表空间,
System
系统表空间和
Undo
撤消表空间。
FS_BLOCK_SIZE
文件系统块大小,是用于打孔的单位大小。
此列适用于
InnoDB
透明页面压缩
功能。
FILE_SIZE
文件的表观大小,表示文件的最大大小,未压缩。
此列适用于
InnoDB
透明页面压缩
功能。
ALLOCATED_SIZE
文件的实际大小,即磁盘上分配的空间量。
此列适用于
InnoDB
透明页面压缩
功能。
SERVER_VERSION
创建表空间的MySQL版本,或导入表空间的MySQL版本,或上一个主要MySQL版本升级的版本。
版本系列升级(例如从MySQL 8.0升级)不会更改该值。
x
到8.0。
y
。
该值可以被视为
表空间
的
“
创建
”
标记或
“
已认证
”
标记。
SPACE_VERSION
表空间版本,用于跟踪表空间格式的更改。
ENCRYPTION
表空间是否加密。 此列已添加到MySQL 8.0.13中。
STATE
表空间状态。 这个专栏是在MySQL 8.0.14中添加的。
对于每表文件和一般表空间,状态包括:
normal
:表空间正常且活动。
discarded
:表空间被
ALTER
TABLE ... DISCARD TABLESPACE
语句
丢弃
。
corrupted
:表空间被识别
InnoDB
为已损坏。
对于撤消表空间,状态包括:
active
:撤消表空间中的回滚段可以分配给新事务。
inactive
:撤消表空间中的回滚段不再被新事务使用。
截断过程正在进行中。
撤消表空间由清除线程隐式选择或由
ALTER
UNDO TABLESPACE ... SET INACTIVE
语句
使其处于非活动状态
。
empty
:撤消表空间被截断,不再处于活动状态。
可以通过
ALTER
UNDO TABLESPACE ... SET INACTIVE
声明
将其删除或重新激活
。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE = 26\G
*************************** 1。排******************** *******
空间:26
姓名:test / t1
标志:0
ROW_FORMAT:紧凑或冗余
PAGE_SIZE:16384
ZIP_PAGE_SIZE:0
SPACE_TYPE:单身
FS_BLOCK_SIZE:4096
FILE_SIZE:98304
ALLOCATED_SIZE:65536
SERVER_VERSION:8.0.4
SPACE_VERSION:1
加密:N
状态:正常
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_TABLESPACES_BRIEF
表提供了每个表文件,常规,撤消和系统表空间的空间ID,名称,路径,标志和空间类型元数据。
INNODB_TABLESPACES
更慢地提供,因为如由表中提供的其他元数据,相同的元数据,但负载
FS_BLOCK_SIZE
,
FILE_SIZE
以及
ALLOCATED_SIZE
,必须动态加载。
INNODB_DATAFILES
表格
还提供了空间和路径元数据
。
该
INNODB_TABLESPACES_BRIEF
表包含以下列:
SPACE
表空间ID。
NAME
表空间名称。
对于每表文件表空间,名称的形式为
schema/table_name
。
PATH
表空间数据文件路径。 如果 在MySQL数据目录之外的位置创建了 每表文件表 空间,则路径值是完全限定的目录路径。 否则,该路径相对于数据目录。
FLAG
一个数值,表示有关表空间格式和存储特征的位级信息。
SPACE_TYPE
表空间的类型。
可能的值包括
General
了
InnoDB
一般的表空间,
Single
为
InnoDB
文件的每个表的表空间,并
System
为
InnoDB
系统表空间。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF WHERE SPACE = 7;
+ ------- + --------- + --------------- + ------- ------- + ----- +
| 空间| NAME | 路径| 标志| SPACE_TYPE |
+ ------- + --------- + --------------- + ------- ------- + ----- +
| 7 | test / t1 | ./test/t1.ibd | 16417 | 单身|
+ ------- + --------- + --------------- + ------- ------- + ----- +
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_TABLESTATS
表提供有关
InnoDB
表
的低级状态信息的
视图。
MySQL优化器使用此数据来计算查询
InnoDB
表
时要使用的索引
。
此信息源自内存数据结构,而不是存储在磁盘上的数据。
没有相应的内部
InnoDB
系统表。
InnoDB
如果表自上次服务器重新启动后已打开并且未超出表缓存,则表在此视图中表示。
持久统计信息可用的表始终在此视图中表示。
表统计信息仅针对
修改索引列的操作
DELETE
或
UPDATE
操作
进行更新
。
仅修改非索引列的操作不会更新统计信息。
ANALYZE
TABLE
清除表统计信息并将
STATS_INITIALIZED
列
设置
为
Uninitialized
。
下次访问表时将再次收集统计信息。
有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表” 。
该
INNODB_TABLESTATS
表包含以下列:
TABLE_ID
表示可获得统计信息的表的标识符;
与...相同的价值
INNODB_TABLES.TABLE_ID
。
NAME
表的名称;
与...相同的价值
INNODB_TABLES.NAME
。
STATS_INITIALIZED
Initialized
如果已经收集了统计信息,
Uninitialized
则
该值
是否已收集
。
NUM_ROWS
表中当前估计的行数。 每次DML操作后更新。 如果未提交的事务插入到表中或从表中删除,则该值可能不精确。
CLUST_INDEX_SIZE
存储聚簇索引的磁盘上的页数,它
InnoDB
以主键顺序
保存
表数据。
如果尚未为表收集统计信息,则此值可能为null。
OTHER_INDEX_SIZE
磁盘上存储表的所有二级索引的页数。 如果尚未为表收集统计信息,则此值可能为null。
MODIFIED_COUNTER
由DML操作修改的行,如数量
INSERT
,
UPDATE
,
DELETE
,和外键也级联操作。
每次重新计算表统计信息时,都会重置此列
AUTOINC
为任何基于自动增量的操作发出的下一个数字。
AUTOINC
值的变化
率
取决于请求自动增量号码的次数以及每次请求授予的号码数量。
REF_COUNT
当此计数器达到零时,表元数据可以从表缓存中逐出。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS where TABLE_ID = 71\G
*************************** 1。排******************** *******
TABLE_ID:71
姓名:test / t1
STATS_INITIALIZED:已初始化
NUM_ROWS:1
CLUST_INDEX_SIZE:1
OTHER_INDEX_SIZE:0
MODIFIED_COUNTER:1
AUTOINC:0
REF_COUNT:1
此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_TEMP_TABLE_INFO
表提供有关
InnoDB
在
InnoDB
实例
中处于活动状态的
用户创建的
临时表的
信息
。
它不提供有关
InnoDB
优化程序使用的
内部
临时表的
信息
。
该
INNODB_TEMP_TABLE_INFO
表在首次查询时创建,仅存在于内存中,并且不会持久保存到磁盘。
有关用法信息和示例,请参见 第15.14.7节“InnoDB INFORMATION_SCHEMA临时表信息表” 。
该
INNODB_TEMP_TABLE_INFO
表包含以下列:
TABLE_ID
临时表的表ID。
NAME
临时表的名称。
N_COLS
临时表中的列数。
数包括由创建了三个隐藏列
InnoDB
(
DB_ROW_ID
,
DB_TRX_ID
,和
DB_ROLL_PTR
)。
SPACE
临时表所在的临时表空间的ID。
MySQL的>CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;MySQL的>SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G*************************** 1。排******************** ******* TABLE_ID:97 姓名:#sql8c88_43_0 N_COLS:4 空间:76
该表主要用于专家级监控。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_TRX
表提供有关当前正在执行的每个事务(不包括只读事务)的信息
InnoDB
,包括事务是否在等待锁定,事务何时启动以及事务正在执行的SQL语句(如果有)。
有关用法信息,请参见 第15.14.2.1节“使用InnoDB事务和锁定信息” 。
该
INNODB_TRX
表包含以下列:
TRX_ID
内部的唯一交易ID号
InnoDB
。
不会为只读和非锁定的事务创建这些ID。
有关详细信息,请参见
第8.5.3节“优化InnoDB只读事务”
。
TRX_WEIGHT
事务的权重,反映(但不一定是确切的计数)更改的行数和事务锁定的行数。
要解决死锁,请
InnoDB
选择权重最小的事务作为
回滚
的
“
受害者
”
。
无论更改和锁定行的数量如何,已更改非事务表的事务都被认为比其他事务更重。
TRX_STATE
事务执行状态。
允许值是
RUNNING
,
LOCK WAIT
,
ROLLING BACK
,和
COMMITTING
。
TRX_STARTED
交易开始时间。
TRX_REQUESTED_LOCK_ID
事务当前正在等待的锁的ID,如果
TRX_STATE
是
LOCK
WAIT
;
否则
NULL
。
要获取有关锁的详细信息,请将此列与
ENGINE_LOCK_ID
Performance Schema
data_locks
表
的
列
连接
。
TRX_WAIT_STARTED
交易开始等待锁定的时间,如果
TRX_STATE
是
LOCK WAIT
;
否则
NULL
。
TRX_MYSQL_THREAD_ID
MySQL线程ID。
要获取有关线程的详细信息,请将此列与
表
的
ID
列
连接
INFORMATION_SCHEMA
PROCESSLIST
,但请参见
第15.14.2.3节“InnoDB事务和锁定信息的持久性和一致性”
。
TRX_QUERY
事务正在执行的SQL语句。
TRX_OPERATION_STATE
交易的当前操作,如果有的话;
否则
NULL
。
TRX_TABLES_IN_USE
InnoDB
处理此事务的当前SQL语句时使用
的
表
数
。
TRX_TABLES_LOCKED
InnoDB
当前SQL语句具有行锁定
的
表
的数量
。
(因为这些是行锁,而不是表锁,所以通常仍可以通过多个事务读取和写入表,尽管某些行被锁定。)
TRX_LOCK_STRUCTS
事务保留的锁数。
TRX_LOCK_MEMORY_BYTES
内存中此事务的锁结构占用的总大小。
TRX_ROWS_LOCKED
此交易锁定的大致数字或行数。 该值可能包括实际存在但对事务不可见的删除标记行。
TRX_ROWS_MODIFIED
此事务中已修改和插入的行数。
TRX_CONCURRENCY_TICKETS
一个值,指示当前事务在被换出之前可以执行多少工作,由
innodb_concurrency_tickets
系统变量
指定
。
TRX_ISOLATION_LEVEL
当前事务的隔离级别。
TRX_UNIQUE_CHECKS
是否为当前事务打开或关闭唯一检查。 例如,在批量数据加载期间可能会关闭它们。
TRX_FOREIGN_KEY_CHECKS
是否为当前事务打开或关闭外键检查。 例如,在批量数据加载期间可能会关闭它们。
TRX_LAST_FOREIGN_KEY_ERROR
最后一个外键错误的详细错误消息(如果有);
否则
NULL
。
TRX_ADAPTIVE_HASH_LATCHED
自适应哈希索引是否被当前事务锁定。
当自适应哈希索引搜索系统被分区时,单个事务不会锁定整个自适应哈希索引。
自适应哈希索引分区由
innodb_adaptive_hash_index_parts
,默认设置为8。
TRX_ADAPTIVE_HASH_TIMEOUT
是否立即为自适应哈希索引放弃搜索锁存器,或者在MySQL的调用之间保留它。
当没有自适应哈希索引争用时,该值保持为零,语句保留锁存器直到它们完成。
在争用期间,它倒计时到零,并且语句在每次行查找后立即释放锁存器。
当自适应散列索引搜索系统被分区(受控制
innodb_adaptive_hash_index_parts
)时,该值保持为0。
TRX_IS_READ_ONLY
值为1表示事务是只读的。
TRX_AUTOCOMMIT_NON_LOCKING
值为1表示事务是
SELECT
不使用
FOR UPDATE
or
LOCK IN
SHARED MODE
子句的语句,并且正在执行,
autocommit
因此事务只包含这一个语句。
当此列和
TRX_IS_READ_ONLY
都为1时,
InnoDB
优化事务以减少与更改表数据的事务关联的开销。
MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1。排******************** *******
trx_id:1510
trx_state:RUNNING
trx_started:2014-11-19 13:24:40
trx_requested_lock_id:NULL
trx_wait_started:NULL
trx_weight:586739
trx_mysql_thread_id:2
trx_query:DELETE FROM employees.salaries WHERE salary> 65000
trx_operation_state:更新或删除
trx_tables_in_use:1
trx_tables_locked:1
trx_lock_structs:3003
trx_lock_memory_bytes:450768
trx_rows_locked:1407513
trx_rows_modified:583736
trx_concurrency_tickets:0
trx_isolation_level:REPEATABLE READ
trx_unique_checks:1
trx_foreign_key_checks:1
trx_last_foreign_key_error:NULL
trx_adaptive_hash_latched:0
trx_adaptive_hash_timeout:10000
trx_is_read_only:0
trx_autocommit_non_locking:0
使用此表可帮助诊断在并发负载较重时发生的性能问题。 其内容按 第15.14.2.3节“InnoDB事务和锁定信息的持久性和一致性”中 所述进行更新 。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
该
INNODB_VIRTUAL
表提供有关
虚拟生成列所基于的
InnoDB
虚拟生成列
和列的
元数据
。
INNODB_VIRTUAL
表
中将显示
虚拟生成列所基于的每列的
行
。
该
INNODB_VIRTUAL
表包含以下列:
TABLE_ID
表示与虚拟列关联的表的标识符;
与...相同的价值
INNODB_TABLES.TABLE_ID
。
POS
虚拟生成列 的位置值 。 该值很大,因为它编码列序列号和序号位置。 用于计算值的公式使用按位运算:
((nInnoDB实例的虚拟生成列+ 1)<< 16)
+虚拟生成列的序号位置
例如,如果实例中的第一个虚拟生成列
InnoDB
是表的第三列,则公式为
(0 + 1) << 16) +
2
。
InnoDB
实例中
的第一个虚拟生成列
始终为数字0.作为表中的第三列,虚拟生成列的序号位置为2.顺序位置从0开始计算。
BASE_POS
虚拟生成列所基于的列的序号位置。
MySQL的>CREATE TABLE `t1` (`a` int(11) DEFAULT NULL,`b` int(11) DEFAULT NULL,`c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,`h` varchar(10) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;MySQL的>SELECT * FROM INFORMATION_SCHEMA.INNODB_VIRTUALWHERE TABLE_ID IN(SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLESWHERE NAME LIKE "test/t1");+ ---------- + ------- + ---------- + | TABLE_ID | POS | BASE_POS | + ---------- + ------- + ---------- + | 98 | 65538 | 0 | | 98 | 65538 | 1 | + ---------- + ------- + ---------- +
如果为
虚拟生成的列
分配常量值
,如下表所示,则该列的条目不会出现在
INNODB_VIRTUAL
表中。
要显示条目,虚拟生成的列必须具有基本列。
CREATE TABLE`t1`( `a`int(11)DEFAULT NULL, `b` int(11)DEFAULT NULL, `c`int(11)生成总是(5)VIRTUAL )ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
但是,此列的元数据确实显示在
INNODB_COLUMNS
表中。
您必须具有
PROCESS
查询此表
的
权限。
使用
INFORMATION_SCHEMA
COLUMNS
表或
SHOW
COLUMNS
语句可以查看有关此表的列的其他信息,包括数据类型和默认值。
从MySQL 8.0.14开始,线程池
INFORMATION_SCHEMA
表也可用作性能模式表。
(请参见
第26.12.15节“性能模式线程池表”
。)这些
INFORMATION_SCHEMA
表已弃用,将在以后的MySQL版本中删除。
应用程序应从旧表转换到新表。
例如,如果应用程序使用此查询:
SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_STATE;
应用程序应该使用此查询:
SELECT * FROM performance_schema.tp_thread_state;
以下部分描述了
INFORMATION_SCHEMA
与线程池插件关联
的
表(请参见
第5.6.3节“MySQL Enterprise线程池”
)。
它们提供有关线程池操作的信息:
TP_THREAD_GROUP_STATE
:有关线程池线程组状态的信息
TP_THREAD_GROUP_STATS
:线程组统计信息
TP_THREAD_STATE
:有关线程池线程状态的信息
这些表中的行代表快照及时。
在这种情况下
TP_THREAD_STATE
,线程组的所有行都包含时间快照。
因此,MySQL服务器在生成快照时保留线程组的互斥锁。
但是它并没有同时在所有线程组上保存互斥锁,以防止语句
TP_THREAD_STATE
阻止整个MySQL服务器。
该
INFORMATION_SCHEMA
线程池表由各个插件和决策执行是否加载一个可以由独立于其他(见
第5.6.3.2,“线程池安装”
)。
但是,所有表的内容取决于启用的线程池插件。
如果启用了表插件但没有创建线程池插件,则表变为可见并且可以访问但是为空。
从MySQL 8.0.14开始,线程池
INFORMATION_SCHEMA
表也可用作性能模式表。
(请参见
第26.12.15节“性能模式线程池表”
。)这些
INFORMATION_SCHEMA
表已弃用,将在以后的MySQL版本中删除。
应用程序应从旧表转换到新表。
例如,如果应用程序使用此查询:
SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_GROUP_STATE;
应用程序应该使用此查询:
SELECT * FROM performance_schema.tp_thread_group_state;
该
TP_THREAD_GROUP_STATE
表在线程池中每个线程组有一行。
每行提供有关组当前状态的信息。
有关表中列的说明
INFORMATION_SCHEMA
TP_THREAD_GROUP_STATE
,请参见
第26.12.15.1节“tp_thread_group_state表”
。
Performance Schema
tp_thread_group_state
表具有等效列。
从MySQL 8.0.14开始,线程池
INFORMATION_SCHEMA
表也可用作性能模式表。
(请参见
第26.12.15节“性能模式线程池表”
。)这些
INFORMATION_SCHEMA
表已弃用,将在以后的MySQL版本中删除。
应用程序应从旧表转换到新表。
例如,如果应用程序使用此查询:
SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_GROUP_STATS;
应用程序应该使用此查询:
SELECT * FROM performance_schema.tp_thread_group_stats;
该
TP_THREAD_GROUP_STATS
表报告每个线程组的统计信息。
每组有一行。
有关表中列的说明
INFORMATION_SCHEMA
TP_THREAD_GROUP_STATS
,请参见
第26.12.15.2节“tp_thread_group_stats表”
。
Performance Schema
tp_thread_group_stats
表具有等效列。
从MySQL 8.0.14开始,线程池
INFORMATION_SCHEMA
表也可用作性能模式表。
(请参见
第26.12.15节“性能模式线程池表”
。)这些
INFORMATION_SCHEMA
表已弃用,将在以后的MySQL版本中删除。
应用程序应从旧表转换到新表。
例如,如果应用程序使用此查询:
SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_STATE;
应用程序应该使用此查询:
SELECT * FROM performance_schema.tp_thread_state;
该
TP_THREAD_STATE
表在线程池创建的每个线程中有一行来处理连接。
有关表中列的说明
INFORMATION_SCHEMA
TP_THREAD_STATE
,请参见
第26.12.15.3节“tp_thread_state表”
。
Performance Schema
tp_thread_state
表具有等效列。
以下部分描述了
INFORMATION_SCHEMA
与
CONNECTION_CONTROL
插件
关联
的
表
。
此表提供有关每个客户端用户/主机组合的当前连续失败连接尝试次数的信息。
CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS
有这些列:
USERHOST
格式化
连接尝试失败的客户端的用户/主机组合
。
'
user_name'@'host_name'
FAILED_ATTEMPTS
当前连续失败的连接尝试次数
USERHOST
。
这会计算所有失败的尝试,无论它们是否被延迟。
服务器为其响应添加延迟的尝试次数是
FAILED_ATTEMPTS
值与
connection_control_failed_connections_threshold
系统变量值
之间的差异
。
该
CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS
插件必须激活此表是可用的,并且
CONNECTION_CONTROL
插件必须被激活或表的内容将永远是空的。
请参见
第6.4.2节“连接控制插件”
。
该表仅包含已有一个或多个连续失败的连接尝试而没有后续成功尝试的客户端的行。 当客户端成功连接时,其失败连接计数将重置为零,服务器将删除与客户端对应的任何行。
connection_control_failed_connections_threshold
在运行时
为
系统变量赋值会将所有累积的失败连接计数器重置为零,这会导致表变空。
SHOW
语句的
一些扩展
伴随着以下的实现
INFORMATION_SCHEMA
:
INFORMATION_SCHEMA
是一个信息数据库,因此它的名称包含在输出中
SHOW
DATABASES
。
同样,
SHOW
TABLES
可以使用它
INFORMATION_SCHEMA
来获取其表的列表:
MySQL的> SHOW TABLES FROM INFORMATION_SCHEMA;
+ --------------------------------------- +
| Tables_in_INFORMATION_SCHEMA |
+ --------------------------------------- +
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| 专栏|
| COLUMN_PRIVILEGES |
| 发动机|
| 活动|
| 文件|
| KEY_COLUMN_USAGE |
| PARTITIONS |
| 插件|
| PROCESSLIST |
| REFERENTIAL_CONSTRAINTS |
| 常规|
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| 统计|
| 表格|
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| 触发器|
| USER_PRIVILEGES |
| 观点|
+ --------------------------------------- +
SHOW
COLUMNS
并
DESCRIBE
可以显示有关各个
INFORMATION_SCHEMA
表中
列的信息
。
SHOW
接受
LIKE
子句来限制显示的行的
WHERE
语句
也允许一个
子句指定所选行必须满足的更一般条件:
显示字符集 显示收集 显示列 显示数据库 显示功能状态 显示索引 显示开放表格 显示程序状态 显示状态 显示表状态 显示表格 显示触发器 显示变量
该
WHERE
子句(如果存在)将根据
SHOW
语句
显示的列名进行评估
。
例如,该
SHOW
CHARACTER SET
语句生成以下输出列:
MySQL的> SHOW CHARACTER SET;
+ ---------- + ----------------------------- + -------- ------------- + -------- +
| Charset | 说明| 默认排序规则| Maxlen |
+ ---------- + ----------------------------- + -------- ------------- + -------- +
| big5 | Big5繁体中文| big5_chinese_ci | 2 |
| dec8 | DEC西欧| dec8_swedish_ci | 1 |
| cp850 | DOS西欧| cp850_general_ci | 1 |
| hp8 | 惠普西欧| hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom俄语| koi8r_general_ci | 1 |
| 拉丁1 | cp1252西欧| latin1_swedish_ci | 1 |
| 拉丁文2 | ISO 8859-2中欧| latin2_general_ci | 1 |
...
要使用
WHERE
子句
SHOW
CHARACTER SET
,您可以引用这些列名称。
例如,以下语句显示有关默认排序规则包含字符串的字符集的信息
'japanese'
:
MySQL的> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
+ --------- + --------------------------- + ----------- ---------- + -------- +
| Charset | 说明| 默认排序规则| Maxlen |
+ --------- + --------------------------- + ----------- ---------- + -------- +
| ujis | EUC-JP日语| ujis_japanese_ci | 3 |
| sjis | Shift-JIS日语| sjis_japanese_ci | 2 |
| cp932 | SJIS for Windows日语| cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows日语| eucjpms_japanese_ci | 3 |
+ --------- + --------------------------- + ----------- ---------- + -------- +
此语句显示多字节字符集:
MySQL的> SHOW CHARACTER SET WHERE Maxlen > 1;
+ --------- + --------------------------- + ----------- ---------- + -------- +
| Charset | 说明| 默认排序规则| Maxlen |
+ --------- + --------------------------- + ----------- ---------- + -------- +
| big5 | Big5繁体中文| big5_chinese_ci | 2 |
| ujis | EUC-JP日语| ujis_japanese_ci | 3 |
| sjis | Shift-JIS日语| sjis_japanese_ci | 2 |
| euckr | EUC-KR韩语| euckr_korean_ci | 2 |
| gb2312 | GB2312简体中文| gb2312_chinese_ci | 2 |
| gbk | GBK简体中文| gbk_chinese_ci | 2 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp932 | SJIS for Windows日语| cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows日语| eucjpms_japanese_ci | 3 |
+ --------- + --------------------------- + ----------- ---------- + -------- +