Spec-Zone.ru › MySQL 8.4

28.3.15 Таблица INFORMATION_SCHEMA FILES

Таблица FILES предоставляет информацию о файлах, в которых хранятся данные табличного пространства MySQL.

Таблица FILES предоставляет информацию о файлах данных InnoDB. В NDB Cluster эта таблица также предоставляет информацию о файлах, в которых хранятся таблицы NDB Cluster Disk Data. Дополнительную информацию, специфичную для InnoDB, см. в Примечания к InnoDB в этой же секции; дополнительную информацию, специфичную для NDB Cluster, см. в Примечания к NDB Cluster.

В таблице FILES есть следующие столбцы:

  • FILE_ID

    Для InnoDB: Идентификатор табличного пространства, также называемый 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/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 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: Для файлов журнала отката Disk Data, это автоматически сгенерированный номер идентификатора группы файлов журнала, к которой принадлежит файл журнала. Это то же самое, что и значение, отображаемое для столбца id в таблице ndbinfo.dict_obj_info и столбца log_id в таблицах ndbinfo.logspaces и ndbinfo.logspaces для этого файла журнала отката.

  • 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: Размер экстента составляет 1048576 (1 МБ) для файлов с размером страницы 4 КБ, 8 КБ или 16 КБ. Размер экстента составляет 2097152 байта (2 МБ) для файлов с размером страницы 32 КБ и 4194304 (4 МБ) для файлов с размером страницы 64 КБ. FILES не сообщает о размере страницы InnoDB. Размер страницы определяется системной переменной innodb_page_size. Информация о размере экстента также может быть получена из таблицы INNODB_TABLESPACES, где FILES.FILE_ID = INNODB_TABLESPACES.SPACE.

    Для NDB: Размер экстента для файла в байтах.

  • INITIAL_SIZE

    Для InnoDB: Начальный размер файла в байтах.

    Для NDB: Размер файла в байтах. Это то же значение, которое использовалось в инструкции INITIAL_SIZE в CREATE LOGFILE GROUP, ALTER LOGFILE GROUP, CREATE TABLESPACE или ALTER TABLESPACE для создания файла.

  • 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. Файлы-по-таблице табличных пространств могут сообщать о значении IMPORTING, что указывает на то, что табличное пространство еще недоступно.

    Для NDB: Для файлов данных NDB Cluster Disk Data это значение всегда NORMAL.

END_OF_DOCUMENT_MARKER
  • EXTRA

    Для InnoDB: Это всегда NULL.

    Для NDB: Для файлов журнала отката этот столбец показывает размер буфера журнала отката; для файлов данных он всегда NULL. Более подробное объяснение приведено в следующих абзацах.

    NDB хранит копию каждого файла данных и каждого файла журнала отката на каждом узле данных в кластере. Таблица FILES содержит по одной строке для каждого такого файла. Предположим, что вы выполняете следующие две инструкции на NDB Cluster с четырьмя узлами данных:

    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_DATAFILES получает данные из InnoDB SYS_DATAFILES таблицы внутренней базы данных.

  • Информация, предоставляемая FILES, включает информацию о глобальных временных таблицах, которая недоступна в таблице InnoDB SYS_DATAFILES внутренней базы данных, и поэтому не включена в INNODB_DATAFILES.

  • Информация о пространствах таблиц отката отображается в FILES, если присутствуют отдельные пространства таблиц отката, как это по умолчанию в MySQL 8.4.

  • Следующий запрос возвращает всю информацию о таблице FILES, относящуюся к пространствам таблиц InnoDB.

    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, хранящей данные на диске, а также сколько места осталось для хранения данных на диске для этой таблицы, используя ndb_desc.

  • Большая часть информации, содержащейся в таблице 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. Для получения более подробной информации см. Раздел 15.1.21, «Инструкция CREATE TABLESPACE».

  • Информацию о пространствах таблиц Дисковые данные можно получить с помощью утилиты ndb_desc. Для получения более подробной информации см. Раздел 25.6.11.1, «Объекты NDB Cluster Дисковые данные», а также описание ndb_desc.

  • Дополнительную информацию, а также примеры создания, удаления и получения информации об объектах NDB Cluster Дисковые данные см. в Разделе 25.6.11, «Таблицы NDB Cluster Дисковые данные».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/information-schema-files-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API