MySQL8-中文参考-一百零三-

59 阅读43分钟

MySQL8 中文参考(一百零三)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

28.3.8 The INFORMATION_SCHEMA COLUMNS Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-columns-table.html

COLUMNS 表提供有关表中列的信息。相关的 ST_GEOMETRY_COLUMNS 表提供有关存储空间数据的表列的信息。请参阅 Section 28.3.35, “The INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS Table”。

COLUMNS 表具有以下列:

  • TABLE_CATALOG

    包含列的表所属的目录名称。此值始终为 def

  • TABLE_SCHEMA

    包含列的表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含列的表的名称。

  • COLUMN_NAME

    列的名称。

  • ORDINAL_POSITION

    列在表中的位置。ORDINAL_POSITION 是必要的,因为您可能想说 ORDER BY ORDINAL_POSITION。与 SHOW COLUMNS 不同,从 COLUMNS 表中的 SELECT 没有自动排序。

  • COLUMN_DEFAULT

    列的默认值。如果列具有显式默认值为 NULL,或者列定义不包含 DEFAULT 子句,则为 NULL

  • IS_NULLABLE

    列的可空性。如果可以在列中存储 NULL 值,则值为 YES,否则为 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_KEYPRI,则该列是PRIMARY KEY或是多列PRIMARY KEY中的一列。

    • 如果COLUMN_KEYUNI,则该列是UNIQUE索引的第一列。(UNIQUE索引允许多个NULL值,但您可以通过检查Null列来确定列是否允许NULL。)

    • 如果COLUMN_KEYMUL,则该列是非唯一索引的第一列,在该索引中允许在列内出现给定值的多个实例。

    如果表的给定列有多个COLUMN_KEY值适用,则COLUMN_KEY显示具有最高优先级的值,按照PRIUNIMUL的顺序。

    如果UNIQUE索引不能包含NULL值且表中没有PRIMARY KEY,则UNIQUE索引可能显示为PRI。如果几列形成复合UNIQUE索引,则UNIQUE索引可能显示为MUL;尽管列的组合是唯一的,但每列仍然可以包含给定值的多个实例。

  • EXTRA

    关于给定列的任何其他可用信息。在这些情况下,该值不为空:

    • 对于具有AUTO_INCREMENT属性的列,显示auto_increment

    • 对于具有ON UPDATE CURRENT_TIMESTAMP属性的TIMESTAMPDATETIME列,显示on update CURRENT_TIMESTAMP

    • 对于生成列,显示STORED GENERATEDVIRTUAL GENERATED

    • DEFAULT_GENERATED 用于具有表达式默认值的列。

  • PRIVILEGES

    您对该列拥有的权限。

  • COLUMN_COMMENT

    包括在列定义中的任何注释。

  • GENERATION_EXPRESSION

    对于生成的列,显示用于计算列值的表达式。对于非生成列为空。有关生成列的信息,请参见第 15.1.20.8 节,“CREATE TABLE 和生成列”。

  • SRS_ID

    此值适用于空间列。它包含列SRID值,指示存储在列中的值的空间参考系统。参见第 13.4.1 节,“空间数据类型”和第 13.4.5 节,“空间参考系统支持”。对于非空间列和没有SRID属性的空间列,该值为NULL

注释

  • SHOW COLUMNS中,Type显示包括来自几个不同的COLUMNS列的值。

  • CHARACTER_OCTET_LENGTH应与CHARACTER_MAXIMUM_LENGTH相同,除了多字节字符集。

  • CHARACTER_SET_NAME可以从COLLATION_NAME派生。例如,如果你执行SHOW FULL COLUMNS FROM t,并且在COLLATION_NAME列中看到一个值为utf8mb4_swedish_ci,那么字符集就是出现在第一个下划线之前的内容:utf8mb4

列信息也可以通过SHOW COLUMNS语句获取。参见 Section 15.7.7.5, “SHOW COLUMNS Statement”。以下语句几乎是等效的:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = '*tbl_name*'
  [AND table_schema = '*db_name*']
  [AND column_name LIKE '*wild*']

SHOW COLUMNS
  FROM *tbl_name*
  [FROM *db_name*]
  [LIKE '*wild*']

在 MySQL 8.0.30 及更高版本中,默认情况下,此表中可见生成的不可见主键列的信息。您可以通过设置show_gipk_in_create_table_and_information_schema = OFF来隐藏这些信息。更多信息,请参见 Section 15.1.20.11, “Generated Invisible Primary Keys”。

28.3.9 INFORMATION_SCHEMA COLUMNS_EXTENSIONS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-columns-extensions-table.html

COLUMNS_EXTENSIONS 表(自 MySQL 8.0.21 起可用)提供有关为主存储引擎和次要存储引擎定义的列属性的信息。

注意

COLUMNS_EXTENSIONS 表保留供将来使用。

COLUMNS_EXTENSIONS 表包含以下列:

  • TABLE_CATALOG

    表所属目录的名称。该值始终为 def

  • TABLE_SCHEMA

    表所属模式(数据库)的名称。

  • TABLE_NAME

    表的名称。

  • COLUMN_NAME

    列的名称。

  • ENGINE_ATTRIBUTE

    为主存储引擎定义的列属性。保留供将来使用。

  • SECONDARY_ENGINE_ATTRIBUTE

    为次要存储引擎定义的列属性。保留供将来使用。

28.3.10 INFORMATION_SCHEMA COLUMN_PRIVILEGES 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-column-privileges-table.html

COLUMN_PRIVILEGES 表提供有关列权限的信息。它从 mysql.columns_priv 系统表中获取其值。

COLUMN_PRIVILEGES 表具有以下列:

  • GRANTEE

    授予权限的帐户的名称,格式为 '*user_name*'@'*host_name*'

  • TABLE_CATALOG

    包含列的表所属的目录的名称。此值始终为 def

  • TABLE_SCHEMA

    表中包含列的模式(数据库)的名称。

  • TABLE_NAME

    包含列的表的名称。

  • COLUMN_NAME

    列的名称。

  • PRIVILEGE_TYPE

    授予的权限。该值可以是可以在列级别授予的任何权限;请参见第 15.7.1.6 节,“GRANT Statement”。每行列出一个权限,因此每个受让人持有的列权限都有一行。

    SHOW FULL COLUMNS 的输出中,权限都在一个列中且为小写,例如,select,insert,update,references。在 COLUMN_PRIVILEGES 中,每行一个权限,且为大写。

  • IS_GRANTABLE

    如果用户具有 GRANT OPTION 权限,则为 YES,否则为 NO。输出不会将 GRANT OPTION 列为具有 PRIVILEGE_TYPE='GRANT OPTION' 的单独行。

注意

以下语句等价:

SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES

SHOW GRANTS ...

28.3.11 INFORMATION_SCHEMA COLUMN_STATISTICS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-column-statistics-table.html

COLUMN_STATISTICS 表提供对列值直方图统计信息的访问。

有关直方图统计信息,请参阅 Section 10.9.6, “优化器统计信息”和 Section 15.7.3.1, “ANALYZE TABLE 语句”。

你只能查看你拥有某些权限的列的信息。

COLUMN_STATISTICS 表包含以下列:

  • SCHEMA_NAME

    统计信息适用的模式的名称。

  • TABLE_NAME

    统计信息适用的列的名称。

  • COLUMN_NAME

    统计信息适用的列的名称。

  • HISTOGRAM

    一个描述列统计信息的JSON对象,存储为直方图。

