Documentation Home

21.5.1 INFORMATION_SCHEMA 文件表

FILES表提供有关NDB 存储 MySQL 磁盘数据表的文件的信息。

FILES表有以下列:

  • FILE_ID

    文件标识符。FILE_ID列值是自动生成的。

  • FILE_NAME

    由或 UNDO创建的日志文件 的名称,或由或创建的数据文件的名称。 CREATE LOGFILE GROUPALTER LOGFILE GROUPCREATE TABLESPACEALTER TABLESPACE

  • FILE_TYPE

    UNDO LOGDATAFILE或之一TABLESPACE

  • TABLESPACE_NAME

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

  • TABLE_CATALOG

    该值始终为空。

  • TABLE_SCHEMA

    该值始终为NULL.

  • TABLE_NAME

    与文件关联的磁盘数据表的名称(如果有)。

  • LOGFILE_GROUP_NAME

    日志文件或数据文件所属的日志文件组的名称。

  • LOGFILE_GROUP_NUMBER

    对于UNDO日志文件,自动生成的日志文件所属的日志文件组的ID号。

  • ENGINE

    对于 NDB Cluster Disk Data 日志文件或数据文件,此值始终NDBNDBCLUSTER.

  • FULLTEXT_KEYS

    对于 NDB Cluster Disk Data 日志文件或数据文件,此值始终为空。

  • DELETED_ROWS

    该值始终为NULL.

  • UPDATE_COUNT

    该值始终为NULL.

  • FREE_EXTENTS

    文件尚未使用的区数。

  • TOTAL_EXTENTS

    分配给文件的区总数。

  • EXTENT_SIZE

    文件范围的大小(以字节为单位)。

  • INITIAL_SIZE

    文件的大小(以字节为单位)。这与用于创建文件 的, , , or 语句的INITIAL_SIZE子句中 使用的值相同。CREATE LOGFILE GROUPALTER LOGFILE GROUPCREATE TABLESPACEALTER TABLESPACE

  • MAXIMUM_SIZE

    对于 NDB Cluster 磁盘数据文件,此值始终与INITIAL_SIZEvalue 相同。

  • AUTOEXTEND_SIZE

    对于 NDB Cluster 磁盘数据文件,此值始终为空。

  • CREATION_TIME

    创建文件的日期和时间。

  • LAST_UPDATE_TIME

    上次修改文件的日期和时间。

  • LAST_ACCESS_TIME

    服务器上次访问文件的日期和时间。

  • RECOVER_TIME

    对于 NDB Cluster 磁盘数据文件,此值始终为 0.

  • TRANSACTION_COUNTER

    对于 NDB Cluster 磁盘数据文件,此值始终为 0.

  • VERSION

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • ROW_FORMAT

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • TABLE_ROWS

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • AVG_ROW_LENGTH

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • DATA_LENGTH

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • MAX_DATA_LENGTH

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • INDEX_LENGTH

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • DATA_FREE

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • CREATE_TIME

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • UPDATE_TIME

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • CHECK_TIME

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • CHECKSUM

    对于 NDB Cluster 磁盘数据文件,此值始终为 NULL.

  • STATUS

    对于 NDB Cluster 磁盘数据文件,此值始终为 NORMAL.

  • EXTRA

    对于 NDB Cluster Disk Data 文件,该EXTRA 列显示文件属于哪个数据节点(每个数据节点都有自己的副本),以及其撤消缓冲区的大小。假设您在具有四个数据节点的 NDB Cluster 上使用此语句:

    CREATE LOGFILE GROUP mygroup
        ADD UNDOFILE 'new_undo.dat'
        INITIAL_SIZE 2G
        ENGINE NDB;

    成功运行该CREATE LOGFILE GROUP语句后,您应该会看到类似于此处针对该FILES表查询显示的结果:

    mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA
             FROM INFORMATION_SCHEMA.FILES
             WHERE FILE_NAME = 'new_undo.dat';
    
    +--------------------+-----------+-----------------------------------------+
    | 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 |
    +--------------------+-----------+-----------------------------------------+

笔记

  • FILES表是非标准INFORMATION_SCHEMA表。

新开发银行票据

  • 此表仅提供有关磁盘数据 文件的信息;您不能使用它来确定单个NDB表的磁盘空间分配或可用性。但是,可以使用ndb_descNDB查看为每个将数据存储在磁盘上的表 分配了多少空间 ,以及该表的磁盘上剩余多少空间可用于存储数据。有关更多信息,请参阅 第 18.5.10 节,“ndb_desc — 描述 NDB 表”

  • 、和 值由操作系统报告,而不是由 CREATION_TIME存储 引擎提供。如果操作系统未提供任何值,这些列将显示。 LAST_UPDATE_TIMELAST_ACCESSEDNDB0000-00-00 00:00:00

  • TOTAL EXTENTS 和列 之间的区别FREE_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变得越大,近似值就越不准确。

    同样重要的是要记住,一旦使用了一个盘区,如果不删除它所属的数据文件,就不能再次释放它。这意味着从磁盘数据表中删除不会释放磁盘空间。

    extent 大小可以在CREATE TABLESPACE语句中设置。有关详细信息,请参阅 第 13.1.18 节,“CREATE TABLESPACE 语句”

  • FILES创建日志文件组后,表 中会出现额外的一行 。此行具有 列NULL的值 FILE_NAME。对于这一行,列的值FILE_ID总是 0FILE_TYPE列的值总是UNDO LOGSTATUS 列的值总是NORMAL。该 ENGINE列的值始终为 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;

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

    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 Cluster Disk Data 表,然后向其中插入一些行,您可以看到大约还有多少空间用于之后的撤消日志记录,例如:

    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 Cluster 表空间,表中都存在一个附加行 FILES,无论是否有任何数据文件与该表空间关联。此行具有列NULL 的值FILE_NAME。对于这一行,列的值FILE_ID 总是0FILE_TYPE列的值总是 TABLESPACESTATUS列的值总是 NORMAL。该 ENGINE列的值始终为 NDBCLUSTER

  • 有关其他信息以及创建和删除 NDB Cluster 磁盘数据对象的示例,请参阅 第 18.6.11 节,“NDB Cluster 磁盘数据表”