FILES表
该FILES表提供有关存储MySQL表空间数据的文件的信息。
该FILES表提供有关InnoDB数据文件的信息。在NDB群集中,此表还提供有关存储NDB群集磁盘数据表的文件的信息。有关特定于的其他信息InnoDB,请参阅本节后面的InnoDB Notes。有关NDB群集的特定其他信息,请参见 NDB注释。
该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是撤消表空间的文件类型,撤消表空间保存撤消记录。对于
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群集磁盘数据文件,此值始终与该INITIAL_SIZE值相同。AUTOEXTEND_SIZEFor
InnoDB:AUTOEXTEND_SIZE是由innodb_data_file_path系统表空间或由innodb_temp_data_file_path全局临时表空间定义的自动扩展大小。对于
NDB:对于NDB群集磁盘数据文件,此值始终为空。CREATION_TIME对于
InnoDB:此值始终为NULL。对于
NDB:文件创建的日期和时间。LAST_UPDATE_TIME对于
InnoDB:此值始终为NULL。对于
NDB:上次修改文件的日期和时间。LAST_ACCESS_TIME对于
InnoDB:此值始终为NULL。对于
NDB:服务器上次访问文件的日期和时间。RECOVER_TIME对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为0。TRANSACTION_COUNTER对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为0。VERSION对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。ROW_FORMAT对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。TABLE_ROWS对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。AVG_ROW_LENGTH对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。DATA_LENGTH对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。MAX_DATA_LENGTH对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。INDEX_LENGTH对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。DATA_FREE对于
InnoDB:整个表空间的可用空间总量(以字节为单位)。包括系统表空间和临时表表空间的预定义系统表空间可能具有一个或多个数据文件。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。CREATE_TIME对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。UPDATE_TIME对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。CHECK_TIME对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。CHECKSUM对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NULL。STATUS对于
InnoDB:NORMAL默认情况下,此值为。InnoDB每表文件表空间可能会报告IMPORTING,这表明该表空间尚不可用。对于
NDB:对于NDB群集磁盘数据文件,该值始终为NORMAL。EXTRA对于
InnoDB:此值始终为NULL。对于
NDB:对于NDB群集磁盘数据文件,该EXTRA列显示文件所属的数据节点(每个数据节点都有自己的副本),以及其撤消缓冲区的大小。假设您在具有四个数据节点的NDB群集上使用此语句:CREATE LOGFILE GROUP mygroupADD UNDOFILE 'new_undo.dat'INITIAL_SIZE 2GENGINE 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 | 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 | +-------------------- +----------- +----------------------------------------- +NDB 8.0.15之前的NDB Cluster 8.0中未包含此信息。(缺陷#92796,错误#28800252)
注意
- 该
FILES表是非标准INFORMATION_SCHEMA表。
InnoDB注意事项
以下注意事项适用于InnoDB数据文件。
- 报告的数据
FILES从InnoDB内存中的高速缓存中报告打开的文件。相比之下,INNODB_DATAFILES报告来自InnoDBSYS_DATAFILES内部数据字典表的数据。 - 报告的数据
FILES包括全局临时表空间数据。该数据在InnoDBSYS_DATAFILES内部数据字典表中不可用,因此不会由报告INNODB_DATAFILES。 FILES当存在单独的撤消表空间时,将报告撤消表空间数据,默认情况下,它们在MySQL 8.0中是以下查询返回与
InnoDB表空间有关的所有数据。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.FILESWHERE ENGINE ='InnoDB'\G
NDB注意事项
- 该
FILES表仅提供有关磁盘数据文件的信息。您不能将其用于确定单个NDB表的磁盘空间分配或可用性。但是,可以NDB使用ndb_desc参见为在磁盘上存储数据的每个表分配多少空间,以及为该表在磁盘上存储数据的剩余空间。有关更多信息,请参见“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_EXTENTSAS extents_usedFROM INFORMATION_SCHEMA.FILESWHERE FILE_NAME = 'myfile.dat';要估算文件正在使用的磁盘空间量,请将该差值乘以
EXTENT_SIZE列的值,该值将以字节为单位给出文件范围的大小:SELECT (TOTAL_EXTENTS - FREE_EXTENTS) *EXTENT_SIZE AS bytes_usedFROM INFORMATION_SCHEMA.FILESWHERE FILE_NAME = 'myfile.dat';同样,你可以估算的空间,通过乘以给定文件仍然可用金额
FREE_EXTENTS由EXTENT_SIZE:SELECT FREE_EXTENTS *EXTENT_SIZE AS bytes_freeFROM INFORMATION_SCHEMA.FILESWHERE FILE_NAME = 'myfile.dat';重要
先前查询产生的字节值仅是近似值,其精度与的值成反比
EXTENT_SIZE。即,EXTENT_SIZE变得越大,则近似精度越差。同样重要的是要记住,一旦使用了扩展盘区,就不能再次释放它,除非删除它所属的数据文件。这意味着从磁盘数据表中删除不会释放磁盘空间。
范围大小可以在
CREATE TABLESPACE语句中设置。有关更多信息,请参见“ 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 DISTINCT FILE_NAMEAS File , FREE_EXTENTSAS Free, TOTAL_EXTENTSAS Total,EXTENT_SIZE AS Size,INITIAL_SIZE AS InitialFROM 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 lg1ADD UNDOFILE 'undofile02.dat'INITIAL_SIZE = 4MENGINE =NDB ; mysql>SELECT DISTINCT FILE_NAMEAS File , FREE_EXTENTSAS Free, TOTAL_EXTENTSAS Total,EXTENT_SIZE AS Size,INITIAL_SIZE AS InitialFROM 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_EXTENTSAS 'Free Extents', FREE_EXTENTS *EXTENT_SIZE AS 'Free Bytes'FROM INFORMATION_SCHEMA.FILESWHERE LOGFILE_GROUP_NAME = 'lg1' AND FILE_NAME IS NULL; +-------------- +------------ + | Free Extents | Free Bytes | +-------------- +------------ + | 5223944 | 20895776 | +-------------- +------------ +如果创建NDB群集磁盘数据表,然后在其中插入一些行,则可以看到大约剩余的空间可用于以后的撤消日志记录,例如:
mysql>
CREATE TABLESPACE ts1ADD DATAFILE 'data1.dat'USE LOGFILE GROUP lg1INITIAL_SIZE 512MENGINE =NDB ; mysql>CREATE TABLE dd ( c1 INT NOT NULLPRIMARY KEY , c2 INT, c3 DATE )TABLESPACE ts1STORAGE DISK ENGINE =NDB ; mysql>INSERT INTO ddVALUES (NULL, 1234567890, '2007-02-02'), (NULL, 1126789005, '2007-02-03'), (NULL, 1357924680, '2007-02-04'), (NULL, 1642097531, '2007-02-05'); mysql>SELECT FREE_EXTENTSAS 'Free Extents', FREE_EXTENTS *EXTENT_SIZE AS 'Free Bytes'FROM INFORMATION_SCHEMA.FILESWHERE LOGFILE_GROUP_NAME = 'lg1' AND FILE_NAME IS NULL; +-------------- +------------ + | Free Extents | Free Bytes | +-------------- +------------ + | 5207565 | 20830260 | +-------------- +------------ +FILES无论任何数据文件与表空间相关联,任何NDB群集表空间都在表中附加一行。该行具有该列NULL的值FILE_NAME。对于此行,FILE_ID列的值始终0为,FILE_TYPE列的值始终TABLESPACE为,STATUS列的值始终为NORMAL。该ENGINE列的值始终为NDBCLUSTER。- 有关其他信息,以及创建和删除NDB群集磁盘数据对象的示例,请参见“ NDB群集磁盘数据表”。