28.3.12 The INFORMATION_SCHEMA ENABLED_ROLES Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-enabled-roles-table.html

ENABLED_ROLES 表(自 MySQL 8.0.19 起可用)提供了关于当前会话中启用的角色的信息。

ENABLED_ROLES 表包含以下列:

  • ROLE_NAME

    被授予角色的用户名称部分。

  • ROLE_HOST

    被授予角色的主机名部分。

  • IS_DEFAULT

    YESNO,取决于角色是否是默认角色。

  • IS_MANDATORY

    YESNO,取决于角色是否是强制性的。

28.3.13 INFORMATION_SCHEMA ENGINES

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-engines-table.html

ENGINES 表提供有关存储引擎的信息。这对于检查存储引擎是否受支持或查看默认引擎非常有用。

ENGINES 表具有以下列:

  • ENGINE

    存储引擎的名称。

  • SUPPORT

    服务器对存储引擎的支持级别,如下表所示。

    含义
    YES该引擎受支持且处于活动状态
    DEFAULT类似于 YES,并且这是默认引擎
    NO该引擎不受支持
    DISABLED该引擎受支持但已被禁用

    一个值为NO表示服务器在编译时没有对该引擎提供支持,因此无法在运行时启用。

    值为 DISABLED 可能是因为服务器启动时使用了禁用引擎的选项,或者因为没有提供启用它所需的所有选项。在后一种情况下,错误日志应包含指示为什么选项被禁用的原因。请参阅 Section 7.4.2, “The Error Log”。

    如果服务器编译时支持某个存储引擎,但是启动时使用了 --skip-*engine_name* 选项,则可能会看到存储引擎的 DISABLED。对于 NDB 存储引擎,DISABLED 表示服务器编译时支持 NDB Cluster,但未使用 --ndbcluster 选项启动。

    所有 MySQL 服务器都支持 MyISAM 表。无法禁用 MyISAM

  • COMMENT

    存储引擎的简要描述。

  • TRANSACTIONS

    存储引擎是否支持事务。

  • XA

    存储引擎是否支持 XA 事务。

  • SAVEPOINTS

    存储引擎是否支持保存点。

注意

  • ENGINES 是一个非标准的 INFORMATION_SCHEMA 表。

存储引擎信息也可以通过 SHOW ENGINES 语句获取。请参阅 Section 15.7.7.16, “SHOW ENGINES Statement”。以下语句是等效的:

SELECT * FROM INFORMATION_SCHEMA.ENGINES

SHOW ENGINES

28.3.14 INFORMATION_SCHEMA EVENTS Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-events-table.html

EVENTS表提供有关事件管理器事件的信息,这些事件在第 27.4 节“使用事件调度程序”中讨论。

EVENTS表具有以下列:

  • EVENT_CATALOG

    事件所属的目录的名称。此值始终为def

  • EVENT_SCHEMA

    事件所属的模式(数据库)的名称。

  • EVENT_NAME

    事件的名称。

  • DEFINER

    DEFINER子句中指定的帐户(通常是创建事件的用户),格式为'*user_name*'@'*host_name*'

  • TIME_ZONE

    事件时区,用于调度事件并在事件执行时生效的时区。默认值为SYSTEM

  • EVENT_BODY

    事件的DO子句中语句的语言。该值始终为SQL

  • EVENT_DEFINITION

    事件的DO子句组成的 SQL 语句的文本;换句话说,此事件执行的语句。

  • EVENT_TYPE

    事件重复类型,可以是ONE TIME(瞬时)或RECURRING(重复)。

  • EXECUTE_AT

    对于一次性事件,这是在CREATE EVENT语句的AT子句中指定的DATETIME值,用于创建事件的最后一个ALTER EVENT语句,或修改事件的最后一个语句。此列中显示的值反映了事件的AT子句中包含的任何INTERVAL值的加法或减法。例如,如果使用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 模式,以及事件执行时使用的模式。有关允许的值,请参见第 7.1.11 节“服务器 SQL 模式”。

  • STARTS

    重复事件的开始日期和时间。 这显示为 DATETIME 值,并且如果未为事件定义开始日期和时间,则为 NULL。 对于瞬时事件,此列始终为 NULL。 对于定义包含 STARTS 子句的重复事件,此列包含相应的 DATETIME 值。 与 EXECUTE_AT 列一样,此值解析任何使用的表达式。 如果没有 STARTS 子句影响事件的时间,此��为 NULL

  • ENDS

    对于定义包含 ENDS 子句的重复事件,此列包含相应的 DATETIME 值。 与 EXECUTE_AT 列一样,此值解析任何使用的表达式。 如果没有 ENDS 子句影响事件的时间,此列为 NULL

  • STATUS

    事件状态。 ENABLEDDISABLEDSLAVESIDE_DISABLED 中的一个。 SLAVESIDE_DISABLED 表示事件的创建发生在另一个充当复制源的 MySQL 服务器上,并被复制到当前充当副本的 MySQL 服务器,但事件目前未在副本上执行。 有关更多信息,请参见 Section 19.5.1.16, “Replication of Invoked Features”。

  • ON_COMPLETION

    两个值之一 PRESERVENOT 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

    事件创建时用户 'jon'@'ghidora'collation_connection 系统变量的会话值。

  • DATABASE_COLLATION

    与事件关联的数据库的排序规则。

注意

  • EVENTS 是一个非标准的 INFORMATION_SCHEMA 表。

  • EVENTS 表中的时间使用事件时区、当前会话时区或 UTC 显示,如 Section 27.4.4, “事件元数据” 中所述。

  • 有关 SLAVESIDE_DISABLEDORIGINATOR 列的更多信息,请参见 Section 19.5.1.16, “调用特性的复制”。

例子

假设用户 'jon'@'ghidora' 创建了一个名为 e_daily 的事件,然后几分钟后使用 ALTER EVENT 语句对其进行修改,如下所示:

DELIMITER |

CREATE EVENT e_daily
    ON SCHEDULE
      EVERY 1 DAY
    COMMENT 'Saves total number of sessions then clears the table each day'
    DO
      BEGIN
        INSERT INTO site_activity.totals (time, total)
          SELECT CURRENT_TIMESTAMP, COUNT(*)
            FROM site_activity.sessions;
        DELETE FROM site_activity.sessions;
      END |

DELIMITER ;

ALTER EVENT e_daily
    ENABLE;

(注意,注释可以跨越多行。)

然后,该用户可以运行以下 SELECT 语句,并获得如下输出:

mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS
       WHERE EVENT_NAME = 'e_daily'
       AND EVENT_SCHEMA = 'myschema'\G
*************************** 1\. row ***************************
       EVENT_CATALOG: def
        EVENT_SCHEMA: myschema
          EVENT_NAME: e_daily
             DEFINER: jon@ghidora
           TIME_ZONE: SYSTEM
          EVENT_BODY: SQL
    EVENT_DEFINITION: BEGIN
        INSERT INTO site_activity.totals (time, total)
          SELECT CURRENT_TIMESTAMP, COUNT(*)
            FROM site_activity.sessions;
        DELETE FROM site_activity.sessions;
      END
          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
              STARTS: 2018-08-08 11:06:34
                ENDS: NULL
              STATUS: ENABLED
       ON_COMPLETION: NOT PRESERVE
             CREATED: 2018-08-08 11:06:34
        LAST_ALTERED: 2018-08-08 11:06:34
       LAST_EXECUTED: 2018-08-08 16:06:34
       EVENT_COMMENT: Saves total number of sessions then clears the
                      table each day
          ORIGINATOR: 1
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_0900_ai_ci
  DATABASE_COLLATION: utf8mb4_0900_ai_ci

