FILES 表格提供有關儲存 MySQL 表格空間資料的檔案資訊。
FILES 表格提供有關 InnoDB 資料檔案的資訊。在 NDB Cluster 中,此表格也提供有關儲存 NDB Cluster 磁碟資料表格的檔案資訊。如需有關 InnoDB 的其他特定資訊,請參閱本章節後續的InnoDB 註解;如需有關 NDB Cluster 的其他特定資訊,請參閱NDB 註解。
FILES 表格具有下列欄位
FILE_ID對於
InnoDB:表格空間 ID,也稱為space_id或fil_space_t::id。對於
NDB:檔案識別碼。FILE_ID欄位值會自動產生。FILE_NAME對於
InnoDB:資料檔案的名稱。每個表格的檔案和一般表格空間都具有.ibd副檔名。Undo 表格空間以undo為前綴。系統表格空間以ibdata為前綴。全域暫時表格空間以ibtmp為前綴。檔案名稱包括檔案路徑,該路徑可能是相對於 MySQL 資料目錄的路徑(datadir系統變數的值)。對於
NDB:由CREATE LOGFILE GROUP或ALTER LOGFILE GROUP建立的 undo 日誌檔案名稱,或由CREATE TABLESPACE或ALTER TABLESPACE建立的資料檔案名稱。在 NDB 9.0 中,檔案名稱會顯示相對路徑;對於 undo 日誌檔案,此路徑是相對於目錄;對於資料檔案,此路徑是相對於目錄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是用於保存 undo 記錄的 undo 表格空間的檔案類型。對於
NDB:值UNDO LOG或DATAFILE其中之一。TABLESPACE_NAME檔案相關聯的表格空間名稱。
對於
InnoDB:一般表格空間名稱如同建立時所指定的名稱。每個表格的檔案的表格空間名稱會以下列格式顯示:。schema_name/table_nameInnoDB系統表格空間名稱為innodb_system。全域暫時表格空間名稱為innodb_temporary。預設 undo 表格空間名稱為innodb_undo_001和innodb_undo_002。使用者建立的 undo 表格空間名稱如同建立時所指定的名稱。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則是從InnoDBSYS_DATAFILES內部資料字典表格中取得其資料。FILES提供的資訊包括全域暫存表格空間資訊,此資訊在InnoDBSYS_DATAFILES內部資料字典表格中不可用,因此未包含在INNODB_DATAFILES中。當存在單獨的還原表格空間時(如 MySQL 9.0 中預設情況),
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表格中包含的許多資訊也可以在ndbinfofiles表格中找到。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陳述式中設定區塊大小。如需更多資訊,請參閱 第 15.1.21 節「CREATE TABLESPACE 陳述式」。您可以使用 ndb_desc 工具來取得關於磁碟資料表格空間的資訊。如需更多資訊,請參閱第 25.6.11.1 節,「NDB Cluster 磁碟資料物件」,以及 ndb_desc 的描述。
如需更多資訊,以及關於建立、刪除和取得 NDB Cluster 磁碟資料物件資訊的範例,請參閱第 25.6.11 節,「NDB Cluster 磁碟資料表」。