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_nameInnoDB系統表空間名稱為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則從InnoDBSYS_DATAFILES內部資料字典表格取得資料。FILES提供的資訊包含全域暫存表空間資訊,此資訊在InnoDBSYS_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表格中包含的大部分資訊,也可以在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陳述式中設定 extent 的大小。更多資訊,請參閱第 15.1.21 節,「CREATE TABLESPACE 陳述式」。您可以使用 ndb_desc 公用程式取得關於磁碟資料表空間的資訊。更多資訊,請參閱第 25.6.11.1 節,「NDB Cluster 磁碟資料物件」,以及 ndb_desc 的說明。
如需更多資訊,以及關於建立、捨棄和取得 NDB Cluster 磁碟資料物件的範例,請參閱第 25.6.11 節,「NDB Cluster 磁碟資料表」。