Spec-Zone.ru › MySQL 8.4

28.3.38 Таблица 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

    BASE TABLE для таблицы, VIEW для представления или 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.21, «Таблица 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.

    При создании таблицы с отключенным CREATE_OPTIONS, используется формат строки по умолчанию движка хранения, если указанный формат строки не поддерживается. Фактический формат строки таблицы отображается в колонке 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-8.4-en/information-schema-tables-table.html

Spec-Zone.ru

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