FILES
表格提供有關儲存 MySQL 表格空間資料的檔案資訊。
FILES
表格提供有關 InnoDB
資料檔案的資訊。在 NDB 叢集中,此表格也提供有關儲存 NDB 叢集磁碟資料表格的檔案資訊。有關特定於 InnoDB
的其他資訊,請參閱本節稍後的 InnoDB 附註;有關特定於 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
:由CREATE LOGFILE GROUP
或ALTER LOGFILE GROUP
建立的復原日誌檔名稱,或由CREATE TABLESPACE
或ALTER TABLESPACE
建立的資料檔案名稱。在 NDB 8.4 中,檔案名稱會顯示相對路徑;對於復原日誌檔,此路徑是相對於
目錄;對於資料檔案,則是相對於DataDir
/ndb_NodeId
_fs/LG
目錄。這表示,例如,使用DataDir
/ndb_NodeId
_fs/TSALTER TABLESPACE ts ADD DATAFILE 'data_2.dat' INITIAL SIZE 256M
建立的資料檔案名稱會顯示為./data_2.dat
。FILE_TYPE
針對
InnoDB
:表格空間檔案類型。InnoDB
檔案有三種可能的檔案類型。TABLESPACE
是用於任何系統、一般或每個表格的表格空間檔案的檔案類型,這些檔案會儲存表格、索引或其他形式的使用者資料。TEMPORARY
是暫存表格空間的檔案類型。UNDO LOG
是復原表格空間的檔案類型,這些表格空間會儲存復原記錄。對於
NDB
:值為UNDO LOG
或DATAFILE
其中之一。TABLESPACE_NAME
與檔案相關聯的表空間名稱。
對於
InnoDB
:一般表空間名稱會如同建立時所指定。每個資料表單獨檔案的表空間名稱會以以下格式顯示:
。schema_name
/table_name
InnoDB
系統表空間名稱為innodb_system
。全域暫存表空間名稱為innodb_temporary
。預設的復原表空間名稱為innodb_undo_001
和innodb_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
和ndbinfo.logspaces
表格中此復原記錄檔的log_id
資料行所顯示的值相同。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 GROUP
、ALTER LOGFILE GROUP
、CREATE TABLESPACE
或ALTER TABLESPACE
陳述式中,建立檔案的INITIAL_SIZE
子句所使用的值相同。MAXIMUM_SIZE
對於
InnoDB
:允許檔案的最大位元組數。除了預先定義的系統表空間資料檔以外,所有資料檔的值都是NULL
。最大系統表空間檔案大小由innodb_data_file_path
定義。最大全域暫存表空間檔案大小由innodb_temp_data_file_path
定義。預先定義的系統表空間資料檔的NULL
值表示未明確定義檔案大小限制。對於
NDB
:此值永遠與INITIAL_SIZE
值相同。AUTOEXTEND_SIZE
表空間的自動擴充大小。對於
NDB
,AUTOEXTEND_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
。對於
NDB
:FIXED
或DYNAMIC
其中之一。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
:此值預設為NORMAL
。InnoDB
每個資料表的表空間可能會回報IMPORTING
,表示表空間尚不可用。對於
NDB
:對於 NDB Cluster 磁碟資料檔案,此值永遠為NORMAL
。EXTRA
對於
InnoDB
:此值永遠為NULL
。對於
NDB
:對於復原記錄檔,此資料行會顯示復原記錄緩衝區大小;對於資料檔,此值永遠為 NULL。接下來的幾個段落會提供更詳細的說明。NDB
在叢集中的每個資料節點上儲存每個資料檔和每個復原記錄檔的副本。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 | +--------------------+-----------+--------------------------+
以下注意事項適用於 InnoDB
資料檔。
FILES
所回報的資訊是從開啟檔案的InnoDB
記憶體內快取取得,而INNODB_DATAFILES
則從InnoDB
SYS_DATAFILES
內部資料字典表格取得資料。FILES
提供的資訊包含全域暫存表空間資訊,此資訊在InnoDB
SYS_DATAFILES
內部資料字典表格中無法取得,因此未包含在INNODB_DATAFILES
中。當存在個別的復原表空間時(如同 MySQL 8.4 中的預設設定),會在
FILES
中顯示復原表空間資訊。以下查詢會傳回與
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
FILES
表格僅提供有關磁碟資料檔案的資訊;您無法使用它來判斷個別NDB
資料表的磁碟空間配置或可用性。不過,可以使用 ndb_desc 來查看已配置多少空間給在磁碟上儲存資料的每個NDB
資料表,以及該資料表在磁碟上儲存資料的剩餘可用空間。FILES
表格中包含的大部分資訊,也可以在ndbinfo
files
表格中找到。CREATION_TIME
、LAST_UPDATE_TIME
和LAST_ACCESSED
值由作業系統回報,而不是由NDB
儲存引擎提供。如果作業系統未提供任何值,則這些資料行會顯示NULL
。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
越大,估計值就越不準確。同樣重要的是要記住,一旦使用範圍,就無法再次釋放範圍,除非刪除它所屬的資料檔。這表示從磁碟資料表中刪除資料不會釋放磁碟空間。
您可以在
CREATE TABLESPACE
陳述式中設定 extent 的大小。更多資訊,請參閱第 15.1.21 節,「CREATE TABLESPACE 陳述式」。您可以使用 ndb_desc 公用程式取得關於磁碟資料表空間的資訊。更多資訊,請參閱第 25.6.11.1 節,「NDB Cluster 磁碟資料物件」,以及 ndb_desc 的說明。
如需更多資訊,以及關於建立、捨棄和取得 NDB Cluster 磁碟資料物件的範例,請參閱第 25.6.11 節,「NDB Cluster 磁碟資料表」。