Spec-Zone.ru › MySQL 9.2

28.3.40 Таблица INFORMATION_SCHEMA TABLES

Таблица TABLES предоставляет информацию о таблицах в базах данных.

Столбцы в таблице TABLES, которые представляют статистику таблиц, содержат кэшированные значения. Переменная системы information_schema_stats_expiry определяет период времени, после которого кэшированные статистические данные таблиц истекают. По умолчанию это 86400 секунд (24 часа). Если нет кэшированных статистических данных или данные истекли, при запросе статистических данных таблиц, они извлекаются из хранилищ движков. Для обновления кэшированных значений для определенной таблицы в любое время используйте ANALYZE TABLE. Чтобы всегда получать самые последние статистические данные непосредственно из хранилищ движков, установите значение переменной information_schema_stats_expiry на 0. Более подробную информацию см. в разделе 10.2.3 «Оптимизация запросов INFORMATION_SCHEMA».

Примечание

Если переменная системы innodb_read_only включена, ANALYZE TABLE может завершиться с ошибкой, поскольку не может обновить таблицы статистики в словаре данных, использующие InnoDB. Для операций ANALYZE TABLE, которые обновляют распределение ключей, ошибка может возникнуть даже если операция обновляет саму таблицу (например, если это таблица MyISAM). Чтобы получить обновлённые статистические данные распределения, установите information_schema_stats_expiry=0.

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

  • TABLE_CATALOG

    Название каталога, к которому относится таблица. Это значение всегда def.

  • TABLE_SCHEMA

    Название схемы (базы данных), к которой относится таблица.

  • TABLE_NAME

    Имя таблицы.

  • TABLE_TYPE

    VIEW для таблицы, BASE TABLE для представления или SYSTEM VIEW для таблицы INFORMATION_SCHEMA.

    Таблица TABLES не содержит информацию о таблицах TEMPORARY.

  • ENGINE

    Движок хранения для таблицы. См. Главу 17, Движок хранения InnoDB и Главу 18, Альтернативные движки хранения.

    Для разбиение таблиц, ENGINE показывает имя движка хранения, используемого всеми разделами.

  • VERSION

    Этот столбец не используется. После удаления файлов .frm в MySQL 8.0, этот столбец теперь содержит жестко заданное значение 10, которое является последней версией файла .frm, использованной в MySQL 5.7.

  • ROW_FORMAT

    Формат хранения строк (Fixed, Dynamic, Compressed, Redundant, Compact). Для таблиц MyISAM, Dynamic соответствует тому, что сообщает myisamchk -dvv как Packed.

  • TABLE_ROWS

    Количество строк. Некоторые движки хранения, такие как MyISAM, хранят точное значение. Для других движков хранения, таких как InnoDB, это значение является приближенным и может отличаться от фактического значения на 40% - 50%. В таких случаях используйте SELECT COUNT(*) для получения точного подсчёта.

    TABLE_ROWS равно NULL для таблиц INFORMATION_SCHEMA.

    Для таблиц InnoDB, количество строк является лишь приблизительной оценкой, используемой в оптимизации SQL. (Это также верно, если таблица InnoDB разбита на разделы.)

  • AVG_ROW_LENGTH

    Средняя длина строки.

  • DATA_LENGTH

    Для MyISAM, DATA_LENGTH представляет длину файла данных в байтах.

    Для InnoDB, DATA_LENGTH представляет приблизительный объём выделенной памяти для кластеризованного индекса в байтах. Конкретно, это размер кластеризованного индекса в страницах, умноженный на размер страницы InnoDB.

    Для информации о других движках хранения см. примечания в конце этого раздела.

  • MAX_DATA_LENGTH

    Для MyISAM, MAX_DATA_LENGTH представляет максимальную длину файла данных. Это общее число байтов данных, которые могут быть сохранены в таблице, с учётом размера указателя на данные.

    Не используется для InnoDB.

    Для информации о других движках хранения см. примечания в конце этого раздела.

  • INDEX_LENGTH

    Для MyISAM, INDEX_LENGTH представляет длину файла индекса в байтах.

    Для InnoDB, INDEX_LENGTH представляет приблизительный объём выделенной памяти для некластеризованных индексов в байтах. Конкретно, это сумма размеров некластеризованных индексов в страницах, умноженная на размер страницы InnoDB.

    Для информации о других движках хранения см. примечания в конце этого раздела.

  • DATA_FREE

    Количество выделенных, но неиспользуемых байтов.

    Таблицы InnoDB сообщают о свободном пространстве в табличном пространстве, к которому относится таблица. Для таблицы, расположенной в общем табличном пространстве, это свободный объём общего табличного пространства. Если вы используете несколько табличных пространств, и у таблицы есть собственное табличное пространство, свободный объём относится только к этой таблице. Свободное пространство означает количество байтов в полностью свободных диапазонах минус страховой запас. Даже если свободно пространство отображается как 0, возможно вставка строк, пока не нужно выделять новые диапазоны.

    Для NDB Cluster, DATA_FREE отображает объём выделенной на диске, но неиспользуемой памяти для таблицы данных на диске или фрагмента на диске. (Использование памяти для данных в памяти отображается столбцом DATA_LENGTH.)

    Для разбиение таблиц, это значение является лишь приблизительным и может не быть абсолютно точным. Более точный способ получения этой информации в таких случаях — запросить таблицу INFORMATION_SCHEMA PARTITIONS, как показано в этом примере:

    SELECT SUM(DATA_FREE)
        FROM  INFORMATION_SCHEMA.PARTITIONS
        WHERE TABLE_SCHEMA = 'mydb'
        AND   TABLE_NAME   = 'mytable';
    

    Для дополнительной информации см. Раздел 28.3.22, «Таблица INFORMATION_SCHEMA PARTITIONS».

  • AUTO_INCREMENT

    Следующее значение AUTO_INCREMENT.

  • CREATE_TIME

    Время создания таблицы.

  • UPDATE_TIME

    Время последнего обновления таблицы. Для некоторых движков хранения это значение NULL. Даже в режиме с каждой таблицей InnoDB в отдельном файле .ibd, может произойти задержка записи в файл данных, поэтому время изменения файла отличается от времени последней вставки, обновления или удаления. Для MyISAM используется метка времени файла данных; однако в Windows метка времени не обновляется при обновлениях, поэтому значение неточно.

    UPDATE_TIME отображает метку времени последнего выполненного UPDATE, INSERT или DELETE на таблицах InnoDB, которые не разбиты на разделы. Для MVCC метка времени отражает время COMMIT, которое считается временем последнего обновления. Метки времени не сохраняются при перезапуске сервера или при удалении таблицы из кэша словаря данных InnoDB.

  • CHECK_TIME

    Время последней проверки таблицы. Не все движки хранения обновляют это время, в таком случае значение всегда равно NULL.

    Для разбиение таблиц InnoDB, CHECK_TIME всегда равно NULL.

  • TABLE_COLLATION

    Значение по умолчанию для сопоставления кодировок таблицы. Вывод не отображает явно набор символов по умолчанию для таблицы, но имя сопоставления кодировок начинается с имени набора символов.

  • CHECKSUM

    Значение контрольной суммы в реальном времени, если таковое имеется.

  • CREATE_OPTIONS

    Дополнительные параметры, используемые с CREATE TABLE.

    CREATE_OPTIONS отображает partitioned для разбиения таблицы.

    CREATE_OPTIONS отображает клаузу ENCRYPTION, указанную для таблиц, созданных в табличных пространствах с файлом на каждую таблицу. Она показывает клаузу шифрования для табличных пространств с файлом на каждую таблицу, если таблица зашифрована или если указанное шифрование отличается от шифрования схемы. Клауза шифрования не отображается для таблиц, созданных в общих табличных пространствах. Чтобы определить зашифрованные табличные пространства с файлом на каждую таблицу и общие табличные пространства, запросите столбец INNODB_TABLESPACES ENCRYPTION.

    При создании таблицы с отключенным движком хранения по умолчанию используется формат строк, если указанный формат строк не поддерживается. Фактический формат строк таблицы отображается в столбце ROW_FORMAT. CREATE_OPTIONS отображает формат строк, который был указан в операторе CREATE TABLE.

    При изменении движка хранения таблицы параметры таблицы, которые не применимы к новому движку хранения, сохраняются в определении таблицы, чтобы можно было вернуть таблицу с её ранее определёнными параметрами к исходному движку хранения, если это необходимо. Столбец CREATE_OPTIONS может отображать сохранённые параметры.

  • TABLE_COMMENT

    Комментарий, использованный при создании таблицы (или информация о том, почему MySQL не смог получить информацию о таблице).

