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, EXTRAFROM INFORMATION_SCHEMA.FILESWHERE 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предоставляет данные из внутренней таблицы словаря данныхInnoDBSYS_DATAFILES.Данные, предоставляемые
FILES, включают данные временного табличного пространства. Эти данные недоступны во внутренней таблице словаря данныхInnoDBSYS_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 lg1ADD UNDOFILE 'undofile.dat'INITIAL_SIZE = 16MUNDO_BUFFER_SIZE = 1MENGINE = NDB;Теперь вы можете увидеть эту
NULLстроку при запросе таблицыFILES:mysql>
SELECT DISTINCTFILE_NAME AS File,FREE_EXTENTS AS Free,TOTAL_EXTENTS AS Total,EXTENT_SIZE AS Size,INITIAL_SIZE AS InitialFROM 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 lg1ADD UNDOFILE 'undofile02.dat'INITIAL_SIZE = 4MENGINE = NDB;mysql>SELECT DISTINCTFILE_NAME AS File,FREE_EXTENTS AS Free,TOTAL_EXTENTS AS Total,EXTENT_SIZE AS Size,INITIAL_SIZE AS InitialFROM 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>
SELECTFREE_EXTENTS AS 'Free Extents',FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'FROM INFORMATION_SCHEMA.FILESWHERE LOGFILE_GROUP_NAME = 'lg1'AND FILE_NAME IS NULL;+--------------+------------+ | Free Extents | Free Bytes | +--------------+------------+ | 5223944 | 20895776 | +--------------+------------+Если вы создали таблицу Данных Диска NDB Cluster и затем вставили в неё несколько строк, вы можете примерно оценить оставшееся место для журналирования отката, например:
mysql>
CREATE TABLESPACE ts1ADD DATAFILE 'data1.dat'USE LOGFILE GROUP lg1INITIAL_SIZE 512MENGINE = NDB;mysql>CREATE TABLE dd (c1 INT NOT NULL PRIMARY KEY,c2 INT,c3 DATE)TABLESPACE ts1 STORAGE DISKENGINE = 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>SELECTFREE_EXTENTS AS 'Free Extents',FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'FROM INFORMATION_SCHEMA.FILESWHERE 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.