事件信息也可以通过 SHOW EVENTS 语句获取。参见 Section 15.7.7.18, “SHOW EVENTS 语句”。以下语句是等效的:

SELECT
    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
  FROM INFORMATION_SCHEMA.EVENTS
  WHERE table_schema = '*db_name*'
  [AND column_name LIKE '*wild*']

SHOW EVENTS
  [FROM *db_name*]
  [LIKE '*wild*']

28.3.15 INFORMATION_SCHEMA FILES 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-files-table.html

FILES表提供关于存储 MySQL 表空间数据的文件的信息。

FILES表提供关于InnoDB数据文件的信息。在 NDB 集群中,此表还提供 NDB 集群磁盘数据表存储的文件信息。有关特定于InnoDB的其他信息,请参见本节后面的 InnoDB 注释;有关特定于 NDB 集群的其他信息,请参见 NDB 注释。

FILES表具有以下列:

  • FILE_ID

    对于InnoDB:表空间 ID,也称为space_idfil_space_t::id

    对于NDB:文件标识符。FILE_ID列值是自动生成的。

  • FILE_NAME

    对于InnoDB:数据文件的名称。每个表和通用表空间都有一个.ibd文件扩展名。撤销表空间以undo为前缀。系统表空间以ibdata为前缀。全局临时表空间以ibtmp为前缀。文件名包括文件路径,可能相对于 MySQL 数据目录(datadir系统变量的值)。

    对于NDB:由CREATE LOGFILE GROUPALTER LOGFILE GROUP创建的撤销日志文件的名称,或由CREATE TABLESPACEALTER TABLESPACE创建的数据文件的名称。在 NDB 8.0 中,文件名显示为相对路径;对于撤销日志文件,此路径相对于目录DataDir`/ndb_`NodeId`_fs/LG`;对于数据文件,相对于目录DataDir/ndb_NodeId_fs/TS。这意味着,例如,使用ALTER TABLESPACE ts ADD DATAFILE 'data_2.dat' INITIAL SIZE 256M创建的数据文件的名称显示为./data_2.dat

  • FILE_TYPE

    对于InnoDB:表空间文件类型。对于InnoDB文件,有三种可能的文件类型。TABLESPACE是任何系统、通用或每个表的表空间文件的文件类型,用于保存表、索引或其他形式的用户数据。TEMPORARY是临时表空间的文件类型。UNDO LOG是撤销表空间的文件类型,用于保存撤销记录。

    对于NDB:值之一为UNDO LOGDATAFILE。在 NDB 8.0.13 之前,TABLESPACE也是可能的值。

  • TABLESPACE_NAME

    与文件关联的表空间的名称。

    对于InnoDB:一般表空间名称在创建时指定。每表每文件表空间名称显示格式如下:*schema_name*/*table_name*InnoDB系统表空间名称为innodb_system。全局临时表空间名称为innodb_temporary。默认撤销表空间名称��inndb_undo_001inndb_undo_002。用户创建的撤销表空间名称在创建时指定。

  • TABLE_CATALOG

    此值始终为空。

  • TABLE_SCHEMA

    这总是NULL

  • TABLE_NAME

    这总是NULL

  • LOGFILE_GROUP_NAME

    对于InnoDB:这总是NULL

    对于NDB:日志文件或数据文件所属的日志文件组的名称。

  • LOGFILE_GROUP_NUMBER

    对于InnoDB:这总是NULL

    对于NDB:对于磁盘数据撤销日志文件,日志文件所属的日志文件组的自动生成的 ID 号。这与ndbinfo.dict_obj_info表中的id列和ndbinfo.logspaces表中的log_id列以及此撤销日志文件的ndbinfo.logspaces表中的值相同。

  • ENGINE

    对于InnoDB:此值始终为InnoDB

    对于NDB:此值始终为ndbcluster

  • FULLTEXT_KEYS

    这总是NULL

  • DELETED_ROWS

    这总是NULL

  • UPDATE_COUNT

    这总是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:文件的大小(以字节为单位)。这是在CREATE LOGFILE GROUPALTER LOGFILE GROUPCREATE TABLESPACEALTER TABLESPACE语句中用于创建文件的INITIAL_SIZE子句中使用的相同值。

  • MAXIMUM_SIZE

    对于InnoDB:文件中允许的最大字节数。对于除了预定义系统表空间数据文件之外的所有数据文件,该值为NULL。最大系统表空间文件大小由innodb_data_file_path定义。最大全局临时表空间文件大小由innodb_temp_data_file_path定义。对于预定义系统表空间数据文件的NULL值表示未明确定义文件大小限制。

    对于NDB:此值始终与INITIAL_SIZE值相同。

  • AUTOEXTEND_SIZE

    表空间的自动扩展大小。对于NDBAUTOEXTEND_SIZE始终为NULL

  • CREATION_TIME

    这始终为NULL

  • LAST_UPDATE_TIME

    这始终为NULL

  • LAST_ACCESS_TIME

    这始终为NULL

  • RECOVER_TIME

    这始终为NULL

  • TRANSACTION_COUNTER

    这始终为NULL

  • VERSION

    对于InnoDB:这始终为NULL

    对于NDB:文件的版本号。

  • ROW_FORMAT

    对于InnoDB:这始终为NULL

    对于NDBFIXEDDYNAMIC之一。

  • TABLE_ROWS

    这始终为NULL

  • AVG_ROW_LENGTH

    这始终为NULL

  • DATA_LENGTH

    这始终为NULL

  • MAX_DATA_LENGTH

    这始终为NULL

  • INDEX_LENGTH

    这始终为NULL

  • DATA_FREE

    对于InnoDB:整个表空间的空闲空间总量(以字节为单位)。预定义系统表空间,包括系统表空间和临时表表空间,可能有一个或多个数据文件。

    对于NDB:这始终为NULL

  • CREATE_TIME

    这始终为NULL

  • UPDATE_TIME

    这始终为NULL

  • CHECK_TIME

    这始终为NULL

  • CHECKSUM

    这始终为NULL

  • STATUS

    对于InnoDB:默认情况下,此值为NORMALInnoDB文件表表空间可能报告IMPORTING,表示表空间尚不可用。

    对于NDB:对于 NDB Cluster Disk Data 文件,此值始终为NORMAL

  • EXTRA

    对于InnoDB:这始终为NULL

    对于NDB:(NDB 8.0.15 及更高版本)对于撤销日志文件,此列显示撤销日志缓冲区大小;对于数据文件,始终为NULL。下面几段提供了更详细的解释。

    NDBCLUSTER在集群中的每个数据节点上存储每个数据文件和每个撤销日志文件的副本。在 NDB 8.0.13 及更高版本中,FILES表仅包含每个此类文件的一行。假设您在具有四个数据节点的 NDB 集群上运行以下两个语句:

    CREATE LOGFILE GROUP mygroup
        ADD UNDOFILE 'new_undo.dat'
        INITIAL_SIZE 2G
        ENGINE NDBCLUSTER;
    
    CREATE TABLESPACE myts
        ADD DATAFILE 'data_1.dat'
        USE LOGFILE GROUP mygroup
        INITIAL_SIZE 256M
        ENGINE NDBCLUSTER;
    

    运行这两个语句成功后,您应该看到与针对FILES表的查询所示的结果类似的结果:

    mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA
     ->     FROM INFORMATION_SCHEMA.FILES
     ->     WHERE ENGINE = 'ndbcluster';
    
    +--------------------+-----------+--------------------------+
    | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA                    |
    +--------------------+-----------+--------------------------+
    | mygroup            | UNDO LOG  | UNDO_BUFFER_SIZE=8388608 |
    | mygroup            | DATAFILE  | NULL                     |
    +--------------------+-----------+--------------------------+
    

    NDB 8.0.13 中意外删除了撤销日志缓冲区大小信息,但在 NDB 8.0.15 中恢复了。(Bug #92796,Bug #28800252)

    在 NDB 8.0.13 之前,FILES表对于每个数据节点上的每个文件都包含一行,以及其撤销缓冲区的大小。在这些版本中,相同查询的结果每个数据节点包含一行,如下所示:

    +--------------------+-----------+-----------------------------------------+
    | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA                                   |
    +--------------------+-----------+-----------------------------------------+
    | 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 |
    | mygroup            | DATAFILE  | CLUSTER_NODE=5                          |
    | mygroup            | DATAFILE  | CLUSTER_NODE=6                          |
    | mygroup            | DATAFILE  | CLUSTER_NODE=7                          |
    | mygroup            | DATAFILE  | CLUSTER_NODE=8                          |
    +--------------------+-----------+-----------------------------------------+
    

注意

  • FILES是一个非标准的INFORMATION_SCHEMA表。

  • 截至 MySQL 8.0.21,您必须具有PROCESS权限才能查询此表。

InnoDB 注意事项

以下注意事项适用于InnoDB数据文件。

  • FILES报告的信息是从InnoDB内存中的打开文件缓存中获取的,而INNODB_DATAFILESInnoDBSYS_DATAFILES内部数据字典表中获取数据。

  • FILES提供的信息包括全局临时表空间信息,这些信息在InnoDBSYS_DATAFILES内部数据字典表中不可用,因此不包括在INNODB_DATAFILES中。

  • 当存在单独的撤销表空间时,FILES中显示撤销表空间信息,这在 MySQL 8.0 中是默认情况。

  • 以下查询返回与InnoDB表空间相关的所有FILES表信息。

    SELECT
      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
    

NDB 注意事项

  • FILES表仅提供有关磁盘数据文件的信息;您不能用它来确定单个NDB表的磁盘空间分配或可用性。但是,可以使用ndb_desc来查看每个存储在磁盘上的NDB表分配了多少空间,以及该表在磁盘上存储数据的剩余可用空间。

  • 从 NDB 8.0.29 开始,FILES表中的许多信息也可以在ndbinfo.files表中找到。

  • CREATION_TIMELAST_UPDATE_TIMELAST_ACCESSED的值由操作系统报告,而不是由NDB存储引擎提供。如果操作系统未提供值,则这些列显示NULL

  • TOTAL EXTENTSFREE_EXTENTS列之间的差值是当前文件使用的区段数:

    SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used
        FROM INFORMATION_SCHEMA.FILES
        WHERE FILE_NAME = './myfile.dat';
    

    要近似计算文件使用的磁盘空间量,请将该差值乘以EXTENT_SIZE列的值,该值表示文件的一个区段的大小(以字节为单位):

    SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE AS bytes_used
        FROM INFORMATION_SCHEMA.FILES
        WHERE FILE_NAME = './myfile.dat';
    

    同样,可以通过将FREE_EXTENTS乘以EXTENT_SIZE来估算给定文件中剩余可用空间的量:

    SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free
        FROM INFORMATION_SCHEMA.FILES
        WHERE FILE_NAME = './myfile.dat';
    

    重要提示

    前述查询产生的字节值仅为近似值,其精度与EXTENT_SIZE的值成反比。也就是说,EXTENT_SIZE越大,近似值的准确性就越低。

    还要记住,一旦使用了一个区段,就不能再次释放它,除非删除包含它的数据文件。这意味着从磁盘数据表中删除的数据不会释放磁盘空间。

    可以在CREATE TABLESPACE语句中设置区段大小。有关更多信息,请参见第 15.1.21 节,“CREATE TABLESPACE Statement”。

  • 在 NDB 8.0.13 之前,在创建日志文件组后,FILES表中存在一个额外的行,FILE_NAME列中为NULL。在 NDB 8.0.13 及更高版本中,不再显示这一行—该行不对应任何文件,并且需要查询ndbinfo.logspaces表以获取撤销日志文件使用信息。有关更多信息,请参见此表的描述以及第 25.6.11.1 节,“NDB Cluster Disk Data Objects”。

    本项目中剩余的讨论仅适用于 NDB 8.0.12 及更早版本。对于FILE_NAME列中为NULL的行,FILE_ID列的值始终为0FILE_TYPE列的值始终为UNDO LOGSTATUS列的值始终为NORMALENGINE列的值始终为ndbcluster

    在此行中,FREE_EXTENTS列显示给定日志文件组的所有撤销文件可用的总空闲区段数,其名称和编号分别显示在LOGFILE_GROUP_NAMELOGFILE_GROUP_NUMBER列中。

    假设您的 NDB Cluster 上没有现有的日志文件组,并且使用以下语句创建一个:

    mysql> CREATE LOGFILE GROUP lg1
             ADD UNDOFILE 'undofile.dat'
             INITIAL_SIZE = 16M
             UNDO_BUFFER_SIZE = 1M
             ENGINE = NDB;
    

    当您查询 FILES 表时,现在可以看到这个NULL行:

    mysql> SELECT DISTINCT
             FILE_NAME AS File,
             FREE_EXTENTS AS Free,
             TOTAL_EXTENTS AS Total,
             EXTENT_SIZE AS Size,
             INITIAL_SIZE AS Initial
             FROM INFORMATION_SCHEMA.FILES;
    +--------------+---------+---------+------+----------+
    | File         | Free    | Total   | Size | Initial  |
    +--------------+---------+---------+------+----------+
    | undofile.dat |    NULL | 4194304 |    4 | 16777216 |
    | NULL         | 4184068 |    NULL |    4 |     NULL |
    +--------------+---------+---------+------+----------+
    

    用于撤消日志记录的可用自由扩展总数始终略少于日志文件组中所有撤消文件的TOTAL_EXTENTS列值之和,这是由于维护撤消文件所需的开销。可以通过向日志文件组添加第二个撤消文件,然后针对 FILES 表重复上一个查询来看到这一点:

    mysql> ALTER LOGFILE GROUP lg1
             ADD UNDOFILE 'undofile02.dat'
             INITIAL_SIZE = 4M
             ENGINE = NDB;
    
    mysql> SELECT DISTINCT
             FILE_NAME AS File,
             FREE_EXTENTS AS Free,
             TOTAL_EXTENTS AS Total,
             EXTENT_SIZE AS Size,
             INITIAL_SIZE AS Initial
             FROM INFORMATION_SCHEMA.FILES;
    +----------------+---------+---------+------+----------+
    | File           | Free    | Total   | Size | Initial  |
    +----------------+---------+---------+------+----------+
    | undofile.dat   |    NULL | 4194304 |    4 | 16777216 |
    | undofile02.dat |    NULL | 1048576 |    4 |  4194304 |
    | NULL           | 5223944 |    NULL |    4 |     NULL |
    +----------------+---------+---------+------+----------+
    

    通过将自由扩展的数量乘以初始大小来近似计算使用此日志文件组的磁盘数据表的撤消日志记录的可用空间的字节数:

    mysql> SELECT
             FREE_EXTENTS AS 'Free Extents',
             FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
             FROM INFORMATION_SCHEMA.FILES
             WHERE LOGFILE_GROUP_NAME = 'lg1'
             AND FILE_NAME IS NULL;
    +--------------+------------+
    | Free Extents | Free Bytes |
    +--------------+------------+
    |      5223944 |   20895776 |
    +--------------+------------+
    

    如果您创建了一个 NDB 集群磁盘数据表,并插入了一些行,您可以看到之后大约还有多少空间用于撤消日志记录,例如:

    mysql> CREATE TABLESPACE ts1
             ADD DATAFILE 'data1.dat'
             USE LOGFILE GROUP lg1
             INITIAL_SIZE 512M
             ENGINE = NDB;
    
    mysql> CREATE TABLE dd (
             c1 INT NOT NULL PRIMARY KEY,
             c2 INT,
             c3 DATE
             )
             TABLESPACE ts1 STORAGE DISK
             ENGINE = 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> SELECT
             FREE_EXTENTS AS 'Free Extents',
             FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
             FROM INFORMATION_SCHEMA.FILES
             WHERE LOGFILE_GROUP_NAME = 'lg1'
             AND FILE_NAME IS NULL;
    +--------------+------------+
    | Free Extents | Free Bytes |
    +--------------+------------+
    |      5207565 |   20830260 |
    +--------------+------------+
    
  • 在 NDB 8.0.13 之前,FILES 表中为每个 NDB 集群磁盘数据表空间存在额外的行。因为它不对应实际文件,所以在 NDB 8.0.13 中被移除。该行的FILE_NAME列值为NULLFILE_ID列值始终为0FILE_TYPE列值始终为TABLESPACESTATUS列值始终为NORMALENGINE列值始终为NDBCLUSTER

    在 NDB 8.0.13 及更高版本中,您可以使用 ndb_desc 实用程序获取有关磁盘数据表空间的信息。有关更多信息,请参阅 第 25.6.11.1 节,“NDB 集群磁盘数据对象” 的描述,以及 ndb_desc 的说明。

  • 有关更多信息以及有关创建、删除和获取有关 NDB 集群磁盘数据对象的示例,请参阅 第 25.6.11 节,“NDB 集群磁盘数据表”。

28.3.16 INFORMATION_SCHEMA KEY_COLUMN_USAGE 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-key-column-usage-table.html

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

    约束引用的列的名称。

假设有两个名为t1t3的表,其定义如下:

CREATE TABLE t1
(
    s1 INT,
    s2 INT,
    s3 INT,
    PRIMARY KEY(s3)
) ENGINE=InnoDB;

CREATE TABLE t3
(
    s1 INT,
    s2 INT,
    s3 INT,
    KEY(s1),
    CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)
) ENGINE=InnoDB;

对于这两个表,KEY_COLUMN_USAGE 表有两行:

  • 具有CONSTRAINT_NAME = 'PRIMARY'TABLE_NAME = 't1'COLUMN_NAME = 's3'ORDINAL_POSITION = 1POSITION_IN_UNIQUE_CONSTRAINT = NULL的一行。

    对于NDB:此值始终为NULL

  • 具有CONSTRAINT_NAME = 'CO'TABLE_NAME = 't3'COLUMN_NAME = 's2'ORDINAL_POSITION = 1POSITION_IN_UNIQUE_CONSTRAINT = 1的一行。

28.3.17 INFORMATION_SCHEMA KEYWORDS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-keywords-table.html

KEYWORDS 表列出了 MySQL 认为是关键字的单词,并针对每个单词指示它是否是保留的。在某些情况下,保留关键字可能需要特殊处理,例如在用作标识符时需要特殊引用(参见第 11.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;

后两个查询等同于:

SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE RESERVED;
SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE NOT RESERVED;

如果你从源代码构建 MySQL,构建过程会生成一个keyword_list.h头文件,其中包含关键字及其保留状态的数组。该文件可以在构建目录下的sql目录中找到。对于需要关键字列表的应用程序,这个文件可能很有用。

28.3.18 信息模式 ndb_transid_mysql_connection_map 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-ndb-transid-mysql-connection-map-table.html

ndb_transid_mysql_connection_map表提供了NDB事务、NDB事务协调器和连接到 NDB 集群作为 API 节点的 MySQL 服务器之间的映射。在填充server_operationsserver_transactions表时,将使用此信息ndbinfo NDB 集群信息数据库。

INFORMATION_SCHEMA名称SHOW名称备注
mysql_connection_idMySQL 服务器连接 ID
node_id事务协调器节点 ID
ndb_transidNDB事务 ID

mysql_connection_idSHOW PROCESSLIST输出中显示的连接或会话 ID 相同。

与此表相关联的SHOW语句不存在。

这是一个非标准表,特定于 NDB 集群。它作为一个INFORMATION_SCHEMA插件实现;您可以通过检查SHOW PLUGINS的输出来验证它是否受支持。如果启用了ndb_transid_mysql_connection_map支持,此语句的输出将包括一个具有此名称的插件,类型为INFORMATION SCHEMA,并且状态为ACTIVE,如下所示(使用强调文本):

mysql> SHOW PLUGINS;
+----------------------------------+--------+--------------------+---------+---------+
| Name                             | Status | Type               | Library | License |
+----------------------------------+--------+--------------------+---------+---------+
| binlog                           | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password            | ACTIVE | AUTHENTICATION     | NULL    | GPL     |
| sha256_password                  | ACTIVE | AUTHENTICATION     | NULL    | GPL     |
| caching_sha2_password            | ACTIVE | AUTHENTICATION     | NULL    | GPL     |
| sha2_cache_cleaner               | ACTIVE | AUDIT              | NULL    | GPL     |
| daemon_keyring_proxy_plugin      | ACTIVE | DAEMON             | NULL    | GPL     |
| CSV                              | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| MEMORY                           | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| InnoDB                           | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                       | ACTIVE | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP                       | ACTIVE | INFORMATION SCHEMA | NULL    | GPL     |

...

| INNODB_SESSION_TEMP_TABLESPACES  | ACTIVE | INFORMATION SCHEMA | NULL    | GPL     |
| MyISAM                           | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| MRG_MYISAM                       | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| PERFORMANCE_SCHEMA               | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| TempTable                        | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| ARCHIVE                          | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| BLACKHOLE                        | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| ndbcluster                       | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
| ndbinfo                          | ACTIVE | STORAGE ENGINE     | NULL    | GPL     |
*| ndb_transid_mysql_connection_map | ACTIVE | INFORMATION SCHEMA | NULL    | GPL     |*
| ngram                            | ACTIVE | FTPARSER           | NULL    | GPL     |
| mysqlx_cache_cleaner             | ACTIVE | AUDIT              | NULL    | GPL     |
| mysqlx                           | ACTIVE | DAEMON             | NULL    | GPL     |
+----------------------------------+--------+--------------------+---------+---------+
47 rows in set (0.01 sec)

插件默认启用。您可以通过使用--ndb-transid-mysql-connection-map选项启动服务器来禁用它(或者强制服务器不运行,除非插件启动)。如果插件被禁用,状态将显示为SHOW PLUGINS中的DISABLED。插件无法在运行时启用或禁用。

尽管此表及其列的名称以小写显示,但在 SQL 语句中引用它们时,可以使用大写或小写。

要创建此表,MySQL 服务器必须是与 NDB 集群分发一起提供的二进制文件,或者是从启用了NDB存储引擎支持的 NDB 集群源代码构建的。它在标准 MySQL 8.0 服务器中不可用。

28.3.19 INFORMATION_SCHEMA OPTIMIZER_TRACE 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-optimizer-trace-table.html

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。

28.3.20 INFORMATION_SCHEMA PARAMETERS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-parameters-table.html

PARAMETERS表提供有关存储例程(存储过程和存储函数)的参数以及存储函数的返回值的信息。PARAMETERS表不包括内置(本机)函数或可加载函数。

PARAMETERS表具有以下列:

  • SPECIFIC_CATALOG

    包含参数的例程所属的目录的名称。该值始终为def

  • SPECIFIC_SCHEMA

    包含参数的例程所属的模式(数据库)的名称。

  • SPECIFIC_NAME

    包含参数的例程名称。

  • ORDINAL_POSITION

    对于存储过程或函数的连续参数,ORDINAL_POSITION值为 1、2、3 等。对于存储函数,还有一行适用于函数返回值(由RETURNS子句描述)。返回值不是真正的参数,因此描述它的行具有以下独特特征:

    • ORDINAL_POSITION值为 0。

    • PARAMETER_NAMEPARAMETER_MODE值为NULL,因为返回值没有名称,模式也不适用。

  • PARAMETER_MODE

    参数的模式。该值为INOUTINOUT之一。对于存储函数的返回值,该值为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

28.3.21 INFORMATION_SCHEMA PARTITIONS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-partitions-table.html

PARTITIONS 表提供有关表分区的信息。该表中的每一行对应��分区表的单个分区或子分区。有关分区表的更多信息,请参阅 第二十六章,“分区”。

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

    值为 RANGELISTHASHLINEAR HASHKEYLINEAR KEY 中的一个;即 26.2 节,“分区类型” 中讨论的可用分区类型之一。

  • SUBPARTITION_METHOD

    值为 HASHLINEAR HASHKEYLINEAR KEY 中的一个;即 26.2.6 节,“子分区” 中讨论的可用子分区类型之一。

  • PARTITION_EXPRESSION

    在创建表的 CREATE TABLEALTER TABLE 语句中使用的分区函数的表达式,该表达式创建了表的当前分区方案。

    例如,考虑在 test 数据库中使用以下语句创建的分区表:

    CREATE TABLE tp (
        c1 INT,
        c2 INT,
        c3 VARCHAR(25)
    )
    PARTITION BY HASH(c1 + c2)
    PARTITIONS 4;
    

    PARTITIONS 表中来自此表分区的 PARTITIONS 表行中的 PARTITION_EXPRESSION 列显示 c1 + c2,如下所示:

    mysql> SELECT DISTINCT PARTITION_EXPRESSION
           FROM INFORMATION_SCHEMA.PARTITIONS
           WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';
    +----------------------+
    | PARTITION_EXPRESSION |
    +----------------------+
    | c1 + c2              |
    +----------------------+
    

    对于未明确分区的表,无论存储引擎如何,此列始终为 NULL

  • SUBPARTITION_EXPRESSION

    这与定义表的分区表达式的子分区表达式的工作方式相同,就像PARTITION_EXPRESSION为定义表的分区而使用的分区表达式一样。

    如果表没有子分区,这一列为NULL

  • PARTITION_DESCRIPTION

    此列用于RANGELIST分区。对于RANGE分区,它包含在分区的VALUES LESS THAN子句中设置的值,可以是整数或MAXVALUE。对于LIST分区,此列包含在分区的VALUES IN子句中定义的值,这是一个逗号分隔的整数值列表。

    对于PARTITION_METHOD不是RANGELIST的分区,此列始终为NULL

  • TABLE_ROWS

    分区中的表行数。

    对于分区的InnoDB表,TABLE_ROWS列中给出的行数仅是 SQL 优化中使用的估计值,可能并不总是准确。

    对于NDB表,您还可以使用ndb_desc实用程序获取此信息。

  • AVG_ROW_LENGTH

    存储在此分区或子分区中的行的平均长度,以字节为单位。这与DATA_LENGTH除以TABLE_ROWS相同。

    对于NDB表,您还可以使用ndb_desc实用程序获取此信息。

  • DATA_LENGTH

    存储在此分区或子分区中的所有行的总长度,以字节为单位;即存储在分区或子分区中的字节总数。

    对于NDB表,您还可以使用ndb_desc实用程序获取此信息。

  • MAX_DATA_LENGTH

    可以存储在此分区或子分区中的最大字节数。

    对于NDB表,您还可以使用ndb_desc实用程序获取此信息。

  • INDEX_LENGTH

    此分区或子分区的索引文件长度,以字节为单位。

    对于NDB表的分区,无论表是否使用隐式或显式分区,INDEX_LENGTH列的值始终为 0。但是,您可以使用ndb_desc实用程序获取等效信息。

  • DATA_FREE

    分配给分区或子分区但未使用的字节数。

    对于NDB表,您还可以使用ndb_desc实用程序获取此信息。

  • CREATE_TIME

    分区或子分区创建的时间。

  • UPDATE_TIME

    分区或子分区上次修改的时间。

  • CHECK_TIME

    此分区或子分区所属表上次检查的时间。

    对于分区的InnoDB表,该值始终为NULL

  • CHECKSUM

    校验和值(如果有);否则为NULL

  • PARTITION_COMMENT

    如果分区有评论,则评论的文本。如果没有,则该值为空。

    分区评论的最大长度定义为 1024 个字符,PARTITION_COMMENT列的显示宽度也是 1024 个字符,以匹配此限制。

  • NODEGROUP

    分区所属的节点组。对于 NDB 集群表,始终为default。对于使用除NDB之外的存储引擎的分区表,该值也为default。否则,此列为空。

  • TABLESPACE_NAME

    分区所属表空间的名称。该值始终为DEFAULT,除非表使用NDB存储引擎(请参阅本节末尾的注释)。

注释

  • PARTITIONS是一个非标准的INFORMATION_SCHEMA表。

  • 使用除NDB之外的任何存储引擎并且未分区的表在PARTITIONS表中有一行。但是,PARTITION_NAMESUBPARTITION_NAMEPARTITION_ORDINAL_POSITIONSUBPARTITION_ORDINAL_POSITIONPARTITION_METHODSUBPARTITION_METHODPARTITION_EXPRESSIONSUBPARTITION_EXPRESSIONPARTITION_DESCRIPTION列的值均为NULL。此外,在这种情况下,PARTITION_COMMENT列为空。

  • NDB集群中,未明确分区的NDB表在PARTITIONS表中为每个数据节点有一行。对于每一行:

    • SUBPARTITION_NAMESUBPARTITION_ORDINAL_POSITIONSUBPARTITION_METHODPARTITION_EXPRESSIONSUBPARTITION_EXPRESSIONCREATE_TIMEUPDATE_TIMECHECK_TIMECHECKSUMTABLESPACE_NAME列均为NULL

    • PARTITION_METHOD始终为AUTO

    • NODEGROUP列为default

    • PARTITION_COMMENT列为空。

28.3.22 INFORMATION_SCHEMA PLUGINS

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-plugins-table.html

PLUGINS 表提供有关服务器插件的信息。

PLUGINS 表具有以下列:

  • PLUGIN_NAME

    在诸如 INSTALL PLUGINUNINSTALL PLUGIN 等语句中用于引用插件的名称。

  • PLUGIN_VERSION

    插件的一般类型描述符中的版本。

  • PLUGIN_STATUS

    插件状态,为 ACTIVEINACTIVEDISABLEDDELETINGDELETED

  • PLUGIN_TYPE

    插件类型,如 STORAGE ENGINEINFORMATION_SCHEMAAUTHENTICATION

  • PLUGIN_TYPE_VERSION

    插件的特定类型描述符中的版本。

  • PLUGIN_LIBRARY

    插件共享库文件的名称。这是在诸如 INSTALL PLUGINUNINSTALL PLUGIN 等语句中用于引用插件文件的名称。此文件位于由 plugin_dir 系统变量命名的目录中。如果库名称为 NULL,则插件已编译并且无法使用 UNINSTALL PLUGIN 卸载。

  • PLUGIN_LIBRARY_VERSION

    插件 API 接口版本。

  • PLUGIN_AUTHOR

    插件作者。

  • PLUGIN_DESCRIPTION

    插件的简要描述。

  • PLUGIN_LICENSE

    插件许可证(例如,GPL)。

  • LOAD_OPTION

    插件加载方式。值为 OFFONFORCEFORCE_PLUS_PERMANENT。参见 Section 7.6.1, “Installing and Uninstalling Plugins”。

注意事项

  • PLUGINS 是一个非标准的 INFORMATION_SCHEMA 表。

  • 对于使用 INSTALL PLUGIN 安装的插件,PLUGIN_NAMEPLUGIN_LIBRARY 值也会在 mysql.plugin 表中注册。

  • 有关构��� PLUGINS 表信息基础的插件数据结构,请参阅 MySQL 插件 API。

插件信息也可以通过 SHOW PLUGINS 语句获取。参见 Section 15.7.7.25, “SHOW PLUGINS Statement”。这些语句是等效的:

SELECT
  PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,
  PLUGIN_LIBRARY, PLUGIN_LICENSE
FROM INFORMATION_SCHEMA.PLUGINS;

SHOW PLUGINS;

28.3.23 信息模式 PROCESSLIST 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-processlist-table.html

重要

INFORMATION_SCHEMA.PROCESSLIST 已弃用,并将在未来的 MySQL 版本中移除。因此,使用此表的 SHOW PROCESSLIST 的实现也已弃用。建议改用性能模式实现的 PROCESSLIST

MySQL 进程列表显示当前在服务器内执行的线程集合正在执行的操作。PROCESSLIST 表是进程信息的一个来源。要比较此表与其他来源,请参见 进程信息来源。

PROCESSLIST 表具有以下列:

  • ID

    连接标识符。这是在 SHOW PROCESSLIST 语句中显示的相同值,在性能模式 threads 表中的 PROCESSLIST_ID 列中显示,并在线程内部由 CONNECTION_ID() 函数返回。

  • USER

    发出语句的 MySQL 用户。system user 的值指代服务器生成的非客户端线程,用于内部处理任务,例如,延迟行处理程序线程或在副本主机上使用的 I/O 或 SQL 线程。对于 system user,在 Host 列中没有指定主机。unauthenticated user 指代已与客户端连接关联但尚未进行客户端用户认证的线程。event_scheduler 指代监视计划事件的线程(参见 第 27.4 节,“使用事件调度程序”)。

    注意

    USER 值为 system userSYSTEM_USER 权限是不同的。前者指定内部线程。后者区分系统用户和常规用户账户类别(参见 第 8.2.11 节,“账户类别”)。

  • HOST

    发出语句的客户端的主机名(对于system user,没有主机)。TCP/IP 连接的主机名以*host_name*:*client_port*的格式报告,以便更容易确定哪个客户端在执行什么操作。

  • DB

    线程的默认数据库,如果没有选择任何数据库则为NULL

  • COMMAND

    线程代表客户端执行的命令类型,如果会话空闲则为Sleep。有关线程命令的描述,请参见 Section 10.14, “Examining Server Thread (Process) Information” Information")。此列的值对应于客户端/服务器协议的COM_*xxx*命令和Com_*xxx*状态变量。请参见 Section 7.1.10, “Server Status Variables”。

  • TIME

    线程在当前状态下已经持续的秒数。对于复制 SQL 线程,该值是最后一个复制事件的时间戳与复制主机的实际时间之间的秒数。请参见 Section 19.2.3, “Replication Threads”。

  • STATE

    表示线程正在执行的操作、事件或状态。有关STATE值的描述,请参见 Section 10.14, “Examining Server Thread (Process) Information” Information")。

    大多数状态对应于非常快速的操作。如果一个线程在给定状态停留了很多秒,可能存在需要调查的问题。

  • INFO

    线程正在执行的语句,如果没有执行语句则为NULL。该语句可能是发送到服务器的语句,或者如果语句执行其他语句,则是最内层的语句。例如,如果一个CALL语句执行一个正在执行SELECT语句的存储过程,INFO值显示SELECT语句。

注释

  • PROCESSLIST是一个非标准的INFORMATION_SCHEMA表。

  • 类似于SHOW PROCESSLIST语句的输出,PROCESSLIST表提供了关于所有线程的信息,即使是属于其他用户的线程,如果你拥有PROCESS权限。否则(没有PROCESS权限),非匿名用户可以访问自己线程的信息,但不能访问其他用户的线程,匿名用户无法访问线程信息。

  • 如果一个 SQL 语句引用了PROCESSLIST表,MySQL 会在语句执行开始时一次性填充整个表,因此在语句执行期间存在读一致性。对于多语句事务,不存在读一致性。

以下语句是等价的:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST

SHOW FULL PROCESSLIST

28.3.24 INFORMATION_SCHEMA PROFILING 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-profiling-table.html

PROFILING 表提供语句分析信息。其内容对应于 SHOW PROFILESHOW PROFILES 语句产生的信息(参见 Section 15.7.7.30, “SHOW PROFILE Statement”)。除非将 profiling 会话变量设置为 1,否则该表为空。

注意

该表已被弃用;预计在未来的 MySQL 版本中将被移除。请改用 Performance Schema;参见 Section 29.19.1, “Query Profiling Using Performance Schema”。

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 PROFILESHOW PROFILES 语句中获取分析信息。参见 Section 15.7.7.30, “SHOW PROFILE Statement”。例如,以下查询是等效的:

SHOW PROFILE FOR QUERY 2;

SELECT STATE, FORMAT(DURATION, 6) AS DURATION
FROM INFORMATION_SCHEMA.PROFILING
WHERE QUERY_ID = 2 ORDER BY SEQ;

28.3.25 INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-referential-constraints-table.html

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属性的值。可能的值为CASCADESET NULLSET DEFAULTRESTRICTNO ACTION

  • DELETE_RULE

    约束ON DELETE属性的值。可能的值为CASCADESET NULLSET DEFAULTRESTRICTNO ACTION

  • TABLE_NAME

    表的名称。此值与TABLE_CONSTRAINTS表中的相同。

  • REFERENCED_TABLE_NAME

    约束引用的表的名称。

28.3.26 INFORMATION_SCHEMA RESOURCE_GROUPS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-resource-groups-table.html

RESOURCE_GROUPS 表提供了关于资源组的信息。有关资源组功能的一般讨论,请参见 Section 7.1.16, “Resource Groups”。

您只能查看您拥有某些权限的列的信息。

RESOURCE_GROUPS 表具有以下列:

  • RESOURCE_GROUP_NAME

    资源组的名称。

  • RESOURCE_GROUP_TYPE

    资源组类型,可以是 SYSTEMUSER

  • RESOURCE_GROUP_ENABLED

    资源组是否启用(1)或禁用(0);

  • VCPU_IDS

    CPU 亲和性;即资源组可以使用的虚拟 CPU 集合。该值是逗号分隔的 CPU 编号或范围的列表。

  • THREAD_PRIORITY

    分配给资源组的线程的优先级。优先级范围从 -20(最高优先级)到 19(最低优先级)。系统资源组的优先级范围从 -20 到 0。用户资源组的优先级范围从 0 到 19。

28.3.27 INFORMATION_SCHEMA ROLE_COLUMN_GRANTS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-role-column-grants-table.html

ROLE_COLUMN_GRANTS 表(自 MySQL 8.0.19 起可用)提供了关于当前启用角色可用或授予的列权限的信息。

ROLE_COLUMN_GRANTS 表具有以下列:

  • GRANTOR

    授予角色的帐户的用户名部分。

  • GRANTOR_HOST

    授予角色的帐户的主机名部分。

  • GRANTEE

    授予角色的帐户的用户名部分。

  • GRANTEE_HOST

    授予角色的帐户的主机名部分。

  • TABLE_CATALOG

    适用于角色的目录名称。该值始终为 def

  • TABLE_SCHEMA

    适用于角色的模式(数据库)名称。

  • TABLE_NAME

    适用于角色的表名。

  • COLUMN_NAME

    适用于角色的列名。

  • PRIVILEGE_TYPE

    授予的权限。该值可以是可以在列级别授予的任何权限;请参阅 Section 15.7.1.6, “GRANT Statement”。每行列出一个权限,因此每个受让人持有的列权限都有一行。

  • IS_GRANTABLE

    YESNO,取决于角色是否可授予给其他帐户。

28.3.28 INFORMATION_SCHEMA ROLE_ROUTINE_GRANTS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-role-routine-grants-table.html

ROLE_ROUTINE_GRANTS 表(自 MySQL 8.0.19 起可用)提供有关当前启用角色可用或授予的角色例程特权的信息。

ROLE_ROUTINE_GRANTS 表具有以下列:

  • GRANTOR

    授予该角色的帐户的用户名部分。

  • GRANTOR_HOST

    授予该角色的帐户的主机名部分。

  • GRANTEE

    授予该角色的帐户的用户名部分。

  • GRANTEE_HOST

    授予该角色的帐户的主机名部分。

  • SPECIFIC_CATALOG

    例程所属的目录名称。该值始终为 def

  • SPECIFIC_SCHEMA

    例程所属的模式(数据库)的名称。

  • SPECIFIC_NAME

    例程的名称。

  • ROUTINE_CATALOG

    例程所属的目录名称。该值始终为 def

  • ROUTINE_SCHEMA

    例程所属的模式(数据库)的名称。

  • ROUTINE_NAME

    例程的名称。

  • PRIVILEGE_TYPE

    授予的特权。该值可以是在例程级别授予的任何特权;请参阅第 15.7.1.6 节,“GRANT 语句”。每行列出一个特权,因此每个受让人持有的列特权都有一行。

  • IS_GRANTABLE

    YESNO,取决于该角色是否可授予其他帐户。

28.3.29 INFORMATION_SCHEMA ROLE_TABLE_GRANTS 表

dev.mysql.com/doc/refman/8.0/en/information-schema-role-table-grants-table.html

ROLE_TABLE_GRANTS 表(自 MySQL 8.0.19 起可用)提供有关当前启用角色可用或授予的角色的表权限的信息。

ROLE_TABLE_GRANTS 表包含以下列:

  • GRANTOR

    授予角色的帐户的用户名部分。

  • GRANTOR_HOST

    授予角色的帐户的主机名部分。

  • GRANTEE

    授予角色的帐户的用户名部分。

  • GRANTEE_HOST

    授予角色的帐户的主机名部分。

  • TABLE_CATALOG

    角色适用的目录名称。该值始终为def

  • TABLE_SCHEMA

    角色适用的模式(数据库)的名称。

  • TABLE_NAME

    角色适用的表的名称。

  • PRIVILEGE_TYPE

    授予的权限。该值可以是在表级别授予的任何权限;请参阅 Section 15.7.1.6, “GRANT Statement”。每行列出一个权限,因此每个被授予者持有的列权限都有一行。

  • IS_GRANTABLE

    YESNO,取决于角色是否可授予其他帐户。

28.3.30 INFORMATION_SCHEMA ROUTINES 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-routines-table.html

ROUTINES 表提供有关存储例程(存储过程和存储函数)的信息。ROUTINES 表不包括内置(本地)函数或可加载函数。

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

    存储例程的语言。该值从mysql.routines数据字典表的external_language列中读取。

  • PARAMETER_STYLE

    此值始终为SQL

  • IS_DETERMINISTIC

    根据例程是否定义了DETERMINISTIC特性,为YESNO

  • SQL_DATA_ACCESS

    例程的数据访问特性。该值为CONTAINS SQLNO SQLREADS SQL DATAMODIFIES SQL DATA之一。

  • SQL_PATH

    此值始终为NULL

  • SECURITY_TYPE

    例程的SQL SECURITY特性。该值为DEFINERINVOKER之一。

  • CREATED

    创建例程的日期和时间。这是一个TIMESTAMP值。

  • LAST_ALTERED

    上次修改例程的日期和时间。这是一个TIMESTAMP值。如果自创建以来未修改例程,则此值与CREATED值相同。

  • SQL_MODE

    创建或更改例程时生效的 SQL 模式,以及例程执行时的模式。有关允许的值,请参见第 7.1.11 节,“服务器 SQL 模式”。

  • ROUTINE_COMMENT

    如果例程有注释,则为注释的文本。如果没有,则此值为空。

  • DEFINER

    DEFINER子句中命名的帐户(通常是创建例程的用户),格式为'*user_name*'@'*host_name*'

  • CHARACTER_SET_CLIENT

    创建例程时的character_set_client系统变量的会话值。

  • COLLATION_CONNECTION

    创建例程时的collation_connection系统变量的会话值。

  • DATABASE_COLLATION

    与例程关联的数据库的排序规则。

注意事项

  • 要查看有关例程的信息,您必须是例程DEFINER命名的用户,具有SHOW_ROUTINE权限,在全局级别具有SELECT权限,或者在包括例程的范围内被授予CREATE ROUTINEALTER ROUTINEEXECUTE权限。如果您只有CREATE ROUTINEALTER ROUTINEEXECUTE权限,则ROUTINE_DEFINITION列为NULL

  • 存储函数返回值的信息也可以在PARAMETERS表中找到。存储函数的返回值行可以通过具有ORDINAL_POSITION值为 0 的行来识别。