Spec-Zone.ru › MySQL 5.7

24.3.9 Таблица INFORMATION_SCHEMA FILES

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

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

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

  • FILE_ID

    Для InnoDB: Идентификатор табличного пространства, также известный как space_id или fil_space_t::id.

    Для NDB: Идентификатор файла. Значения столбца FILE_ID автоматически генерируются.

  • FILE_NAME

    Для InnoDB: Имя файла данных. Файлы в табличном пространстве и общие табличные пространства имеют расширение имени файла .ibd. Табличные пространства отката имеют префикс undo. Системное табличное пространство имеет префикс ibdata. Временные табличные пространства имеют префикс ibtmp. Имя файла включает путь к файлу, который может быть относительным к каталогу данных MySQL (значение системной переменной datadir).

    Для NDB: Имя файла журнала UNDO, созданного командой CREATE LOGFILE GROUP или ALTER LOGFILE GROUP, или файла данных, созданного командами CREATE TABLESPACE или ALTER TABLESPACE.

  • FILE_TYPE

    Для InnoDB: Тип файла табличного пространства. Существует три возможных типа файлов для файлов InnoDB. TABLESPACE — тип файла для любого системного, общего или табличного пространства на основе файла, содержащего таблицы, индексы или другие формы пользовательских данных. TEMPORARY — тип файла для временных табличных пространств. UNDO LOG — тип файла для табличных пространств отката, которые хранят записи отката.

    Для NDB: Одно из значений UNDO LOG, DATAFILE или TABLESPACE.

  • TABLESPACE_NAME

    Имя табличного пространства, с которым связан файл.

  • 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 и столбца 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_SYS_TABLESPACES, где FILES.FILE_ID = INNODB_SYS_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: Это всегда NORMAL.

  • EXTRA

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

    Для NDB: Этот столбец показывает, к какому узлу данных принадлежит файл данных или журнал отката (каждый узел данных имеет свою копию каждого файла); для файлов журнала отката он также показывает размер буфера журнала отката. Предположим, что вы используете эту команду в NDB кластере с четырьмя узлами данных:

    CREATE LOGFILE GROUP mygroup
        ADD UNDOFILE 'new_undo.dat'
        INITIAL_SIZE 2G
        ENGINE NDB;
    

    После успешного выполнения команды CREATE LOGFILE GROUP, вы должны увидеть результат, похожий на показанный здесь для этого запроса к таблице FILES:

    mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA
             FROM INFORMATION_SCHEMA.FILES
             WHERE FILE_NAME = 'new_undo.dat';
    
    +--------------------+-----------+-----------------------------------------+
    | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA                                   |
    +--------------------+-----------+-----------------------------------------+
    | mygroup            | UNDO LOG  | CLUSTER_NODE=5;UNDO_BUFFER_SIZE=8388608 |
    | mygroup            | UNDO LOG  | CLUSTER_NODE=6;UNDO_BUFFER_SIZE=8388608 |
    | mygroup            | UNDO LOG  | CLUSTER_NODE=7;UNDO_BUFFER_SIZE=8388608 |
    | mygroup            | UNDO LOG  | CLUSTER_NODE=8;UNDO_BUFFER_SIZE=8388608 |
    +--------------------+-----------+-----------------------------------------+
    

Примечания

  • FILES — это нестандартная INFORMATION_SCHEMA таблица.

Примечания InnoDB

