文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  INFORMATION_SCHEMA FILES 表格

28.3.15 INFORMATION_SCHEMA FILES 表格

FILES 表格提供有關儲存 MySQL 表格空間資料的檔案資訊。

FILES 表格提供有關 InnoDB 資料檔案的資訊。在 NDB 叢集中,此表格也提供有關儲存 NDB 叢集磁碟資料表格的檔案資訊。有關特定於 InnoDB 的其他資訊,請參閱本節稍後的 InnoDB 附註;有關特定於 NDB 叢集的其他資訊,請參閱 NDB 附註

FILES 表格具有下列欄位

  • FILE_ID

    針對 InnoDB:表格空間 ID,也稱為 space_idfil_space_t::id

    針對 NDB:檔案識別碼。FILE_ID 欄位值會自動產生。

  • FILE_NAME

    針對 InnoDB:資料檔案的名稱。每個表格的檔案和一般表格空間都有 .ibd 副檔名。復原表格空間會加上 undo 前置詞。系統表格空間會加上 ibdata 前置詞。全域暫存表格空間會加上 ibtmp 前置詞。檔案名稱包含檔案路徑,該路徑可能是相對於 MySQL 資料目錄(datadir 系統變數的值)。

    針對 NDB:由 CREATE LOGFILE GROUPALTER LOGFILE GROUP 建立的復原日誌檔名稱,或由 CREATE TABLESPACEALTER TABLESPACE 建立的資料檔案名稱。在 NDB 8.4 中,檔案名稱會顯示相對路徑;對於復原日誌檔,此路徑是相對於 DataDir/ndb_NodeId_fs/LG 目錄;對於資料檔案,則是相對於 DataDir/ndb_NodeId_fs/TS 目錄。這表示,例如,使用 ALTER TABLESPACE ts ADD DATAFILE 'data_2.dat' INITIAL SIZE 256M 建立的資料檔案名稱會顯示為 ./data_2.dat

  • FILE_TYPE

    針對 InnoDB:表格空間檔案類型。InnoDB 檔案有三種可能的檔案類型。TABLESPACE 是用於任何系統、一般或每個表格的表格空間檔案的檔案類型,這些檔案會儲存表格、索引或其他形式的使用者資料。TEMPORARY 是暫存表格空間的檔案類型。UNDO LOG 是復原表格空間的檔案類型,這些表格空間會儲存復原記錄。

    對於 NDB:值為 UNDO LOGDATAFILE 其中之一。

  • TABLESPACE_NAME

    與檔案相關聯的表空間名稱。

    對於 InnoDB:一般表空間名稱會如同建立時所指定。每個資料表單獨檔案的表空間名稱會以以下格式顯示:schema_name/table_nameInnoDB 系統表空間名稱為 innodb_system。全域暫存表空間名稱為 innodb_temporary。預設的復原表空間名稱為 innodb_undo_001innodb_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.logspacesndbinfo.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 GROUPALTER LOGFILE GROUPCREATE TABLESPACEALTER TABLESPACE 陳述式中,建立檔案的 INITIAL_SIZE 子句所使用的值相同。

  • MAXIMUM_SIZE

    對於 InnoDB:允許檔案的最大位元組數。除了預先定義的系統表空間資料檔以外,所有資料檔的值都是 NULL。最大系統表空間檔案大小由 innodb_data_file_path 定義。最大全域暫存表空間檔案大小由 innodb_temp_data_file_path 定義。預先定義的系統表空間資料檔的 NULL 值表示未明確定義檔案大小限制。

    對於 NDB:此值永遠與 INITIAL_SIZE 值相同。

  • AUTOEXTEND_SIZE

    表空間的自動擴充大小。對於 NDBAUTOEXTEND_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

    對於 NDBFIXEDDYNAMIC 其中之一。

  • 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:此值預設為 NORMALInnoDB 每個資料表的表空間可能會回報 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                     |
    +--------------------+-----------+--------------------------+

注意事項

  • FILES 是非標準的 INFORMATION_SCHEMA 表格。

  • 您必須具有 PROCESS 權限才能查詢此表格。

InnoDB 注意事項

以下注意事項適用於 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

NDB 注意事項

  • FILES 表格僅提供有關磁碟資料檔案的資訊;您無法使用它來判斷個別 NDB 資料表的磁碟空間配置或可用性。不過,可以使用 ndb_desc 來查看已配置多少空間給在磁碟上儲存資料的每個 NDB 資料表,以及該資料表在磁碟上儲存資料的剩餘可用空間。

  • FILES 表格中包含的大部分資訊,也可以在 ndbinfo files 表格中找到。

  • CREATION_TIMELAST_UPDATE_TIMELAST_ACCESSED 值由作業系統回報,而不是由 NDB 儲存引擎提供。如果作業系統未提供任何值,則這些資料行會顯示 NULL

  • TOTAL EXTENTSFREE_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 磁碟資料表」