的文件
该表提供了MySQL表空间数据存储的文件信息。
的文件
表提供有关InnoDB
数据文件。在NDB集群中,该表还提供NDB集群磁盘数据表存储的文件信息。具体的附加信息InnoDB
,请参阅InnoDB的笔记,在本节的后面;有关NDB集群的其他信息,请参见NDB笔记.
的文件
表有这些列:
FILE_ID
为
InnoDB
:表空间ID,也称为space_id
或fil_space_t: id
.为
NDB
:文件标识符。FILE_ID
列值是自动生成的。FILE_NAME
为
InnoDB
:数据文件的名称。每个表文件和一般表空间都有一个.ibd
文件扩展名。Undo表空间前缀为撤销
.系统表空间前缀为ibdata
.全局临时表空间前缀为ibtmp
.文件名包括文件路径,该路径可能是相对于MySQL数据目录的datadir
系统变量)。为
NDB
:用户创建的undo日志文件名创建日志文件组
或修改日志文件组
创建的数据文件的创建表空间
或修改表空间
.在NDB 8.0中,文件名以相对路径显示;对于undo日志文件,此路径相对于目录
;对于数据文件,它是相对于目录的DataDir
/ ndb_NodeId
_fs / LG
.这意味着,例如,创建的数据文件的名称DataDir
/ ndb_NodeId
_fs / TS添加数据文件data_2.dat初始大小为256M
显示为。/ data_2.dat
.FILE_TYPE
为
InnoDB
:表空间文件类型。有三种可能的文件类型InnoDB
文件。表空间
是保存表、索引或其他形式的用户数据的任何系统、通用或每表一个文件的表空间文件的文件类型。临时
是临时表空间的文件类型。UNDO日志
是保存undo记录的undo表空间的文件类型。为
NDB
:值之一UNDO日志
或数据文件
.在NDB 8.0.13之前,表空间
也是一个可能的值。TABLESPACE_NAME
与文件相关联的表空间的名称。
为
InnoDB
:通用表空间名称与创建时指定的表空间名称一致。每个表文件的表空间名称以以下格式显示:
.的schema_name
/table_name
InnoDB
系统表空间名称为innodb_system
.全局临时表空间名称为innodb_temporary
.默认的undo表空间名称为innodb_undo_001
而且innodb_undo_002
.用户创建的undo表空间名称与创建时指定的相同。TABLE_CATALOG
这个值总是空的。
TABLE_SCHEMA
这总是
零
.TABLE_NAME
这总是
零
.LOGFILE_GROUP_NAME
为
InnoDB
:这总是零
.为
NDB
:日志文件或数据文件所属的日志文件组名称。LOGFILE_GROUP_NUMBER
为
InnoDB
:这总是零
.为
NDB
:对于“磁盘数据”undo日志文件,为该日志文件所属的日志文件组自动生成的ID号。的值与显示的值相同id
列ndbinfo.dict_obj_info
表和log_id
列ndbinfo.logspaces
而且ndbinfo.logspaces
此撤消日志文件的表。引擎
为
InnoDB
: alwaysInnoDB
.为
NDB
: alwaysndbcluster
.FULLTEXT_KEYS
这总是
零
.DELETED_ROWS
这总是
零
.UPDATE_COUNT
这总是
零
.FREE_EXTENTS
为
InnoDB
:当前数据文件中完全空闲的区数。为
NDB
:文件尚未使用的区数。TOTAL_EXTENTS
为
InnoDB
:当前数据文件中使用的完整区数。文件末尾的任何部分区段都不计算在内。为
NDB
:分配给文件的总区数。EXTENT_SIZE
为
InnoDB
:对于页面大小为4KB、8KB或16KB的文件,Extent大小为1048576 (1MB)。对于页面大小为32KB的文件,区段大小为2097152字节(2MB),对于页面大小为64KB的文件,区段大小为4194304 (4MB)。文件
没有报告InnoDB
页面大小。方法定义页面大小innodb_page_size
系统变量。的区段大小信息也可以检索INNODB_TABLESPACES
表在哪里文件。FILE_ID = INNODB_TABLESPACES。空间
.为
NDB
:文件区大小(以字节为单位)。INITIAL_SIZE
为
InnoDB
:文件的初始大小,以字节为单位。为
NDB
:以字节为单位的文件大小。的值是相同的INITIAL_SIZE
条款的创建日志文件组
,修改日志文件组
,创建表空间
,或修改表空间
用于创建文件的语句。MAXIMUM_SIZE
为
InnoDB
:文件中允许的最大字节数。这个值是零
对于除预定义的系统表空间数据文件外的所有数据文件。最大系统表空间文件大小由innodb_data_file_path
.全局临时表空间文件的最大大小由innodb_temp_data_file_path
.一个零
值表示未显式定义文件大小限制。为
NDB
:该值始终与INITIAL_SIZE
价值。AUTOEXTEND_SIZE
表空间的自动扩展大小。为
NDB
,AUTOEXTEND_SIZE
总是零
.CREATION_TIME
这总是
零
.LAST_UPDATE_TIME
这总是
零
.LAST_ACCESS_TIME
这总是
零
.RECOVER_TIME
这总是
零
.TRANSACTION_COUNTER
这总是
零
.版本
为
InnoDB
:这总是零
.为
NDB
:文件的版本号。ROW_FORMAT
为
InnoDB
:这总是零
.为
NDB
之一:固定
或动态
.TABLE_ROWS
这总是
零
.AVG_ROW_LENGTH
这总是
零
.DATA_LENGTH
这总是
零
.MAX_DATA_LENGTH
这总是
零
.INDEX_LENGTH
这总是
零
.DATA_FREE
为
InnoDB
:整个表空间的可用空间总数(以字节为单位)。预定义的系统表空间,包括系统表空间和临时表空间,可以有一个或多个数据文件。为
NDB
:这总是零
.CREATE_TIME
这总是
零
.UPDATE_TIME
这总是
零
.CHECK_TIME
这总是
零
.校验和
这总是
零
.状态
为
InnoDB
:该值为正常的
默认情况下。InnoDB
每个表文件的表空间可能会报告进口
,表示表空间还不可用。为
NDB
:对于NDB集群磁盘数据文件,该值始终为正常的
.额外的
为
InnoDB
:这总是零
.为
NDB
:(NDB 8.0.15及以上对于undo日志文件,这一列显示了undo日志缓冲区的大小;对于数据文件,总是这样零.下面几段将提供更详细的解释。NDBCLUSTER
在集群中的每个数据节点上存储每个数据文件和每个撤消日志文件的副本。在NDB 8.0.13及以后版本中文件
表中每个这样的文件只包含一行。假设您在一个有四个数据节点的NDB集群上运行以下两条语句:创建LOGFILE组mygroup添加UNDOFILE 'new_undo.dat' INITIAL_SIZE 2G引擎创建表空间myts添加一个名为data_1.dat的数据文件:
成功运行这两个语句之后,您应该会看到类似于针对
文件
表:mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA -> FROM INFORMATION_SCHEMA。WHERE ENGINE = 'ndbcluster';+--------------------+-----------+--------------------------+ | 额外LOGFILE_GROUP_NAME | FILE_TYPE | | +--------------------+-----------+--------------------------+ | mygroup | UNDO日志| UNDO_BUFFER_SIZE = 8388608 |组| mygroup功能| | NULL | +--------------------+-----------+--------------------------+
日志含义在NDB 8.0.13中无意删除undo日志缓冲区大小信息,但在NDB 8.0.15中恢复。(Bug #92796, Bug #28800252)
在NDB 8.0.13之前,
文件
表包含文件所属的每个数据节点上的每个文件的一行,以及它的撤消缓冲区的大小。在这些版本中,相同查询的结果每个数据节点包含一行,如下所示:+--------------------+-----------+-----------------------------------------+ | 额外LOGFILE_GROUP_NAME | FILE_TYPE | | +--------------------+-----------+-----------------------------------------+ | mygroup | UNDO日志| CLUSTER_NODE = 5; UNDO_BUFFER_SIZE = 8388608 |组| mygroup | UNDO日志| CLUSTER_NODE = 6; UNDO_BUFFER_SIZE = 8388608 |组| mygroup | UNDO日志| CLUSTER_NODE = 7; UNDO_BUFFER_SIZE = 8388608 |组| mygroup | UNDO日志| CLUSTER_NODE = 8; UNDO_BUFFER_SIZE = 8388608 |组| mygroup功能| | CLUSTER_NODE = 5 | |组mygroup功能| | CLUSTER_NODE = 6 | | mygroup功能| | CLUSTER_NODE = 7 |组| mygroup功能| | CLUSTER_NODE = 8 | +--------------------+-----------+-----------------------------------------+
以下注意事项适用于InnoDB
数据文件。
报告的数据
文件
报道来自InnoDB
打开文件的内存缓存。相比之下,INNODB_DATAFILES
报告来自InnoDB
SYS_DATAFILES
内部数据字典表。报告的数据
文件
包括全局临时表空间数据。该数据在InnoDB
SYS_DATAFILES
内部数据字典表,因此不报告INNODB_DATAFILES
.所报告的Undo表空间数据
文件
当单独的undo表空间存在时,这是MySQL 8.0的默认情况下面的查询返回与。相关的所有数据
InnoDB
表空间。从information_schema中选择file_id、file_name、file_type、tablespace_name、free_extents、total_extents、extent_size、initial_size、maximum_size、autoextend_size、data_free、status。文件引擎= ' InnoDB ' \ G
的
文件
表提供了磁盘数据的信息文件只有;您不能使用它来确定磁盘空间分配或个人的可用性NDB
表。但是,可以看到为每一个分配了多少空间NDB
有数据存储在磁盘上的表—以及还有多少数据可以存储在磁盘上供该表使用ndb_desc.的
CREATION_TIME
,LAST_UPDATE_TIME
,LAST_ACCESSED
值是由操作系统报告的,而不是由NDB
存储引擎。当操作系统没有提供值时,这些列显示零
.两者之间的区别
总区段
而且FREE_EXTENTS
Columns是文件当前使用的区数:从信息模式中选择TOTAL_EXTENTS - FREE_EXTENTS作为extents_using。'./myfile.dat';
类的值乘以该差值,即可近似计算文件使用的磁盘空间量
EXTENT_SIZE
列,该列以字节为单位给出文件的区段大小:SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE为信息模式的字节大小。'./myfile.dat';
类似地,您可以通过相乘来估计给定文件中剩余的可用空间量
FREE_EXTENTS
通过EXTENT_SIZE
:从信息模式中选择FREE_EXTENTS * EXTENT_SIZE作为bytes_free。'./myfile.dat';
重要的以上查询产生的字节值只是近似值,其精度与的值成反比
EXTENT_SIZE
.也就是说,更大的EXTENT_SIZE
近似越不精确。同样重要的是要记住,一旦使用了一个区段,就不能在不删除其组成部分的数据文件的情况下再次释放它。这意味着从“磁盘数据”表中删除的数据将被删除不释放磁盘空间。
中可以设置区段大小
创建表空间
声明。有关更多信息,请参见第13.1.21节“创建表空间语句”.在NDB 8.0.13之前,在
文件
表下面创建一个日志文件组,拥有零
在FILE_NAME
列。在NDB 8.0.13及以后版本中,这一行——它与任何文件都不对应——不再显示,需要查询ndbinfo.logspaces
获取undo日志文件使用情况信息。参见该表的说明以及第23.5.10.1节“NDB集群磁盘数据对象”,以查询更多资料。本项目中剩下的讨论只适用于NDB 8.0.12及更早版本。对于有
零
在FILE_NAME
的值FILE_ID
列总是0
,即FILE_TYPE
列总是UNDO日志
,和状态
列总是正常的
.的值引擎
列总是ndbcluster
.的
FREE_EXTENTS
列显示属于给定日志文件组的所有撤消文件可用的空闲区总数,该日志文件组的名称和编号在LOGFILE_GROUP_NAME
而且LOGFILE_GROUP_NUMBER
分别列。假设您的NDB集群上没有现有的日志文件组,您使用以下语句创建一个日志文件组:
添加UNDOFILE ' UNDOFILE .dat' INITIAL_SIZE = 16M UNDO_BUFFER_SIZE = 1M ENGINE = NDB;
你可以看到这个
零
行文件
表:SELECT DISTINCT FILE_NAME为File, FREE_EXTENTS为Free, TOTAL_EXTENTS为Total, EXTENT_SIZE为Size, INITIAL_SIZE为Initial FROM INFORMATION_SCHEMA.FILES;+--------------+---------+---------+------+----------+ | 免费文件| | | |初始大小。总 | +--------------+---------+---------+------+----------+ | undofile.dat零| 4194304 | 4 | 4194304 | |零零| | 4184068 | | 4 |空 | +--------------+---------+---------+------+----------+
可用于撤消日志记录的空闲区总数总是略小于
TOTAL_EXTENTS
日志文件组中所有撤消文件的列值,因为维护撤消文件需要开销。可以通过向日志文件组添加第二个undo文件,然后针对文件
表:mysql> ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' INITIAL_SIZE = 4M ENGINE = NDB;SELECT DISTINCT FILE_NAME为File, FREE_EXTENTS为Free, TOTAL_EXTENTS为Total, EXTENT_SIZE为Size, INITIAL_SIZE为Initial FROM INFORMATION_SCHEMA.FILES;+----------------+---------+---------+------+----------+ | 免费文件| | | |初始大小。总 | +----------------+---------+---------+------+----------+ | undofile.dat零| 4194304 | 4 | 4194304 | | | undofile02.dat零| 1048576 | 4 | 1048576 | |零零| | 5223944 | | 4 |空 | +----------------+---------+---------+------+----------+
使用此日志文件组的磁盘数据表可用于撤销日志记录的空闲空间(以字节为单位)的大小可以用可用区数乘以初始大小近似表示:
mysql> SELECT FREE_EXTENTS AS 'Free Extents', FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes' FROM INFORMATION_SCHEMA。LOGFILE_GROUP_NAME = 'lg1'且FILE_NAME为空;+--------------+------------+ | 免费区段|免费字节 | +--------------+------------+ | 5223944 | 5223944 | +--------------+------------+
如果你创建了一个NDB集群磁盘数据表,然后在其中插入一些行,你可以看到大约有多少空间剩下来撤消日志记录,例如:
创建表空间ts1添加数据文件组data .dat使用LOGFILE组lg1 INITIAL_SIZE 512M ENGINE = NDB;CREATE TABLE dd (c1 INT NOT NULL PRIMARY KEY, c2 INT, c3 DATE)表空间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。LOGFILE_GROUP_NAME = 'lg1'且FILE_NAME为空;+--------------+------------+ | 免费区段|免费字节 | +--------------+------------+ | 5207565 | 5207565 | +--------------+------------+
在NDB 8.0.13之前,在
文件
表用于每个NDB集群磁盘数据表空间。因为它不对应于实际的文件,所以在NDB 8.0.13中删除了它。这一行了零
的值FILE_NAME
的值FILE_ID
列总是0
,即FILE_TYPE
列总是表空间
,即状态
列总是正常的
的值引擎
列总是NDBCLUSTER
.在NDB 8.0.13及以后版本中,可以通过ndb_desc实用程序。有关更多信息,请参见第23.5.10.1节“NDB集群磁盘数据对象”,以及的描述ndb_desc.
有关更多信息,以及创建、删除和获取NDB集群磁盘数据对象信息的示例,请参见第23.5.10节“NDB集群磁盘数据表”.