Следующие примечания относятся к InnoDB файлам данных.

  • Данные, предоставляемые FILES, берутся из кэша памяти открытых файлов. В сравнении, INNODB_SYS_DATAFILES предоставляет данные из внутренней таблицы словаря данных InnoDB SYS_DATAFILES.

  • Данные, предоставляемые FILES, включают данные временного табличного пространства. Эти данные недоступны во внутренней таблице словаря данных InnoDB SYS_DATAFILES, и поэтому не предоставляются INNODB_SYS_DATAFILES.

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

  • Значения 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. Дополнительная информация приведена в разделе 13.1.19, «Оператор CREATE TABLESPACE».

  • После создания группы файлов журнала в таблице FILES присутствует дополнительная строка. Эта строка содержит NULL для значения столбца FILE_NAME и 0 для значения столбца FILE_ID; значение столбца FILE_TYPE всегда UNDO LOG, а значение столбца STATUS всегда NORMAL. Значение столбца ENGINE для этой строки всегда равно ndbcluster.

    Столбец FREE_EXTENTS в этой строке показывает общее количество свободных участков, доступных для всех файлов отката, принадлежащих данной группе файлов журнала, имя и номер которой отображаются в столбцах LOGFILE_GROUP_NAME и LOGFILE_GROUP_NUMBER соответственно.

    Предположим, что в вашем NDB Cluster нет существующих групп файлов журнала, и вы создаёте одну с помощью следующей команды:

    mysql> CREATE LOGFILE GROUP lg1
             ADD UNDOFILE 'undofile.dat'
             INITIAL_SIZE = 16M
             UNDO_BUFFER_SIZE = 1M
             ENGINE = NDB;
    

    Теперь вы можете увидеть эту NULL строку при запросе таблицы FILES:

    mysql> SELECT DISTINCT
             FILE_NAME AS File,
             FREE_EXTENTS AS Free,
             TOTAL_EXTENTS AS Total,
             EXTENT_SIZE AS Size,
             INITIAL_SIZE AS Initial
             FROM INFORMATION_SCHEMA.FILES;
    +--------------+---------+---------+------+----------+
    | File         | Free    | Total   | Size | Initial  |
    +--------------+---------+---------+------+----------+
    | undofile.dat |    NULL | 4194304 |    4 | 16777216 |
    | NULL         | 4184068 |    NULL |    4 |     NULL |
    +--------------+---------+---------+------+----------+
    

    Общее количество свободных участков, доступных для журналирования отката, всегда немного меньше суммы значений столбца TOTAL_EXTENTS для всех файлов отката в группе файлов журнала из-за накладных расходов на поддержание файлов отката. Это можно увидеть, добавив второй файл отката в группу файлов журнала, а затем повторив предыдущий запрос к таблице FILES:

    mysql> ALTER LOGFILE GROUP lg1
             ADD UNDOFILE 'undofile02.dat'
             INITIAL_SIZE = 4M
             ENGINE = NDB;
    
    mysql> SELECT DISTINCT
             FILE_NAME AS File,
             FREE_EXTENTS AS Free,
             TOTAL_EXTENTS AS Total,
             EXTENT_SIZE AS Size,
             INITIAL_SIZE AS Initial
             FROM INFORMATION_SCHEMA.FILES;
    +----------------+---------+---------+------+----------+
    | File           | Free    | Total   | Size | Initial  |
    +----------------+---------+---------+------+----------+
    | undofile.dat   |    NULL | 4194304 |    4 | 16777216 |
    | undofile02.dat |    NULL | 1048576 |    4 |  4194304 |
    | NULL           | 5223944 |    NULL |    4 |     NULL |
    +----------------+---------+---------+------+----------+
    

    Приблизительный объём свободного места в байтах, доступный для журналирования отката таблицами Данных Диска, использующими эту группу файлов журнала, можно приблизительно оценить, умножив количество свободных участков на начальный размер:

    mysql> SELECT
             FREE_EXTENTS AS 'Free Extents',
             FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
             FROM INFORMATION_SCHEMA.FILES
             WHERE LOGFILE_GROUP_NAME = 'lg1'
             AND FILE_NAME IS NULL;
    +--------------+------------+
    | Free Extents | Free Bytes |
    +--------------+------------+
    |      5223944 |   20895776 |
    +--------------+------------+
    

    Если вы создали таблицу Данных Диска NDB Cluster и затем вставили в неё несколько строк, вы можете примерно оценить оставшееся место для журналирования отката, например:

    mysql> CREATE TABLESPACE ts1
             ADD DATAFILE 'data1.dat'
             USE LOGFILE GROUP lg1
             INITIAL_SIZE 512M
             ENGINE = NDB;
    
    mysql> CREATE TABLE dd (
             c1 INT NOT NULL PRIMARY KEY,
             c2 INT,
             c3 DATE
             )
             TABLESPACE ts1 STORAGE DISK
             ENGINE = NDB;
    
    mysql> INSERT INTO dd VALUES
             (NULL, 1234567890, '2007-02-02'),
             (NULL, 1126789005, '2007-02-03'),
             (NULL, 1357924680, '2007-02-04'),
             (NULL, 1642097531, '2007-02-05');
    
    mysql> SELECT
             FREE_EXTENTS AS 'Free Extents',
             FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
             FROM INFORMATION_SCHEMA.FILES
             WHERE LOGFILE_GROUP_NAME = 'lg1'
             AND FILE_NAME IS NULL;
    +--------------+------------+
    | Free Extents | Free Bytes |
    +--------------+------------+
    |      5207565 |   20830260 |
    +--------------+------------+
    
  • Дополнительная строка присутствует в таблице FILES для любого табличного пространства NDB Cluster, независимо от того, связаны ли с ним какие-либо файлы данных. Эта строка содержит NULL для значения столбца FILE_NAME, и значение столбца FILE_ID всегда равно 0. Значение в столбце FILE_TYPE всегда TABLESPACE, а в столбце STATUS всегда NORMAL. Значение столбца ENGINE для этой строки всегда равно ndbcluster.

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

  • Начиная с MySQL 5.7.31, для запроса этой таблицы требуется привилегия PROCESS.

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

Spec-Zone.ru

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