Примечания

  • Для таблиц NDB, вывод этого оператора показывает соответствующие значения для столбцов AVG_ROW_LENGTH и DATA_LENGTH, за исключением того, что столбцы BLOB не учитываются.

  • Для таблиц NDB, DATA_LENGTH включает данные, хранящиеся только в оперативной памяти; столбцы MAX_DATA_LENGTH и DATA_FREE относятся к данным на диске.

  • Для таблиц данных на диске NDB Cluster, MAX_DATA_LENGTH показывает выделенное место для дисковой части таблицы или фрагмента данных на диске. (Использование ресурсов памяти для данных в оперативной памяти отображается в столбце DATA_LENGTH).

  • Для MEMORY таблиц значения DATA_LENGTH, MAX_DATA_LENGTH и INDEX_LENGTH приблизительно соответствуют фактическому объёму выделенной памяти. Алгоритм выделения резервирует память большими блоками для уменьшения количества операций выделения.

  • Для представлений большинство столбцов TABLES равны 0 или NULL, за исключением того, что TABLE_NAME указывает имя представления, CREATE_TIME указывает время создания, а TABLE_COMMENT говорит VIEW.

Информация о таблицах также доступна из операторов SHOW TABLE STATUS и SHOW TABLES. См. Раздел 15.7.7.38, «Оператор SHOW TABLE STATUS» и Раздел 15.7.7.39, «Оператор SHOW TABLES». Следующие операторы эквивалентны:

SELECT
    TABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH,
    DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT,
    CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM,
    CREATE_OPTIONS, TABLE_COMMENT
  FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  [AND table_name LIKE 'wild']

SHOW TABLE STATUS
  FROM db_name
  [LIKE 'wild']

Следующие операторы эквивалентны:

SELECT
  TABLE_NAME, TABLE_TYPE
  FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  [AND table_name LIKE 'wild']

SHOW FULL TABLES
  FROM db_name
  [LIKE 'wild']

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

Spec-Zone.ru

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