文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

28.3.15 INFORMATION_SCHEMA FILES 表格

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

FILES 表格提供有關 InnoDB 資料檔案的資訊。在 NDB Cluster 中,此表格也提供有關儲存 NDB Cluster 磁碟資料表格的檔案資訊。如需有關 InnoDB 的其他特定資訊,請參閱本章節後續的InnoDB 註解;如需有關 NDB Cluster 的其他特定資訊,請參閱NDB 註解

FILES 表格具有下列欄位

  • FILE_ID

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

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

  • FILE_NAME

    對於 InnoDB:資料檔案的名稱。每個表格的檔案和一般表格空間都具有 .ibd 副檔名。Undo 表格空間以 undo 為前綴。系統表格空間以 ibdata 為前綴。全域暫時表格空間以 ibtmp 為前綴。檔案名稱包括檔案路徑,該路徑可能是相對於 MySQL 資料目錄的路徑(datadir 系統變數的值)。

    對於 NDB:由 CREATE LOGFILE GROUPALTER LOGFILE GROUP 建立的 undo 日誌檔案名稱,或由 CREATE TABLESPACEALTER TABLESPACE 建立的資料檔案名稱。在 NDB 9.0 中,檔案名稱會顯示相對路徑;對於 undo 日誌檔案,此路徑是相對於目錄 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 是用於保存 undo 記錄的 undo 表格空間的檔案類型。

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

  • TABLESPACE_NAME

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

    對於 InnoDB:一般表格空間名稱如同建立時所指定的名稱。每個表格的檔案的表格空間名稱會以下列格式顯示:schema_name/table_nameInnoDB 系統表格空間名稱為 innodb_system。全域暫時表格空間名稱為 innodb_temporary。預設 undo 表格空間名稱為 innodb_undo_001innodb_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.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 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

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 陳述式中設定區塊大小。如需更多資訊,請參閱 第 15.1.21 節「CREATE TABLESPACE 陳述式」

  • 您可以使用 ndb_desc 工具來取得關於磁碟資料表格空間的資訊。如需更多資訊,請參閱第 25.6.11.1 節,「NDB Cluster 磁碟資料物件」,以及 ndb_desc 的描述。

  • 如需更多資訊,以及關於建立、刪除和取得 NDB Cluster 磁碟資料物件資訊的範例,請參閱第 25.6.11 節,「NDB Cluster 磁碟資料表」