RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Глава 22. Таблицы INFORMATION_SCHEMA

INFORMATION_SCHEMA обеспечивает доступ к метаданным о базе данных, информации о сервере MySQL, такой как название базы данных или таблицы, типе данных столбца или привилегиях доступа. Другие термины, которые иногда используются для этой информации, являются словарем данных и системным каталогом.

Замечания о применении INFORMATION_SCHEMA

INFORMATION_SCHEMA база данных в пределах каждого экземпляра MySQL, место, которое хранит информацию обо всех других базах данных, которые поддерживает сервер MySQL. INFORMATION_SCHEMA содержит несколько таблиц только для чтения. Они фактически представления, не базовые таблицы, таким образом нет никаких файлов, связанных с ними, и Вы не можете установить триггеры на них. Кроме того, нет никакого каталога базы данных с этим именем.

Хотя Вы можете выбрать INFORMATION_SCHEMA как базу данных по умолчанию с помощью USE, Вы можете только читать содержание таблиц, операции INSERT, UPDATE или DELETE не работают.

Пример

Вот пример запроса, который получает информацию из INFORMATION_SCHEMA:

mysql> SELECT table_name, table_type, engine
                 FROM information_schema.tables
                 WHERE table_schema = 'db5' ORDER BY table_name;
+------------+------------+--------+
| table_name | table_type | engine |
+------------+------------+--------+
| fk         | BASE TABLE | InnoDB |
| fk2        | BASE TABLE | InnoDB |
| goto       | BASE TABLE | MyISAM |
| into       | BASE TABLE | MyISAM |
| k          | BASE TABLE | MyISAM |
| kurs       | BASE TABLE | MyISAM |
| loop       | BASE TABLE | MyISAM |
| pk         | BASE TABLE | InnoDB |
| t          | BASE TABLE | MyISAM |
| t2         | BASE TABLE | MyISAM |
| t3         | BASE TABLE | MyISAM |
| t7         | BASE TABLE | MyISAM |
| tables     | BASE TABLE | MyISAM |
| v          | VIEW       | NULL   |
| v2         | VIEW       | NULL   |
| v3         | VIEW       | NULL   |
| v56        | VIEW       | NULL   |
+------------+------------+--------+
17 rows in set (0.01 sec)
Объяснение: запрос просит список всех таблиц в базе данных db5 и показывает только три столбца данных: название таблицы, ее тип и ее механизм хранения.

Соображения о наборе символов

Определение для символьных столбцов (например, TABLES.TABLE_NAME) вообще VARCHAR(N) CHARACTER SET utf8, где N минимум 64. MySQL использует сопоставление по умолчанию для этого набора символов (utf8_general_ci) для всех поисков, отображений, сравнений и других строковых операций на таких столбцах.

Поскольку некоторые объекты MySQL представлены как файлы, поиски в строковых столбцах INFORMATION_SCHEMA могут быть затронуты чувствительностью к регистру файловой системы. Для получения дополнительной информации см. раздел 11.1.8.7.

INFORMATION_SCHEMA как альтернатива запросу SHOW

Запрос SELECT ... FROM INFORMATION_SCHEMA предназначен как более последовательный способ обеспечить доступ к информации, предоставленной различными запросами SHOW (SHOW DATABASES, SHOW TABLES и т. д.). Использование SELECT имеет эти преимущества, по сравнению с SHOW:

  • Это соответствует правилам Кодда, потому что весь доступ сделан на таблицах.

  • Вы можете использовать знакомый синтаксис SELECT и должны только изучить некоторые имена таблиц и столбцов.
  • Конструктор не должен волноваться о добавляющих ключевых словах.
  • Вы можете фильтровать, сортировать, связывать и преобразовать результаты запросов INFORMATION_SCHEMA в любой формат в соответствии с потребностями приложения: например, структура данных или текстовое представление для анализа.
  • Этот метод является более взаимодействующим с другими системами базы данных. Например, пользователи Oracle Database знакомы с запросами таблиц в словаре данных об Oracle.

Поскольку SHOW знакомо и широко используемо, запросы SHOW остаются альтернативой. Фактически, наряду с выполнением INFORMATION_SCHEMA есть улучшения в SHOW, как описано в разделе 22.31.

Привилегии

Каждый пользователь MySQL имеет право получить доступ к этим таблицам, но может видеть только строки в таблицах, которые соответствуют объектам, для которых у пользователя есть надлежащие привилегии доступа. В некоторых случаях (например, столбец ROUTINE_DEFINITION в таблице INFORMATION_SCHEMA.ROUTINES ) пользователи, у которых есть недостаточные привилегии, видят NULL. Эти ограничения не применяются к таблицам InnoDB, Вы можете видеть их только с привилегией PROCESS.

Те же самые привилегии относятся к выбору информации из INFORMATION_SCHEMA и рассмотрению той же самой информации через SHOW. В любом случае у Вас должна быть некоторая привилегия на объекте, чтобы видеть информацию о нем.

Соображения о производительности

Запросы INFORMATION_SCHEMA, которые ищут информацию больше, чем от одной базы данных, могли бы занять много времени и воздействовать на работу. Чтобы проверить эффективность запроса, Вы можете использовать EXPLAIN. Для информации об использовании вывода EXPLAIN в плане настройки запросов INFORMATION_SCHEMA см. раздел 9.2.4.

Соображения стандартов

Выполнение структуры таблиц INFORMATION_SCHEMA в MySQL следует ANSI/ISO SQL:2003 standard Part 11 Schemata. Наше намерение: приблизительное согласие с SQL:2003 core feature F021 Basic information schema.

Пользователи SQL-сервера 2000 (который также следует стандарту) могут заметить сильное сходство. Однако, MySQL опустил много столбцов, которые не важны для нашего выполнения, и добавили столбцы, которые являются MySQL-определенными. Один такой столбец ENGINE в таблице INFORMATION_SCHEMA.TABLES.

Хотя другие DBMS используют множество имен, как syscat или system, стандартное имя INFORMATION_SCHEMA.

Чтобы избегать использования любого имени, которое сохранено в стандарте, в DB2, SQL Server или Oracle, мы поменяли имена MySQL extension. Например, мы изменили COLLATION на TABLE_COLLATION в TABLES. См. список зарезервированных слов в конце этой статьи: https://web.archive.org/web/20070428032454/http://www.dbazine.com/db2/db2-disarticles/gulutzan5.

Соглашения в ссылочных разделах INFORMATION_SCHEMA

Следующие разделы описывают каждую из таблиц и столбцов в INFORMATION_SCHEMA. Для каждого столбца есть три сведения:

  • INFORMATION_SCHEMA Name указывает на название столбца в INFORMATION_SCHEMA. Это соответствует стандартному имени SQL, если поле Remarks не говорит MySQL extension.

  • SHOW Name указывает на эквивалентное имя поля в самом близком запросе SHOW, если такой есть.
  • Remarks обеспечивает дополнительную информацию где применимо. Если эта область NULL, это означает, что значение столбца всегда NULL. Если эта область говорит MySQL extension, столбец является расширением MySQL к стандартному SQL.

Много разделов указывают, что SHOW эквивалентен SELECT, который получает информацию от INFORMATION_SCHEMA. Для SHOW, которые показывают информацию для базы данных по умолчанию, если Вы опускаете FROM db_name, Вы можете часто выбирать информацию для базы данных по умолчанию, добавляя выражение AND TABLE_SCHEMA = SCHEMA() в предложении WHERE запроса, который получает информацию от INFORMATION_SCHEMA.

Соответствующая информация

Эти разделы обсуждают дополнительные темы INFORMATION_SCHEMA:

  • Информация о таблицах INFORMATION_SCHEMA, определенных для InnoDB: раздел 22.30.

  • Ответы на вопросы, которые часто задают относительно INFORMATION_SCHEMA: раздел A.7.
  • Запросы и оптимизация INFORMATION_SCHEMA: раздел 9.2.4.
  • Эффект сопоставления на INFORMATION_SCHEMA: раздел 11.1.8.7 .

22.1. Таблица INFORMATION_SCHEMA CHARACTER_SETS

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

INFORMATION_SCHEMA Name SHOW Name Remarks
CHARACTER_SET_NAME Charset
DEFAULT_COLLATE_NAME Default collation
Описание ОписаниеMySQL extension
MAXLEN MaxlenMySQL extension

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

SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
         [WHERE CHARACTER_SET_NAME LIKE 'wild']
SHOW CHARACTER SET [LIKE 'wild']

22.2. Таблица INFORMATION_SCHEMA COLLATIONS

Таблица COLLATIONS предоставляет информацию о сопоставлениях для каждого набора символов.

INFORMATION_SCHEMA Name SHOW Name Remarks
COLLATION_NAME Collation
CHARACTER_SET_NAME CharsetMySQL extension
IDId MySQL extension
IS_DEFAULTDefault MySQL extension
IS_COMPILEDCompiled MySQL extension
SORTLENSortlen MySQL extension
  • COLLATION_NAME имя сопоставления.

  • CHARACTER_SET_NAME название набора символов, с которым связано сопоставление.
  • ID ID сопоставления.
  • IS_DEFAULT указывает, является ли сопоставление значением по умолчанию для своего набора символов.
  • IS_COMPILED указывает, собран ли набор символов в сервере.
  • SORTLEN связан с количеством памяти, требуемой, чтобы сортировать строки, выраженные в наборе символов.

Информация о сопоставлении также доступна из SHOW COLLATION. Следующие запросы эквивалентны:

SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS
       [WHERE COLLATION_NAME LIKE 'wild']
SHOW COLLATION [LIKE 'wild']

22.3. Таблица INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY

Таблица COLLATION_CHARACTER_SET_APPLICABILITY показывает, какой набор символов для какого сопоставления применим. Столбцы эквивалентны первым двум полям, которые Вы получите в выводе SHOW COLLATION.

INFORMATION_SCHEMA Name SHOW Name Remarks
COLLATION_NAME Collation
CHARACTER_SET_NAME Charset

22.4. Таблица INFORMATION_SCHEMA COLUMNS

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

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG def
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAMEField
ORDINAL_POSITION см. примечания
COLUMN_DEFAULTDefault
IS_NULLABLENull
DATA_TYPEType
CHARACTER_MAXIMUM_LENGTHType
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISIONType
NUMERIC_SCALEType
DATETIME_PRECISIONType
CHARACTER_SET_NAME
COLLATION_NAMECollation
COLUMN_TYPEType MySQL extension
COLUMN_KEYKey MySQL extension
EXTRAExtra MySQL extension
PRIVILEGESPrivileges MySQL extension
COLUMN_COMMENTComment MySQL extension
GENERATION_EXPRESSION MySQL extension

Примечания:

  • В SHOW Type включает значения нескольких отличающихся столбцов COLUMNS.

  • ORDINAL_POSITION необходимо, потому что Вы могли бы хотеть сказать ORDER BY ORDINAL_POSITION. В отличие от SHOW, SELECT не имеет автоматического упорядочивания.
  • CHARACTER_OCTET_LENGTH должно быть то же самое, что и CHARACTER_MAXIMUM_LENGTH, за исключением многобайтовых наборов символов.
  • CHARACTER_SET_NAME может быть получен из Collation. Например, если Вы говорите SHOW FULL COLUMNS FROM t и Вы видите в столбце Collation значение latin1_swedish_ci, набор символов то, что перед первым подчеркиванием: latin1.
  • GENERATION_EXPRESSION непусто для произведенных столбцов и выводит на экран выражение, используемое, чтобы вычислить значения столбцов. Для информации о произведенных столбцах см. раздел 14.1.15.5.
  • Столбец EXTRA содержит VIRTUAL GENERATED или VIRTUAL STORED для произведенных столбцов.

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

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
       FROM INFORMATION_SCHEMA.COLUMNS
       WHERE table_name = 'tbl_name'
       [AND table_schema = 'db_name']
       [AND column_name LIKE 'wild']
SHOW COLUMNS FROM tbl_name
     [FROM db_name]
     [LIKE 'wild']

22.5. Таблица INFORMATION_SCHEMA COLUMN_PRIVILEGES

Таблица COLUMN_PRIVILEGES предоставляет информацию о привилегиях столбца. Эта информация прибывает из таблицы mysql.columns_priv.

INFORMATION_SCHEMA Name SHOW Name Remarks
GRANTEE 'user_name'@'host_name' value
TABLE_CATALOG def
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
PRIVILEGE_TYPE
IS_GRANTABLE
  • В выводе из SHOW FULL COLUMNS все привилегии в одном поле и в нижнем регистре, например, select,insert,update,references. В COLUMN_PRIVILEGES есть одна привилегия на строку в верхнем регистре.

  • PRIVILEGE_TYPE содержать одно (и только одно) из этих значений: SELECT , INSERT, UPDATE, REFERENCES.
  • Если пользователь имеет привилегию GRANT OPTION, IS_GRANTABLE будет YES. Иначе IS_GRANTABLE будет NO. Вывод не перечисляет GRANT OPTION как отдельную привилегию.

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

SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
SHOW GRANTS ...

22.6. Таблица INFORMATION_SCHEMA ENGINES

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

INFORMATION_SCHEMA Name SHOW Name Remarks
ENGINEEngine MySQL extension
SUPPORTSupport MySQL extension
COMMENTComment MySQL extension
TRANSACTIONSTransactions MySQL extension
XAXA MySQL extension
SAVEPOINTSSavepoints MySQL extension
  • Таблица ENGINES нестандартная. Ее содержание соответствует столбцам SHOW ENGINES. Для описания его столбцов см. раздел 14.7.5.16.

22.7. Таблица INFORMATION_SCHEMA EVENTS

Таблица EVENTS предоставляет информацию о запланированных событиях, которые обсуждаются в разделе 21.4. Значения соответствуют SHOW Name именам столбцов SHOW EVENTS.

INFORMATION_SCHEMA Name SHOW Name Remarks
EVENT_CATALOG def, MySQL extension
EVENT_SCHEMADb MySQL extension
EVENT_NAMEName MySQL extension
DEFINERDefiner MySQL extension
TIME_ZONETime zone MySQL extension
EVENT_BODY MySQL extension
EVENT_DEFINITION MySQL extension
EVENT_TYPEType MySQL extension
EXECUTE_ATExecute at MySQL extension
INTERVAL_VALUEInterval value MySQL extension
INTERVAL_FIELDInterval field MySQL extension
SQL_MODE MySQL extension
STARTSStarts MySQL extension
ENDSEndsMySQL extension
STATUSStatus MySQL extension
ON_COMPLETION MySQL extension
CREATED MySQL extension
LAST_ALTERED MySQL extension
LAST_EXECUTED MySQL extension
EVENT_COMMENT MySQL extension
ORIGINATOROriginator MySQL extension
CHARACTER_SET_CLIENT character_set_clientMySQL extension
COLLATION_CONNECTION collation_connection MySQL extension
DATABASE_COLLATIONDatabase CollationMySQL extension
  • Таблица EVENTS нестандартная.

  • EVENT_CATALOG: Значение этого столбца всегда def.
  • EVENT_SCHEMA: Название схемы (базы данных), которой принадлежит это событие.
  • EVENT_NAME: Имя события.
  • DEFINER: Учетная запись пользователя, который создал событие, в формате 'user_name'@' host_name'.
  • TIME_ZONE: Часовой пояс события, который является часовым поясом, используемым для того, чтобы запланировать выполнение события. Значение по умолчанию SYSTEM.
  • EVENT_BODY: Язык, который используется для запросов в предложении DO события, в MySQL 8.0 это всегда SQL.

    Этот столбец не должен быть перепутан со столбцом с тем же именем (сейчас это EVENT_DEFINITION), который существовал в более ранних версиях MySQL.

  • EVENT_DEFINITION: Текст запроса SQL, составляющего предложение DO события. Другими словами, что будет событием выполнено.
  • EVENT_TYPE: Тип повторения события ONE TIME (одноразовое) или RECURRING (повторение).
  • EXECUTE_AT: Для одноразового события это значение DATETIME, определенное в предложении AT запроса CREATE EVENT, которым создали событие или последнего ALTER EVENT, которым его меняли. Значение, показанное в этом столбце, отражает дополнение или вычитание любого значения INTERVAL включено в AT события. Например, если событие создается, используя ON SCHEDULE AT CURRENT_TIMESTAMP + '1:6' DAY_HOUR в 2006-02-09 14:05:30, значение, показанное в этом столбце, будет '2006-02-10 20:05:30'.

    Если синхронизация определена EVERY вместо AT (то есть, если событие повторяется), значение этого столбца NULL.

  • INTERVAL_VALUE: Для повторяемых событий этот столбец содержит числовую часть предложения EVERY.

    Для одноразового события (определенного через AT) этот столбец NULL.

  • INTERVAL_FIELD: Для повторяемых событий этот столбец содержит модульную часть EVERY. Таким образом, этот столбец содержит такое значение, как 'YEAR', 'QUARTER', 'DAY' или нечто подобное.

    Для одноразового события этот столбец NULL.

  • SQL_MODE: Режим SQL, когда событие было создано или изменено. Именно в нем оно и выполнится. Для разрешенных значений см. раздел 6.1.8.
  • STARTS: Для повторяемых событий, определение которых включает STARTS, этот столбец содержит значение DATETIME. Как со столбцом EXECUTE_AT, это значение решает любые используемые выражения. Если предложения STARTS нет, этот столбец NULL.
  • ENDS: Для повторяемых событий, определение которых включает ENDS, этот столбец содержит значение DATETIME. Как со столбцом EXECUTE_AT, это значение решает любые используемые выражения. Если предложения ENDS нет, этот столбец NULL.
  • STATUS: Одно из трех значений: ENABLED, DISABLED или SLAVESIDE_DISABLED.

    SLAVESIDE_DISABLED указывает, что создание события произошло на другом сервере MySQL, действующем как ведущее устройство репликации, и событие скопировалось к текущему серверу MySQL, который действует как ведомое устройство, но теперь событие не запускается на ведомом устройстве. См. раздел 19.4.1.12.

  • ON_COMPLETION: Одно из двух значений: PRESERVE или NOT PRESERVE.
  • CREATED: Дата и время, когда событие создано. Значение TIMESTAMP.
  • LAST_ALTERED: Дата и время, когда событие в последний раз редактировалось. Значение TIMESTAMP . Если событие не было изменено начиная с его создания, этот столбец содержит то же самое значение, что и CREATED.
  • LAST_EXECUTED: Дата и время, когда событие в последний раз выполнялось. Значение DATETIME. Если событие никогда не выполнялось, этот столбец NULL.

    LAST_EXECUTED указывает, когда событие стартовало. В результате столбец ENDS никогда не меньше LAST_EXECUTED.

  • EVENT_COMMENT: Текст комментария, если у события он есть. В противном случае значение этого столбца пустая строка.
  • ORIGINATOR: ID сервера MySQL, на котором создавалось событие. Значение по умолчанию 0. Используется в репликации.
  • CHARACTER_SET_CLIENT: Значение сеансовой переменной character_set_client , когда событие создавалось.
  • COLLATION_CONNECTION: Значение сеансовой переменной collation_connection , когда событие создавалось.
  • DATABASE_COLLATION: Сопоставление базы данных, с которой связано событие.

Пример: Предположите что пользователь jon@ghidora создал событие e_daily, а потом его отредактировал несколько минут спустя, используя ALTER EVENT, как показано здесь:

DELIMITER |

CREATE EVENT e_daily ON SCHEDULE EVERY 1 DAY
       COMMENT 'Saves total number of sessions then clears the table each day'
       DO BEGIN
       INSERT INTO site_activity.totals (time, total)
       SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions;
       DELETE FROM site_activity.sessions;
   END |
DELIMITER ;
ALTER EVENT e_daily ENABLE;
Отметьте, что комментарии могут охватить много строк.

Этот пользователь может тогда выполнить следующий запрос SELECT и получает показанный вывод:
mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS
     >          WHERE EVENT_NAME = 'e_daily' AND
     >          EVENT_SCHEMA = 'myschema'\G
*************************** 1. row ***************************
   EVENT_CATALOG: def
EVENT_SCHEMA: test
EVENT_NAME: e_daily
   DEFINER: me@localhost
 TIME_ZONE: SYSTEM
EVENT_BODY: SQL
EVENT_DEFINITION: BEGIN
INSERT INTO site_activity.totals (time, total)
SELECT CURRENT_TIMESTAMP, COUNT(*)
  FROM site_activity.sessions;
DELETE FROM site_activity.sessions;
  END
EVENT_TYPE: RECURRING
EXECUTE_AT: NULL
  INTERVAL_VALUE: 1
  INTERVAL_FIELD: DAY
  SQL_MODE:
STARTS: 2008-09-03 12:13:39
  ENDS: NULL
STATUS: ENABLED
   ON_COMPLETION: NOT PRESERVE
   CREATED: 2008-09-03 12:13:39
LAST_ALTERED: 2008-09-03 12:13:39
   LAST_EXECUTED: NULL
   EVENT_COMMENT: Saves total number of sessions then clears the
table each day
ORIGINATOR: 1
CHARACTER_SET_CLIENT: latin1
COLLATION_CONNECTION: latin1_swedish_ci
  DATABASE_COLLATION: latin1_swedish_ci
Времена в таблице EVENTS выведены, используя часовой пояс событий или текущий часовой пояс сеанса, как описано в разделе 21.4.4.

22.8. Таблица INFORMATION_SCHEMA FILES

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

INFORMATION_SCHEMA.FILES предоставляет сведения о файлах данных NDB и InnoDB.

INFORMATION_SCHEMA Name SHOW Name Remarks
FILE_ID MySQL extension
FILE_NAME MySQL extension
FILE_TYPE MySQL extension
TABLESPACE_NAME MySQL extension
TABLE_CATALOG MySQL extension
TABLE_SCHEMA MySQL extension
TABLE_NAME MySQL extension
LOGFILE_GROUP_NAME MySQL extension
LOGFILE_GROUP_NUMBER MySQL extension
ENGINE MySQL extension
FULLTEXT_KEYS MySQL extension
DELETED_ROWS MySQL extension
UPDATE_COUNT MySQL extension
FREE_EXTENTS MySQL extension
TOTAL_EXTENTS MySQL extension
EXTENT_SIZE MySQL extension
INITIAL_SIZE MySQL extension
MAXIMUM_SIZE MySQL extension
AUTOEXTEND_SIZE MySQL extension
CREATION_TIME MySQL extension
LAST_UPDATE_TIME MySQL extension
LAST_ACCESS_TIME MySQL extension
RECOVER_TIME MySQL extension
TRANSACTION_COUNTER MySQL extension
VERSION MySQL extension
ROW_FORMAT MySQL extension
TABLE_ROWS MySQL extension
AVG_ROW_LENGTH MySQL extension
DATA_LENGTH MySQL extension
MAX_DATA_LENGTH MySQL extension
INDEX_LENGTH MySQL extension
DATA_FREE MySQL extension
CREATE_TIME MySQL extension
UPDATE_TIME MySQL extension
CHECK_TIME MySQL extension
CHECKSUM MySQL extension
STATUS MySQL extension
EXTRA MySQL extension

Следующие примечания относятся к InnoDB. Поля INFORMATION_SCHEMA.FILES, которые не описаны ниже, не применимы к InnoDB и имеют значение NULL.

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

  • Данные, о которых сообщает INFORMATION_SCHEMA.FILES включает временные данные о табличном пространстве. Эти данные недоступны во внутренней таблице SYS_DATAFILES словаря данных и поэтому не сообщаются INNODB_SYS_DATAFILES.
  • Данные о табличном пространстве отмены сообщаются INFORMATION_SCHEMA.FILES когда отдельные табличные пространства отмены сконфигурированы, используя опцию innodb_undo_tablespaces.
  • FILE_ID ID табличного пространства, также называемое space_id или fil_space_t::id.
  • FILE_NAME название файла с данными. У файла на таблицу и общих табличных пространств есть расширение .ibd. Табличные пространства отмены имеют префикс undo. Системное табличное пространство имеет префикс ibdata. Временные табличные пространства имеет префикс ibtmp. Имя файла включает путь к файлу, который может быть указан относительно каталога данных MySQL (datadir ).
  • FILE_TYPE тип файла табличного пространства. Есть три возможных типа файла для файлов InnoDB. TABLESPACE тип файла для любой системы, общий или файл табличного пространства файла на таблицу, который содержит таблицы, индексы или другие формы пользовательских данных. TEMPORARY тип файла для временных табличных пространств. UNDO LOG тип файла для табличных пространств журнала отмены, которые содержат отчеты отмены. По умолчанию отчеты отмены сохранены в системном табличном пространстве. Отдельные табличные пространства журнала отмены могут быть добавлены, используя опцию innodb_undo_tablespaces.
  • TABLESPACE_NAME название SQL табличного пространства. Общее имя табличного пространства SYS_TABLESPACES.NAME. Для других файлов табличного пространства имена начинаются с innodb_, such as innodb_system, innodb_undo и innodb_file_per_table. Формат имени табличного пространства файла на таблицу innodb_file_per_table_##, где ## ID табличного пространства.
  • ENGINE механизм хранения. Для InnoDB значение всегда InnoDB.
  • FREE_EXTENTS число полностью свободных экстентов в текущем файле с данными.
  • TOTAL_EXTENTS число полных объемов, используемых в текущем файле с данными. Любой частичный экстент в конце файла не посчитан.
  • EXTENT_SIZE 1048576 (1MB) для файлов с размером страниц в 4k, 8k или 16k. Размер экстента 2097152 (2MB) для файлов с размером страниц 32k и 4194304 (4MB) для файлов с размером страниц 64k. INFORMATION_SCHEMA.FILES не сообщает размер страницы InnoDB. Он определен в опции innodb_page_size . Размер экстента может также быть получен из INNODB_SYS_TABLESPACES, где FILES.FILE_ID = INNODB_SYS_TABLESPACES.SPACE_ID.
  • INITIAL_SIZE начальный размер файла в байтах.
  • MAXIMUM_SIZE максимальное количество байтов, позволенных в файле. Значение NULL для всех файлов с данными за исключением предопределенных системных файлов с данными табличного пространства. Максимальный системный размер файла табличного пространства определен innodb_data_file_path . Максимальный временный размер файла табличного пространства определен innodb_temp_data_file_path. Значение NULL для предопределенного системного файла с данными табличного пространства указывает, что предел размера файла не был определен явно.
  • AUTOEXTEND_SIZE размер авторасширения, определенный innodb_data_file_path для системного табличного пространства или определенный innodb_temp_data_file_path для временных табличных пространств.
  • DATA_FREE общая сумма свободного пространства (в байтах) для всего табличного пространства. У предопределенных системных табличных пространств, которые включают системное табличное пространство и временные табличные пространства, может быть один или более файлов с данными.
  • STATUS NORMAL по умолчанию. Табличные пространства файла на таблицу могут сообщить IMPORTING, который указывает, что табличное пространство еще не доступно.
  • Следующий запрос возвращает все данные, подходящие для табличных пространств InnoDB.
    mysql> SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME,
                     FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE,
                     MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS ENGINE
                     FROM INFORMATION_SCHEMA.FILES \G
    

22.9. Таблицы INFORMATION_SCHEMA GLOBAL_STATUS и SESSION_STATUS

Значение переменной show_compatibility_56 затрагивает информацию, доступную из таблиц, описанных здесь. Для деталей см. описание этой переменной в разделе 6.1.5.

Информация, доступная из таблиц, описанных здесь, также доступна из Performance Schema. Таблицы INFORMATION_SCHEMA устарели в предпочтении к Performance Schema и будут удалены в будущем выпуске MySQL. Для совета относительно перемещения от INFORMATION_SCHEMA на Performance Schema см. раздел 23.17.

Таблицы GLOBAL_STATUS и SESSION_STATUS предоставляют информацию о переменных состояния сервера. Их содержание соответствует информации, произведенной запросами SHOW GLOBAL STATUS и SHOW SESSION STATUS (см. раздел 14.7.5.35).

INFORMATION_SCHEMA Name SHOW Name Remarks
VARIABLE_NAMEVariable_name
VARIABLE_VALUEValue
  • Столбец VARIABLE_VALUE для каждой из этих таблиц определен как VARCHAR(1024).

22.10. Таблицы INFORMATION_SCHEMA GLOBAL_VARIABLES и SESSION_VARIABLES

Значение переменной show_compatibility_56 затрагивает информацию, доступную из таблиц, описанных здесь. Для деталей см. описание этой переменной в разделе 6.1.5.

Информация, доступная из таблиц, описанных здесь, также доступна из Performance Schema. Таблицы INFORMATION_SCHEMA устарели в предпочтении к Performance Schema и будут удалены в будущем выпуске MySQL. Для совета относительно перемещения от INFORMATION_SCHEMA на Performance Schema см. раздел 23.17.

Таблицы GLOBAL_VARIABLES и SESSION_VARIABLES предоставляют информацию о переменных состояния сервера. Их содержание соответствует информации, произведенной запросами SHOW GLOBAL VARIABLES и SHOW SESSION VARIABLES (см. раздел 14.7.5.39).

INFORMATION_SCHEMA Name SHOW Name Remarks
VARIABLE_NAMEVariable_name
VARIABLE_VALUEValue
  • Столбец VARIABLE_VALUE для каждой из этих таблиц определен как VARCHAR(1024). Для переменных с очень длинными значениями, которые не полностью выведены на экран, надо использовать SELECT, например:

    SELECT @@GLOBAL.innodb_data_file_path;
    

22.11. Таблица INFORMATION_SCHEMA KEY_COLUMN_USAGE

Таблица KEY_COLUMN_USAGE описывает, у каких ключевых столбцов есть ограничения.

INFORMATION_SCHEMA Name SHOW Name Remarks
CONSTRAINT_CATALOG def
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG def
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
ORDINAL_POSITION
POSITION_IN_UNIQUE_CONSTRAINT
REFERENCED_TABLE_SCHEMA
REFERENCED_TABLE_NAME
REFERENCED_COLUMN_NAME
  • Если ограничение внешний ключ, то это столбец внешнего ключа, а не столбец ссылки внешнего ключа.

  • Значение ORDINAL_POSITION это позиция столбца в пределах ограничения, а не позиция столбца в пределах таблицы. Позиции столбца пронумерованы, начиная с 1.
  • Значение POSITION_IN_UNIQUE_CONSTRAINT NULL для ограничений уникального и первичного ключа. Для ограничений внешнего ключа это порядковая позиция в ключе таблицы, на которую ссылаются.

    Предположите, что есть два табличных имени t1 и t3 со следующими определениями:

    CREATE TABLE t1 (s1 INT, s2 INT, s3 INT, PRIMARY KEY(s3)) ENGINE=InnoDB;
    CREATE TABLE t3 (s1 INT, s2 INT, s3 INT, KEY(s1),
           CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)) ENGINE=InnoDB;
    
    Для этих двух таблиц KEY_COLUMN_USAGE имеет две строки:

    • Одна строка с CONSTRAINT_NAME = 'PRIMARY', TABLE_NAME = 't1', COLUMN_NAME = 's3', ORDINAL_POSITION = 1, POSITION_IN_UNIQUE_CONSTRAINT = NULL.

    • Вторая строка с CONSTRAINT_NAME = 'CO', TABLE_NAME = 't3', COLUMN_NAME = 's2', ORDINAL_POSITION = 1, POSITION_IN_UNIQUE_CONSTRAINT = 1.

22.12. Таблица INFORMATION_SCHEMA OPTIMIZER_TRACE

Таблица OPTIMIZER_TRACE предоставляет информацию, произведенную трассировкой оптимизатора. Чтобы включить трассировку, используйте переменную optimizer_trace. Подробности есть в руководстве MySQL Internals: Tracing the Optimizer.

22.13. Таблица INFORMATION_SCHEMA PARAMETERS

Таблица PARAMETERS предоставляет информацию о хранимой процедуре и функциональных параметрах и о возвращаемых значениях для сохраненных функций. Информация о параметре подобна содержанию столбца param_list в таблице mysql.proc.

INFORMATION_SCHEMA Name mysql.proc NameRemarks
SPECIFIC_CATALOG def
SPECIFIC_SCHEMAdb routine database
SPECIFIC_NAMEname routine name
ORDINAL_POSITION 1, 2, 3, ... для параметров, 0 для функций предложения RETURNS
PARAMETER_MODE IN, OUT, INOUT (NULL для RETURNS)
PARAMETER_NAME Имя параметра (NULL для RETURNS)
DATA_TYPE same as for COLUMNS table
CHARACTER_MAXIMUM_LENGTH same as for COLUMNS table
CHARACTER_OCTET_LENGTH same as for COLUMNS table
NUMERIC_PRECISION same as for COLUMNS table
NUMERIC_SCALE same as for COLUMNS table
DATETIME_PRECISION same as for COLUMNS table
CHARACTER_SET_NAME same as for COLUMNS table
COLLATION_NAME same as for COLUMNS table
DTD_IDENTIFIER same as for COLUMNS table
ROUTINE_TYPEtype same as for ROUTINES table
  • Для последовательных параметров хранимой процедуры или функции значения ORDINAL_POSITION 1, 2, 3 и т. д. Для сохраненной функции есть также строка, которая описывает тип данных для предложения RETURNS. Возвращаемое значение не истинный параметр, таким образом, у строки, которая описывает его, есть эти уникальные характеристики:

    • ORDINAL_POSITION 0.

    • Значения PARAMETER_NAME и PARAMETER_MODE NULL потому, что у возвращаемого значения нет никакого имени, и режим не применяется.

22.14. Таблица INFORMATION_SCHEMA PARTITIONS

Таблица PARTITIONS предоставляет информацию о табличном разделении. См. главу 20.

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG MySQL extension
TABLE_SCHEMA MySQL extension
TABLE_NAME MySQL extension
PARTITION_NAME MySQL extension
SUBPARTITION_NAME MySQL extension
PARTITION_ORDINAL_POSITION MySQL extension
SUBPARTITION_ORDINAL_POSITION MySQL extension
PARTITION_METHOD MySQL extension
SUBPARTITION_METHOD MySQL extension
PARTITION_EXPRESSION MySQL extension
SUBPARTITION_EXPRESSION MySQL extension
PARTITION_DESCRIPTION MySQL extension
TABLE_ROWS MySQL extension
AVG_ROW_LENGTH MySQL extension
DATA_LENGTH MySQL extension
MAX_DATA_LENGTH MySQL extension
INDEX_LENGTH MySQL extension
DATA_FREE MySQL extension
CREATE_TIME MySQL extension
UPDATE_TIME MySQL extension
CHECK_TIME MySQL extension
CHECKSUM MySQL extension
PARTITION_COMMENT MySQL extension
NODEGROUP MySQL extension
TABLESPACE_NAME MySQL extension
  • Таблица PARTITIONS нестандартная.

    Каждый отчет в этой таблице соответствует отдельному разделу или подразду разделенной таблицы.

  • TABLE_CATALOG: Всегда def.
  • TABLE_SCHEMA: Этот столбец содержит название базы данных, которой принадлежит таблица.
  • TABLE_NAME: Этот столбец содержит название таблицы, содержащей разделение.
  • PARTITION_NAME: Название разделения.
  • SUBPARTITION_NAME: Если PARTITIONS представляет подраздел, тогда этот столбец содержит название подраздела, иначе это NULL.
  • PARTITION_ORDINAL_POSITION: Все разделы индексированы в том же самом порядке, как они определены, первый раздел имеет номер 1. Индексация может измениться, поскольку разделы могут быть добавлены, удалены и реорганизованы. Показанное этим столбцом число отражает текущий порядок, принимая во внимание любые изменения индексации.
  • SUBPARTITION_ORDINAL_POSITION: Подразделы в пределах данного раздела также индексированы в той же самой манере, как раздел индексирован в пределах таблицы.a table.
  • PARTITION_METHOD: Одно из значений: RANGE, LIST, HASH, LINEAR HASH, KEY, or LINEAR KEY. То есть, один из доступных типов разделения как обсуждено в разделе 20.2.
  • SUBPARTITION_METHOD: Одно из значений: HASH, LINEAR HASH, KEY, or LINEAR KEY. То есть, один из доступных типов подразделов как обсуждено в разделе 20.2.6.
  • PARTITION_EXPRESSION: Это выражение для функции разделения, используемой в CREATE TABLE или ALTER TABLE, который создало текущее разделение таблицы.

    Например, считайте разделенную таблицу создаваемой в базе данных test, используя этот запрос:

    CREATE TABLE tp (c1 INT, c2 INT, c3 VARCHAR(25))
           PARTITION BY HASH(c1 + c2) PARTITIONS 4;
    
    Столбец PARTITION_EXPRESSION в таблице PARTITIONS имеет запись для разделения этой таблицы как c1 + c2:
    mysql> SELECT DISTINCT PARTITION_EXPRESSION
         >        FROM INFORMATION_SCHEMA.PARTITIONS
         >        WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';
    +----------------------+
    | PARTITION_EXPRESSION |
    +----------------------+
    | c1 + c2              |
    +----------------------+
    1 row in set (0.09 sec)
    
  • SUBPARTITION_EXPRESSION: Это работает тем же самым способом на выражении подразделения, которое определяет подразделы для таблицы как PARTITION_EXPRESSION делает для выражения разделения, используемого, чтобы определить разделы таблицы.

    Если у таблицы нет никакого подразделения, то этот столбец NULL.

  • PARTITION_DESCRIPTION: Этот столбец используется для разделов типа RANGE и LIST. Для RANGE это содержит набор значений в разделе VALUES LESS THAN, которые могут быть целым числом или MAXVALUE. Для LIST этот столбец содержит значения, определенные в VALUES IN, то есть список целочисленных значений, разделенных запятой.

    Для разделения, метод PARTITION_METHOD которого RANGE или LIST, этот столбец всегда NULL.

  • TABLE_ROWS: Число строк таблицы в разделе.

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

  • AVG_ROW_LENGTH: Средняя длина строк, сохраненных в этом разделе или подразделе, в байтах.

    Это то же самое, как DATA_LENGTH деленное на TABLE_ROWS.

  • DATA_LENGTH: Полная длина всех строк, сохраненных в этом разделе или подразделе, в байтах, то есть, общее количество байтов, сохраненных в разделе или подразделе.
  • MAX_DATA_LENGTH: Максимальное количество байтов, которые могут быть сохранены в этом разделе или подразделе.
  • INDEX_LENGTH: Длина индексного файла для этого раздела или подраздела в байтах.
  • DATA_FREE: Число байтов, выделенных разделу или подразделу, но не используемых.
  • CREATE_TIME: Время создания раздела.
  • UPDATE_TIME: Время, когда раздел был последний раз изменен.
  • CHECK_TIME: Время, когда таблица, которой принадлежит этот раздел или подраздел, была проверена в последний раз.

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

  • CHECKSUM: Значение контрольной суммы, если есть. Иначе этот столбец NULL.
  • PARTITION_COMMENT: Этот столбец содержит текст любого комментария, сделанного для разделения.

    В MySQL 8.0 максимальная длина для комментария разделения определена как 1024 символа и ширина отображения столбца PARTITION_COMMENT тоже 1024, чтобы соответствовать этому пределу (Bug #11748924, Bug #37728). Значение по умолчанию для этого столбца пустая строка.

  • NODEGROUP: Это nodegroup, которой принадлежит разделение. Это относится только к таблицам MySQL Cluster. Для остальных ситуаций значение этого столбца всегда 0.
  • TABLESPACE_NAME: Этот столбец содержит название табличного пространства, которому принадлежит разделение. Значение этого столбца всегда DEFAULT.
  • У неразделенной таблицы есть один отчет в INFORMATION_SCHEMA.PARTITIONS. Однако, значения столбцов PARTITION_NAME, SUBPARTITION_NAME, PARTITION_ORDINAL_POSITION, SUBPARTITION_ORDINAL_POSITION, PARTITION_METHOD, SUBPARTITION_METHOD, PARTITION_EXPRESSION, SUBPARTITION_EXPRESSION и PARTITION_DESCRIPTION все NULL. Столбец PARTITION_COMMENT в этом случае пустой.

22.15. Таблица INFORMATION_SCHEMA PLUGINS

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

INFORMATION_SCHEMA Name SHOW Name Remarks
PLUGIN_NAMEName MySQL extension
PLUGIN_VERSION MySQL extension
PLUGIN_STATUSStatus MySQL extension
PLUGIN_TYPEType MySQL extension
PLUGIN_TYPE_VERSION MySQL extension
PLUGIN_LIBRARYLibrary MySQL extension
PLUGIN_LIBRARY_VERSION MySQL extension
PLUGIN_AUTHOR MySQL extension
PLUGIN_DESCRIPTION MySQL extension
PLUGIN_LICENSELicense MySQL extension
LOAD_OPTION MySQL extension
  • Таблица PLUGINS нестандартная.

  • PLUGIN_NAME имя, используемое, чтобы обратиться к плагину в запросах INSTALL PLUGIN и UNINSTALL PLUGIN.
  • PLUGIN_VERSION версия общего описателя типа плагина.
  • PLUGIN_STATUS указывает на состояние, одно из значений ACTIVE, INACTIVE, DISABLED или DELETED.
  • PLUGIN_TYPE указывает на тип плагина: STORAGE ENGINE, INFORMATION_SCHEMA или AUTHENTICATION.
  • PLUGIN_TYPE_VERSION версия определенного для типа описателя плагина.
  • PLUGIN_LIBRARY название совместно использованного файла библиотеки плагина. Это имя, используемое, чтобы обратиться к файлу в запросах INSTALL PLUGIN и UNINSTALL PLUGIN. Этот файл расположен в каталоге, названном в системной переменной plugin_dir. Если имя библиотеки NULL, плагин собран в сервере и не может быть удален с применением UNINSTALL PLUGIN.
  • PLUGIN_LIBRARY_VERSION указывает на версию API.
  • PLUGIN_AUTHOR называет автора.
  • PLUGIN_DESCRIPTION обеспечивает краткое описание плагина.
  • PLUGIN_LICENSE указывает, как плагин лицензируется, например, GPL.
  • LOAD_OPTION указывает, как плагин был загружен. Значения OFF, ON, FORCE или FORCE_PLUS_PERMANENT. См. раздел 6.6.2.

Для плагинов, установленных с INSTALL PLUGIN, значения PLUGIN_NAME и PLUGIN_LIBRARY также зарегистрированы в таблице mysql.plugin.

Эти запросы эквивалентны:

SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,
       PLUGIN_LIBRARY, PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS;
SHOW PLUGINS;

22.16. Таблица INFORMATION_SCHEMA PROCESSLIST

Таблица PROCESSLIST предоставляет информацию, с которой работают потоки.

INFORMATION_SCHEMA Name SHOW Name Remarks
IDId MySQL extension
USERUserMySQL extension
HOSTHostMySQL extension
DBdbMySQL extension
COMMANDCommand MySQL extension
TIMETimeMySQL extension
STATEState MySQL extension
INFOInfoMySQL extension

Для детального описания столбцов таблицы см. раздел 14.7.5.29.

  • Таблица PROCESSLIST нестандартная.

  • Как вывод SHOW, таблица PROCESSLIST покажет только информацию о Ваших собственных потоках, если Вы не будете иметь привилегию PROCESS , тогда Вы будете видеть информацию также о других потоках. Как анонимный пользователь, Вы не можете видеть строки вообще.
  • Если запрос SQL относится к INFORMATION_SCHEMA.PROCESSLIST, MySQL заполняет всю таблицу однажды, когда выполнение запроса начинается, таким образом во время запроса есть последовательность чтения. Нет никакой последовательности чтения для транзакции с несколькими запросами.
  • Информация о процессе также доступна через performance_schema.threads . Однако, доступ к threads не требует mutex и оказывает минимальное влияние на работу сервера. INFORMATION_SCHEMA.PROCESSLIST и SHOW PROCESSLIST имеют отрицательные исполнительные последствия, потому что они требуют mutex. threads также покажет сведения о фоновых потоках, которые INFORMATION_SCHEMA.PROCESSLIST и SHOW PROCESSLIST не выводят. Это означает, что threads может использоваться, чтобы контролировать активность, чего другие источники информации о потоках не могут.

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

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
SHOW FULL PROCESSLIST

22.17. Таблица INFORMATION_SCHEMA PROFILING

Таблица PROFILING предоставляет профилирующую информацию. Ее содержание соответствует информации, произведенной SHOW PROFILES и SHOW PROFILE (см. раздел 14.7.5.31). Таблица не пуста, если переменная сеанса profiling установлена в 1.

Эта таблица устарела и будет удалена в будущем выпуске MySQL. Используйте Performance Schema вместо этого.

INFORMATION_SCHEMA Name SHOW Name Remarks
QUERY_IDQuery_ID
SEQ
STATEStatus
DURATIONDuration
CPU_USERCPU_user
CPU_SYSTEMCPU_system
CONTEXT_VOLUNTARY Context_voluntary
CONTEXT_INVOLUNTARY Context_involuntary
BLOCK_OPS_INBlock_ops_in
BLOCK_OPS_OUTBlock_ops_out
MESSAGES_SENTMessages_sent
MESSAGES_RECEIVED Messages_received
PAGE_FAULTS_MAJOR Page_faults_major
PAGE_FAULTS_MINOR Page_faults_minor
SWAPSSwaps
SOURCE_FUNCTION Source_function
SOURCE_FILESource_file
SOURCE_LINESource_line
  • QUERY_ID числовой идентификатор запроса.

  • SEQ порядковый номер, указывающий на порядок строк с тем же самым значением QUERY_ID.
  • STATE статус профилирования, к которому применяются измерения строки.
  • DURATION указывает, сколько времени выполнение запроса было в этом состоянии в секундах.
  • CPU_USER и CPU_SYSTEM указывают пользовательское и системное использование центрального процессора в секундах.
  • CONTEXT_VOLUNTARY и CONTEXT_INVOLUNTARY указывают, сколько переключений контекста произошло.
  • BLOCK_OPS_IN и BLOCK_OPS_OUT указывают число операций входа и выхода блока.
  • MESSAGES_SENT и MESSAGES_RECEIVED указывают число посланных и полученных коммуникационных сообщений.
  • PAGE_FAULTS_MAJOR и PAGE_FAULTS_MINOR указывают число главных и незначительных ошибок страницы.
  • SWAPS сколько подкачек произошло.
  • SOURCE_FUNCTION, SOURCE_FILE и SOURCE_LINE предоставяют информацию, указывающую, где в исходном коде профилируемое сосятоние выполняется.

22.18. Таблица INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS

Таблица REFERENTIAL_CONSTRAINTS предоставляет информацию о внешних ключах.

INFORMATION_SCHEMA Name SHOW Name Remarks
CONSTRAINT_CATALOG def
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
UNIQUE_CONSTRAINT_CATALOG def
UNIQUE_CONSTRAINT_SCHEMA
UNIQUE_CONSTRAINT_NAME
MATCH_OPTION
UPDATE_RULE
DELETE_RULE
TABLE_NAME
REFERENCED_TABLE_NAME
  • TABLE_NAME имеет то же самое значение, как TABLE_NAME в INFORMATION_SCHEMA.TABLE_CONSTRAINTS.

  • CONSTRAINT_SCHEMA и CONSTRAINT_NAME идентифицируют внешний ключ.
  • UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME и REFERENCED_TABLE_NAME идентифицируют ключ, на который ссылаются.
  • Единственное допустимое значение в это время для MATCH_OPTION NONE.
  • Возможные значения для UPDATE_RULE или DELETE_RULE: CASCADE, SET NULL, SET DEFAULT, RESTRICT или NO ACTION.

22.19. Таблица INFORMATION_SCHEMA ROUTINES

Таблица ROUTINES предоставляет информацию о сохраненных подпрограммах (процедуры и функции). Таблица ROUTINES не включает определяемые пользователем функции (UDF).

Столбец mysql.proc Name указывает столбец таблицы mysql.proc, который соответствует столбцу таблицы INFORMATION_SCHEMA.ROUTINES , если такой есть.

INFORMATION_SCHEMA Name mysql.proc NameRemarks
SPECIFIC_NAME specific_name
ROUTINE_CATALOG def
ROUTINE_SCHEMAdb
ROUTINE_NAMEname
ROUTINE_TYPEtype {PROCEDURE|FUNCTION}
DATA_TYPE same as for COLUMNS table
CHARACTER_MAXIMUM_LENGTH same as for COLUMNS table
CHARACTER_OCTET_LENGTH same as for COLUMNS table
NUMERIC_PRECISION same as for COLUMNS table
NUMERIC_SCALE same as for COLUMNS table
DATETIME_PRECISION same as for COLUMNS table
CHARACTER_SET_NAME same as for COLUMNS table
COLLATION_NAME same as for COLUMNS table
DTD_IDENTIFIER data type descriptor
ROUTINE_BODY SQL
ROUTINE_DEFINITIONbody_utf8
EXTERNAL_NAME NULL
EXTERNAL_LANGUAGElanguage NULL
PARAMETER_STYLE SQL
IS_DETERMINISTIC is_deterministic
SQL_DATA_ACCESS sql_data_access
SQL_PATH NULL
SECURITY_TYPEsecurity_type
CREATEDcreated
LAST_ALTEREDmodified
SQL_MODEsql_mode MySQL extension
ROUTINE_COMMENTcomment MySQL extension
DEFINERdefiner MySQL extension
CHARACTER_SET_CLIENT MySQL extension
COLLATION_CONNECTION MySQL extension
DATABASE_COLLATION MySQL extension
  • MySQL вычисляет EXTERNAL_LANGUAGE так:

    • Если mysql.proc.language='SQL', EXTERNAL_LANGUAGE NULL

    • Иначе EXTERNAL_LANGUAGE то, что находится в mysql.proc.language. Однако, у нас еще нет внешних языков, таким образом, это всегда NULL.

  • CREATED: Дата и время, когда подпрограмма создавалась. Это значение TIMESTAMP .

  • LAST_ALTERED: Дата и время, когда подпрограмма была изменена в последний раз. Это значение TIMESTAMP. Если подпрограмма не была изменена, начиная с ее создания этот столбец держит то же самое значение, как CREATED.
  • SQL_MODE: Режим SQL, когда подпрограмма была создана или изменена, и под которым подпрограмма выполняется. Для разрешенных значений см. раздел 6.1.8.
  • CHARACTER_SET_CLIENT: Значение сеансовой переменной character_set_client , когда подпрограмма создавалась.
  • COLLATION_CONNECTION: Значение сеансовой переменной collation_connection , когда подпрограмма создавалась.
  • DATABASE_COLLATION: Сопоставление базы данных, с которой связана подпрограмма.
  • Столбцы DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME и COLLATION_NAME предоставляют информацию о типе данных для предложения RETURNS сохраненных функций. Если сохраненная подпрограмма хранимая процедура, эти столбцы все NULL.
  • Информация о типах данных RETURNS сохраненной функции также доступна в таблице PARAMETERS. Строка типа данных возвращаемого значения для функции может быть идентифицирована как строка, которая имеет значение ORDINAL_POSITION 0.

22.20. Таблица INFORMATION_SCHEMA SCHEMATA

Это база данных, таким образом, таблица SCHEMATA предоставляет информацию о базах данных.

INFORMATION_SCHEMA Name SHOW Name Remarks
CATALOG_NAME def
SCHEMA_NAMEDatabase
DEFAULT_CHARACTER_SET_NAME
DEFAULT_COLLATION_NAME
SQL_PATH NULL

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

SELECT SCHEMA_NAME AS `Database`
       FROM INFORMATION_SCHEMA.SCHEMATA
       [WHERE SCHEMA_NAME LIKE 'wild']
SHOW DATABASES [LIKE 'wild']

22.21. Таблица INFORMATION_SCHEMA SCHEMA_PRIVILEGES

Таблица SCHEMA_PRIVILEGES предоставляет информацию о схеме (базе данных) привилегий. Эта информация прибывает из таблицы mysql.db.

INFORMATION_SCHEMA Name SHOW Name Remarks
GRANTEE 'user_name'@'host_name' value, MySQL extension
TABLE_CATALOG def , MySQL extension
TABLE_SCHEMA MySQL extension
PRIVILEGE_TYPE MySQL extension
IS_GRANTABLE MySQL extension
  • Это несатндартная таблица. Это берет свои значения из таблицы mysql.db.

22.22. Таблицы INFORMATION_SCHEMA STATISTICS и STATISTICS_DYNAMIC

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

Столбцы в таблице STATISTICS , которые представляют табличную статистику, содержат кэшируемые значения. Если переменная information_schema_stats равна CACHED (значение по умолчанию), сервер получает кэшируемые значения для запросов на таблице STATISTICS. Чтобы обновить кэшируемые значения для данной таблицы, надо использовать ANALYZE TABLE. Чтобы использовать последнюю статистику непосредственно от механизмов хранения, следует установить information_schema_stats в LATEST. В этом случае сервер обрабатывает запросы на таблице STATISTICS как запросы на STATISTICS_DYNAMIC . Для получения дополнительной информации см. раздел 9.2.4.

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG def
TABLE_SCHEMA = Database
TABLE_NAMETable
NON_UNIQUENon_unique
INDEX_SCHEMA = Database
INDEX_NAMEKey_name
SEQ_IN_INDEXSeq_in_index
COLUMN_NAMEColumn_name
COLLATIONCollation
CARDINALITYCardinality
SUB_PARTSub_part MySQL extension
PACKEDPacked MySQL extension
NULLABLENull MySQL extension
INDEX_TYPEIndex_type MySQL extension
COMMENTComment MySQL extension
INDEX_COMMENTIndex_comment MySQL extension
IS_VISIBLEVisible MySQL extension
  • Нет никакой стандартной таблицы для индексов. Предыдущий список подобен тому, который возвращается SQL Server 2000 для sp_statistics, за исключением того, что мы заменили QUALIFIER на CATALOG и OWNER на SCHEMA.

    Предыдущая таблица и вывод SHOW INDEX получены от того же самого источника. Таким образом, корреляция уже близка.

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

SELECT * FROM INFORMATION_SCHEMA.STATISTICS
         WHERE table_name = 'tbl_name' AND
         table_schema = 'db_name'
SHOW INDEX FROM tbl_name
     FROM db_name

22.23. Таблицы INFORMATION_SCHEMA TABLES и TABLES_DYNAMIC

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

Столбцы в TABLES, которые представляют табличную статистику, содержат кэшируемые значения. Если переменная information_schema_stats имеет значение CACHED (по умолчанию это так), сервер получает кэшируемые значения для запросов на таблице TABLES. Чтобы обновить кэшируемые значения для данной таблицы, надо использовать ANALYZE TABLE . Чтобы использовать последнюю статистику непосредственно от механизмов хранения, установите information_schema_stats в LATEST. В этом случае сервер обрабатывает запросы на TABLES как запросы на TABLES_DYNAMIC.

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG def
TABLE_SCHEMATable_...
TABLE_NAMETable_...
TABLE_TYPE
ENGINEEngine MySQL extension
VERSIONVersion The .frm file version. With the removal of .frm files in MySQL 8.0, this field now reports a hardcoded value of 10, which is the last .frm file version used in MySQL 5.7.
ROW_FORMATRow_format MySQL extension
TABLE_ROWSRows MySQL extension
AVG_ROW_LENGTHAvg_row_length MySQL extension
DATA_LENGTHData_length MySQL extension
MAX_DATA_LENGTH Max_data_lengthMySQL extension
INDEX_LENGTHIndex_length MySQL extension
DATA_FREEData_free MySQL extension
AUTO_INCREMENTAuto_increment MySQL extension
CREATE_TIMECreate_time MySQL extension
UPDATE_TIMEUpdate_time MySQL extension
CHECK_TIMECheck_time MySQL extension
TABLE_COLLATIONCollation MySQL extension
CHECKSUMChecksum MySQL extension
CREATE_OPTIONSCreate_options MySQL extension
TABLE_COMMENTComment MySQL extension
  • Обратитесь к SHOW TABLE STATUS за описаниями полей.

  • TABLE_SCHEMA и TABLE_NAME единственные поля в SHOW, например, Table_in_db1.
  • TABLE_TYPE должно быть BASE TABLE или VIEW. Таблица TABLES не приводит таблицы TEMPORARY.
  • Для разделенных таблиц столбец ENGINE показывает название механизма хранения, используемого всем разделением. Ранее этот столбец показывал PARTITION для таких таблиц.
  • Столбец TABLE_ROWS NULL, если таблица находится в базе данных INFORMATION_SCHEMA.

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

  • Столбец DATA_FREE показывает свободное пространство в байтах для InnoDB таблицы.
  • UPDATE_TIME выводит на экран значение timestamp для последнего запроса UPDATE, INSERT или DELETE выполненного на таблице InnoDB, которая не разделена. Для MVCC значение timestamp отражает время COMMIT, которое считают временем последнего обновления. Timestamp не сохранены, когда сервер перезапущен или когда таблица удалена из кэша словаря данных InnoDB.
  • Для разделенных таблиц InnoDB столбец CHECK_TIME всегда NULL.
  • Здесь ничего нет для набора символов значения по умолчанию таблицы. TABLE_COLLATION близко, потому что имена сопоставления начинаются с имени набора символов.
  • Столбец CREATE_OPTIONS показывает partitioned, если таблица разделена.

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

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

22.24. Таблица INFORMATION_SCHEMA TABLESPACES

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

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLESPACE_NAME MySQL extension
ENGINE MySQL extension
TABLESPACE_TYPE MySQL extension
LOGFILE_GROUP_NAME MySQL extension
EXTENT_SIZE MySQL extension
AUTOEXTEND_SIZE MySQL extension
MAXIMUM_SIZE MySQL extension
NODEGROUP_ID MySQL extension
TABLESPACE_COMMENT MySQL extension

Таблица INFORMATION_SCHEMA.TABLESPACES не предоставляет информацию о табличных пространствах InnoDB. Для метаданных о табличном пространстве InnoDB см. INNODB_SYS_TABLESPACES и INNODB_SYS_DATAFILES . Таблица INFORMATION_SCHEMA.FILES также обеспечивает метаданные для InnoDB.

22.25. Таблица INFORMATION_SCHEMA TABLE_CONSTRAINTS

Таблица TABLE_CONSTRAINTS описывает, у каких таблиц есть ограничения.

INFORMATION_SCHEMA Name SHOW Name Remarks
CONSTRAINT_CATALOG def
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE
  • Переменная CONSTRAINT_TYPE может быть UNIQUE , PRIMARY KEY или FOREIGN KEY.

  • UNIQUE и PRIMARY KEY это информация о том же самом как то, что Вы получаете от поля Key_name в выводе SHOW INDEX, когда поле Non_unique = 0.
  • Столбец CONSTRAINT_TYPE может содержать одно из этих значений: UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK. Это столбец CHAR (не ENUM). Значение CHECK не доступно, пока мы не поддерживаем CHECK.

22.26. Таблица INFORMATION_SCHEMA TABLE_PRIVILEGES

Таблица TABLE_PRIVILEGES предоставляет информацию о табличных привилегиях. Эта информация прибывает из таблицы mysql.tables_priv.

INFORMATION_SCHEMA Name SHOW Name Remarks
GRANTEE ' user_name'@'host_name' value
TABLE_CATALOG def
TABLE_SCHEMA
TABLE_NAME
PRIVILEGE_TYPE
IS_GRANTABLE

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

SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
SHOW GRANTS ...

22.27. Таблица INFORMATION_SCHEMA TRIGGERS

Таблица TRIGGERS предоставляет информацию о триггерах. Чтобы видеть информацию о триггерах таблицы, Вы должны иметь привилегию TRIGGER для таблицы.

INFORMATION_SCHEMA Name SHOW Name Remarks
TRIGGER_CATALOG def
TRIGGER_SCHEMA
TRIGGER_NAMETrigger
EVENT_MANIPULATIONEvent
EVENT_OBJECT_CATALOG def
EVENT_OBJECT_SCHEMA
EVENT_OBJECT_TABLETable
ACTION_ORDER
ACTION_CONDITION NULL
ACTION_STATEMENTStatement
ACTION_ORIENTATION ROW
ACTION_TIMINGTiming
ACTION_REFERENCE_OLD_TABLE NULL
ACTION_REFERENCE_NEW_TABLE NULL
ACTION_REFERENCE_OLD_ROW OLD
ACTION_REFERENCE_NEW_ROW NEW
CREATEDCreated
SQL_MODEsql_mode MySQL extension
DEFINERDefiner MySQL extension
CHARACTER_SET_CLIENT character_set_clientMySQL extension
COLLATION_CONNECTION collation_connectionMySQL extension
DATABASE_COLLATION Database CollationMySQL extension
  • Имена в столбце SHOW Name обращаются к запросу SHOW TRIGGERS, а не SHOW CREATE TRIGGER. См. раздел 14.7.5.38.

  • TRIGGER_SCHEMA и TRIGGER_NAME: Название базы данных, в которой триггер происходит и имя триггера, соответственно.
  • EVENT_MANIPULATION: Событие триггера. Это тип действия на связанной таблице, для которого активируется триггер. Значения: 'INSERT' (строка была вставлена), 'DELETE' (строка была удалена) или 'UPDATE' (строка была изменена).
  • EVENT_OBJECT_SCHEMA и EVENT_OBJECT_TABLE: Как отмечено в разделе 21.3, каждый триггер связан точно с одной таблицей. Эти столбцы указывают на базу данных, в которой эта таблица находится, и имя таблицы, соответственно.
  • ACTION_ORDER: Порядковая позиция действия триггера в пределах списка на той же самой таблице с теми же самыми значениями EVENT_MANIPULATION и ACTION_TIMING.
  • ACTION_STATEMENT: Тело триггера, то есть, запрос, выполненный, когда триггер активируется. Этот текст использует UTF-8.
  • ACTION_ORIENTATION: Всегда содержит значение 'ROW'.
  • ACTION_TIMING: Активируется ли триггер прежде или после инициирующего события. Значения 'BEFORE' или 'AFTER'.
  • ACTION_REFERENCE_OLD_ROW и ACTION_REFERENCE_NEW_ROW: Старые и новые идентификаторы столбца, соответственно. Это означает, что ACTION_REFERENCE_OLD_ROW всегда содержит значение 'OLD', а ACTION_REFERENCE_NEW_ROW 'NEW' .
  • CREATED: Дата и время, когда триггер создавался. Это TIMESTAMP(2) (с дробной частью в сотые части секунд).
  • SQL_MODE: Режим SQL, когда триггер создавался и под которым он выполняется. Для разрешенных значений см. раздел 6.1.8.
  • DEFINER: Учетная запись пользователя, который создал триггер, в формате 'user_name'@' host_name'.
  • CHARACTER_SET_CLIENT: Значение сеансовой переменной character_set_client , когда триггер создавался.
  • COLLATION_CONNECTION: Значение сеансовой переменной collation_connection , когда триггер создавался.
  • DATABASE_COLLATION: Сопоставление базы данных, с которой связан триггер.
  • Следующие столбцы в настоящее время всегда содержат NULL: ACTION_CONDITION, ACTION_REFERENCE_OLD_TABLE и ACTION_REFERENCE_NEW_TABLE.

Пример, используя триггер ins_sum, определенный в разделе 21.3:

mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
                   WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
*************************** 1. row ***************************
 TRIGGER_CATALOG: def
  TRIGGER_SCHEMA: test
TRIGGER_NAME: ins_sum
EVENT_MANIPULATION: INSERT
  EVENT_OBJECT_CATALOG: def
   EVENT_OBJECT_SCHEMA: test
EVENT_OBJECT_TABLE: account
ACTION_ORDER: 1
ACTION_CONDITION: NULL
ACTION_STATEMENT: SET @sum = @sum + NEW.amount
ACTION_ORIENTATION: ROW
   ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
  ACTION_REFERENCE_OLD_ROW: OLD
  ACTION_REFERENCE_NEW_ROW: NEW
 CREATED: 2013-07-05 07:41:21.26
SQL_MODE: NO_ENGINE_SUBSTITUTION
 DEFINER: me@localhost
  CHARACTER_SET_CLIENT: utf8
  COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: latin1_swedish_ci

22.28. Таблица INFORMATION_SCHEMA USER_PRIVILEGES

Таблица USER_PRIVILEGES предоставляет информацию о глобальных привилегиях. Эта информация прибывает из таблицы mysql.user.

INFORMATION_SCHEMA Name SHOW Name Remarks
GRANTEE 'user_name'@'host_name ' value, MySQL extension
TABLE_CATALOG def , MySQL extension
PRIVILEGE_TYPE MySQL extension
IS_GRANTABLE MySQL extension
  • Это нестандартная таблица. Это берет свои значения от таблицы mysql.user.

22.29. Таблица INFORMATION_SCHEMA VIEWS

Таблица VIEWS предоставляет информацию о представлениях в базах данных. Вы должны иметь привилегию SHOW VIEW, чтобы получить доступ к этой таблице.

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG def
TABLE_SCHEMA
TABLE_NAME
VIEW_DEFINITION
CHECK_OPTION
IS_UPDATABLE
DEFINER
SECURITY_TYPE
CHARACTER_SET_CLIENT MySQL extension
COLLATION_CONNECTION MySQL extension
  • Столбец VIEW_DEFINITION имеет большинство того, что Вы видите в поле Create Table вывода SHOW CREATE VIEW. Пропустите слова прежде SELECT и слова WITH CHECK OPTION. Предположите, что оригинальный запрос был:

    CREATE VIEW v AS
           SELECT s2, s1 FROM t WHERE s1 > 5
           ORDER BY s1 WITH CHECK OPTION;
    
    Тогда определение представления похоже на это:
    SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
    
  • Столбец CHECK_OPTION имеет значение NONE, CASCADE или LOCAL.

  • MySQL устанавливает флаг, названный флагом обновляемости представления, в ходе CREATE VIEW. Флаг YES (true), если UPDATE и DELETE (и подобные операции) являются законными для представления. Иначе, флаг установлен в NO (false). Столбец IS_UPDATABLE таблицы VIEWS выводит на экран состояние этого флага. Это означает, что сервер всегда знает, является ли представление обновляемым.

    Если представление не обновляемое, такие запросы, как UPDATE, DELETE и INSERT незаконны и будут отклонены. Отметьте, что, даже если представление обновляемое невозможно вставить в него, для деталей обратитесь к разделу 21.5.3.

  • DEFINER: Учетная запись пользователя, который создал представление, в формате 'user_name'@' host_name'. SECURITY_TYPE имеет значение DEFINER или INVOKER.
  • CHARACTER_SET_CLIENT: Значение сеансовой переменной character_set_client , когда представление создавалось.
  • COLLATION_CONNECTION: Значение сеансовой переменной collation_connection , когда представление создавалось.

MySQL позволяет Вам использовать отличающиеся настройки sql_mode, чтобы указать серверу тип синтаксиса SQL. Например, Вы могли бы использовать ANSI режим SQL, чтобы гарантировать, что MySQL правильно интерпретирует стандартный оператор конкатенации SQL, двойную черту (||), в Ваших запросах. Если Вы тогда создаете представление, которое связывает элементы, установка sql_mode в значение, отличающееся от ANSI может заставить представление стать недопустимым. Но дело обстоит не так. Независимо от того, как Вы выписываете определение представления, MySQL всегда хранит это тем же самым путем, в канонической форме. Вот пример, который показывает, как сервер изменяет оператор связи двойной черты на функцию CONCAT():

mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
                 WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION                  |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)
Преимущество хранения определения представления в канонической форме состоит в том, что изменения, произведенные позже в значении sql_mode не будут затрагивать результаты представления. Однако, дополнительное последствие в том, что комментарии до SELECT обрезаются от определения сервером.

22.30. Таблицы InnoDB INFORMATION_SCHEMA

Этот раздел обеспечивает табличные определения для таблиц InnoDB INFORMATION_SCHEMA. Для соответствующей информации и примеров см. раздел 16.14.

Таблицы InnoDB INFORMATION_SCHEMA могут использоваться, чтобы контролировать активность InnoDB, чтобы обнаружить неэффективности прежде, чем они превратятся в проблемы, или расследовать проблемы. Поскольку Ваша база данных становится больше и более занятой, сталкиваясь с пределами Ваших аппаратных средств, Вы контролируете и настраиваете эти аспекты, чтобы сохранить базу данных, работающую гладко.

22.30.1. Таблица INFORMATION_SCHEMA INNODB_BUFFER_PAGE

Таблица INNODB_BUFFER_PAGE содержит информацию о каждой странице в буферном бассейне InnoDB .

Для связанной информации об использовании и примеров см. раздел 16.14.5.

Запросы таблицы INNODB_BUFFER_PAGE могут ввести существенные накладные расходы. Не запрашивайте эту таблицу на производственной системе, если Вы не знаете об исполнительном влиянии, которое Ваш запрос может оказать, и определили это как приемлемое. Чтобы избежать воздействия на работу, воспроизведите проблему, которую Вы хотите исследовать на испытательном образце и запросите на нем таблицу INNODB_BUFFER_PAGE.

Таблица 22.1. Столбцы INNODB_BUFFER_PAGE

ИмяОписание
POOL_ID ID бассейна. Идентификатор, чтобы различить разные экземпляры бассейна.
BLOCK_IDID блока бассейна.
SPACEID табличного пространства. Использует то же самое значение, что и INNODB_SYS_TABLES.SPACE.
PAGE_NUMBERНомер страницы.
PAGE_TYPEТип страницы. Разрешенные значения: ALLOCATED (недавно выделенная страница), INDEX (узел B-tree), UNDO_LOG (страница журнала отмен), INODE (узел индекса), IBUF_FREE_LIST (список свободных буферов вставки), IBUF_BITMAP (карта буферов вставки), SYSTEM (Системная страница), TRX_SYSTEM (Операционные системные данные), FILE_SPACE_HEADER (Заголовок пространства файла), EXTENT_DESCRIPTOR (Дескрипторная страница экстента), BLOB (Несжатая страница BLOB), COMPRESSED_BLOB (первая сжатая страница BLOB), COMPRESSED_BLOB2 (Последующая сжатая страница BLOB), IBUF_INDEX (индекс буферов вставки), RTREE_INDEX (пространственный индекс), SDI_INDEX (SDI индекс), SDI_BLOB (несжатый SDI BLOB), SDI_COMPRESSED_BLOB (сжатый SDI BLOB), UNKNOWN.
FLUSH_TYPEТип сброса.
FIX_COUNTЧисло потоков, использующих этот блок в буферном бассейне. Когда ноль, блок имеет право быть удаленным.
IS_HASHEDБыл ли хэш индекса основан на этой странице.
NEWEST_MODIFICATION Порядковый номер самой молодой модификации.
OLDEST_MODIFICATION Порядковый номер самой старой модификации.
ACCESS_TIME Абстрактный номер, определяющий первое время доступа к странице.
TABLE_NAME Название таблицы, к которой страница принадлежит. Этот столбец применим только к страницам типа INDEX.
INDEX_NAME Название индекса, к которому страница принадлежит. Это может быть название кластеризируемого или вторичного индекса. Этот столбец применим только к страницам типа INDEX.
NUMBER_RECORDS Число отчетов в пределах страницы.
DATA_SIZEСумма размеров отчетов. Этот столбец применим только к страницам типа INDEX.
COMPRESSED_SIZE Сжатый размер страницы. Нуль для страниц, которые не сжаты.
PAGE_STATE Статус страницы. У страницы с допустимыми данными есть одно из следующих состояний: FILE_PAGE (буферизует страницу данных из файла), MEMORY (буферизует страницу из объекта в памяти), COMPRESSED. Другие возможные статусы (управляемые InnoDB): NULL, READY_FOR_USE, NOT_USED или REMOVE_HASH.
IO_FIXОпределяет, находится ли какой-либо ввод / вывод на рассмотрении для этой страницы: IO_NONE = нет I/O на ожидании, IO_READ = чтение ждет, IO_WRITE = запись ждет.
IS_OLD Определяет, находится ли блок в подсписке старых блоков списка LRU.
FREE_PAGE_CLOCK Значение freed_page_clock считает, когда блок был последним, помещенным во главе списка LRU. freed_page_clock отслеживает число блоков, удаленных из конца списка LRU.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE LIMIT 1\G
*************************** 1. row ***************************
  POOL_ID: 0
 BLOCK_ID: 0
SPACE: 97
PAGE_NUMBER: 2473
PAGE_TYPE: INDEX
 FLUSH_TYPE: 1
FIX_COUNT: 0
IS_HASHED: YES
NEWEST_MODIFICATION: 733855581
OLDEST_MODIFICATION: 0
ACCESS_TIME: 3378385672
 TABLE_NAME: `employees`.`salaries`
 INDEX_NAME: PRIMARY
 NUMBER_RECORDS: 468
DATA_SIZE: 14976
COMPRESSED_SIZE: 0
 PAGE_STATE: FILE_PAGE
   IO_FIX: IO_NONE
   IS_OLD: YES
FREE_PAGE_CLOCK: 66
  • Эта таблица прежде всего полезна для исполнительного контроля на опытном уровне или развивая связанные с работой расширения для MySQL.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Когда таблицы, строки таблицы, разделения или индексы удалены, связанные страницы остаются в буферном бассейне, пока пространство не потребуется для других данных. Таблица INNODB_BUFFER_PAGE сообщает информацию об этих страницах, пока они не выселены из буферного бассейна. Для получения дополнительной информации о том, как InnoDB управляет буферными данными см. раздел 16.6.3.1.

22.30.2. Таблица INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU

Таблица INNODB_BUFFER_PAGE_LRU содержит информацию о страницах в буферном бассейне InnoDB, в особенности как они упорядочиваются в списке LRU, который определяет, какие страницы удалить из буферного бассейна, когда он становится полным.

Таблица INNODB_BUFFER_PAGE_LRU имеет те же самые столбцы, что и INNODB_BUFFER_PAGE , за исключением того, что INNODB_BUFFER_PAGE_LRU имеет столбец LRU_POSITION вместо BLOCK_ID column.

Таблица 22.2. Столбцы INNODB_BUFFER_PAGE_LRU

ИмяОписание
POOL_ID ID бассейна. Идентификатор, чтобы различить разные экземпляры бассейна.
LRU_POSITION Позиция страницы в списке LRU.
SPACEID табличного пространства. Использует то же самое значение, что и INNODB_SYS_TABLES.SPACE.
PAGE_NUMBERНомер страницы.
PAGE_TYPEТип страницы. Разрешенные значения: ALLOCATED (недавно выделенная страница), INDEX (узел B-tree), UNDO_LOG (страница журнала отмен), INODE (узел индекса), IBUF_FREE_LIST (список свободных буферов вставки), IBUF_BITMAP (карта буферов вставки), SYSTEM (Системная страница), TRX_SYSTEM (Операционные системные данные), FILE_SPACE_HEADER (Заголовок пространства файла), EXTENT_DESCRIPTOR (Дескрипторная страница экстента), BLOB (Несжатая страница BLOB), COMPRESSED_BLOB (первая сжатая страница BLOB), COMPRESSED_BLOB2 (Последующая сжатая страница BLOB), IBUF_INDEX (индекс буферов вставки), RTREE_INDEX (пространственный индекс), SDI_INDEX (SDI индекс), SDI_BLOB (несжатый SDI BLOB), SDI_COMPRESSED_BLOB (сжатый SDI BLOB), UNKNOWN.
FLUSH_TYPEТип сброса.
FIX_COUNTЧисло потоков, использующих этот блок в буферном бассейне. Когда ноль, блок имеет право быть удаленным.
IS_HASHEDБыл ли хэш индекса основан на этой странице.
NEWEST_MODIFICATION Порядковый номер самой молодой модификации.
OLDEST_MODIFICATION Порядковый номер самой старой модификации.
ACCESS_TIME Абстрактный номер, определяющий первое время доступа к странице.
TABLE_NAME Название таблицы, к которой страница принадлежит. Этот столбец применим только к страницам типа INDEX.
INDEX_NAME Название индекса, к которому страница принадлежит. Это может быть название кластеризируемого или вторичного индекса. Этот столбец применим только к страницам типа INDEX.
NUMBER_RECORDS Число отчетов в пределах страницы.
DATA_SIZEСумма размеров отчетов. Этот столбец применим только к страницам типа INDEX.
COMPRESSED_SIZE Сжатый размер страницы. Нуль для страниц, которые не сжаты.
PAGE_STATE Статус страницы. У страницы с допустимыми данными есть одно из следующих состояний: FILE_PAGE (буферизует страницу данных из файла), MEMORY (буферизует страницу из объекта в памяти), COMPRESSED. Другие возможные статусы (управляемые InnoDB): NULL, READY_FOR_USE, NOT_USED или REMOVE_HASH.
IO_FIXОпределяет, находится ли какой-либо ввод / вывод на рассмотрении для этой страницы: IO_NONE = нет I/O на ожидании, IO_READ = чтение ждет, IO_WRITE = запись ждет.
IS_OLD Определяет, находится ли блок в подсписке старых блоков списка LRU.
FREE_PAGE_CLOCK Значение freed_page_clock считает, когда блок был последним, помещенным во главе списка LRU. freed_page_clock отслеживает число блоков, удаленных из конца списка LRU.

Пример

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1. row ***************************
  POOL_ID: 0
   LRU_POSITION: 0
SPACE: 97
PAGE_NUMBER: 1984
PAGE_TYPE: INDEX
 FLUSH_TYPE: 1
FIX_COUNT: 0
IS_HASHED: YES
NEWEST_MODIFICATION: 719490396
OLDEST_MODIFICATION: 0
ACCESS_TIME: 3378383796
 TABLE_NAME: `employees`.`salaries`
 INDEX_NAME: PRIMARY
 NUMBER_RECORDS: 468
DATA_SIZE: 14976
COMPRESSED_SIZE: 0
 COMPRESSED: NO
   IO_FIX: IO_NONE
   IS_OLD: YES
FREE_PAGE_CLOCK: 0
  • Эта таблица прежде всего полезна для исполнительного контроля на опытном уровне или развивая связанные с работой расширения MySQL.

  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.
  • Запросы этой таблицы могут потребовать, чтобы MySQL выделил большой блок непрерывной памяти, больше чем 64 байта на каждую активную страницу в буферном бассейне. Это распределение может потенциально вызвать ошибку памяти, особенно для систем с буферными бассейнами в несколько гигабайт.
  • Запросы этой таблицы требуют, чтобы MySQL заблокировал структуру данных, представляющую буферный бассейн, что может уменьшить параллелизм, особенно для систем с буферными бассейнами в несколько гигабайт.
  • Когда таблицы, строки таблицы, разделы или индексы удалены, связанные страницы остаются в буферном бассейне, пока пространство не потребуется для других данных. Таблица INNODB_BUFFER_PAGE_LRU сообщает информацию об этих страницах, пока они не выселены из буферного бассейна. Для получения дополнительной информации о том, как InnoDB управляет буферными данными бассейна см. раздел 16.6.3.1.

22.30.3. Таблица INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS

Таблица INNODB_BUFFER_POOL_STATS предоставляет большую часть той же самой буферной информации о бассейне, предоставленной в выводе SHOW ENGINE INNODB STATUS. Большая часть информации может также быть получена, используя InnoDB переменные состояния сервера .

Идея сделать страницы в буферном бассейне молодыми или старыми обращается к передаче их между подсписками в начале и хвосте буферной структуры данных бассейна. Молодые страницы дольше стареют в буферном бассейне, в то время как старые страницы на грани удления.

Таблица 22.3. Столбцы INNODB_BUFFER_POOL_STATS

ИмяОписание
POOL_IDID бассейна. Уникальный идентификатор, чтобы различить буферные бассейны.
POOL_SIZE Размер бассейна в страницах.
FREE_BUFFERSЧисло свободных страниц в буферном бассейне
DATABASE_PAGESЧисло страниц в буферном бассейне InnoDB, содержащих данные. Число включает грязные и чистые страницы.
OLD_DATABASE_PAGES Число страниц в подсписке old бассейна.
MODIFIED_DATABASE_PAGES Число измененных (грязных) страниц базы данных
PENDING_DECOMPRESS Число страниц ожидающих распаковки
PENDING_READS Число страниц ожидающих чтения
PENDING_FLUSH_LRU Число страниц ожидающих сброса в LRU
PENDING_FLUSH_LIST Число страниц ожидающих сброса в список для сброса
PAGES_MADE_YOUNG Число страниц, которые надо объявить молодыми
PAGES_NOT_MADE_YOUNG Число страниц, которые НЕ надо объявить молодыми
PAGES_MADE_YOUNG_RATE Число страниц, которые объявлены молодыми в секунду
PAGES_MADE_NOT_YOUNG_RATE Число страниц, которые НЕ объявлены молодыми в секунду
NUMBER_PAGES_READ Число прочитанных страниц
NUMBER_PAGES_CREATED Число созданных страниц
NUMBER_PAGES_WRITTEN Число записанных страниц
PAGES_READ_RATE Число прочитанных страниц в секунду
PAGES_CREATE_RATE Число созданных страниц в секунду
PAGES_WRITTEN_RATE Число записанных страниц в секунду
NUMBER_PAGES_GET Число логических запросов чтения.
HIT_RATE Буферная частота успешных обращений бассейна
YOUNG_MAKE_PER_THOUSAND_GETS Число страниц, которые объявлены молодыми на тысячу получений
NOT_YOUNG_MAKE_PER_THOUSAND_GETS Число страниц, которые НЕ объявлены молодыми на тысячу получений
NUMBER_PAGES_READ_AHEAD Число страниц, прочитанных предварительно
NUMBER_READ_AHEAD_EVICTED Число предварительно прочитанных страниц в бассейн фоновым потоком чтения, которые были впоследствии удалены без доступа от запросов.
READ_AHEAD_RATE Число страниц, прочитанных предварительно в секунду
READ_AHEAD_EVICTED_RATE Число страниц, прочитанных предварительно и удаленных без доступа в секунду
LRU_IO_TOTALLRU IO суммарно
LRU_IO_CURRENTLRU IO для текущего интервала
UNCOMPRESS_TOTAL Общее количество распакованных страниц
UNCOMPRESS_CURRENT Число страниц, распакованных в текущем интервале

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS\G
*************************** 1. row ***************************
 POOL_ID: 0
 POOL_SIZE: 8192
  FREE_BUFFERS: 1
DATABASE_PAGES: 8085
OLD_DATABASE_PAGES: 2964
 MODIFIED_DATABASE_PAGES: 0
PENDING_DECOMPRESS: 0
 PENDING_READS: 0
 PENDING_FLUSH_LRU: 0
PENDING_FLUSH_LIST: 0
  PAGES_MADE_YOUNG: 22821
  PAGES_NOT_MADE_YOUNG: 3544303
 PAGES_MADE_YOUNG_RATE: 357.62602199870594
   PAGES_MADE_NOT_YOUNG_RATE: 0
 NUMBER_PAGES_READ: 2389
  NUMBER_PAGES_CREATED: 12385
  NUMBER_PAGES_WRITTEN: 13111
   PAGES_READ_RATE: 0
 PAGES_CREATE_RATE: 0
PAGES_WRITTEN_RATE: 0
  NUMBER_PAGES_GET: 33322210
HIT_RATE: 1000
YOUNG_MAKE_PER_THOUSAND_GETS: 18
NOT_YOUNG_MAKE_PER_THOUSAND_GETS: 0
 NUMBER_PAGES_READ_AHEAD: 2024
   NUMBER_READ_AHEAD_EVICTED: 0
   READ_AHEAD_RATE: 0
 READ_AHEAD_EVICTED_RATE: 0
  LRU_IO_TOTAL: 0
LRU_IO_CURRENT: 0
  UNCOMPRESS_TOTAL: 0
UNCOMPRESS_CURRENT: 0
  • Эта таблица прежде всего полезна для исполнительного контроля на опытном уровне или развивая связанные с работой расширения для MySQL.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.4. Таблица INFORMATION_SCHEMA INNODB_CACHED_INDEXES

Таблица INNODB_CACHED_INDEXES сообщает о числе индексных страниц, кэшируемых в буферном бассейне InnoDB для каждого индекса.

Таблица 22.4. Столбцы INNODB_CACHED_INDEXES

ИмяОписание
SPACE_ID ID табличного пространства.
INDEX_IDИдентификатор для каждого индекса, который уникален для всех баз данных.
N_CACHED_PAGES Число индексных страниц, кэшированных в буферном бассейне.

Примеры:

Этот запрос возвращает число индексных страниц, кэшируемых в бассейне InnoDB для определенного индекса:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CACHED_INDEXES
                   WHERE INDEX_ID=65\G
*************************** 1. row ***************************
  INDEX_ID: 65
N_CACHED_PAGES: 45
1 row in set (0.00 sec)
Этот запрос возвращает число индексных страниц, кэшируемых в буферном бассейне для каждого индекса и использует INNODB_SYS_INDEXES и INNODB_SYS_TABLES , чтобы получить имя таблицы и индекса для каждого значения INDEX_ID.
SELECT tables.name AS table_name, indexes.name AS index_name,
       cached.n_cached_pages AS n_cached_pages FROM
       INFORMATION_SCHEMA.INNODB_CACHED_INDEXES AS cached,
       INFORMATION_SCHEMA.INNODB_SYS_INDEXES AS indexes,
       INFORMATION_SCHEMA.INNODB_SYS_TABLES AS tables WHERE
       cached.index_id = indexes.index_id AND
       indexes.table_id = tables.table_id;
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.

  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.5. Таблицы INFORMATION_SCHEMA INNODB_CMP и INNODB_CMP_RESET

Таблицы INNODB_CMP и INNODB_CMP_RESET содержат информацию о статусе операций, связанных с сжатыми таблицами InnoDB.

Таблица 22.5. Столбцы INNODB_CMP и INNODB_CMP_RESET

ИмяОписание
PAGE_SIZE Сжатый размер страницы в байтах.
COMPRESS_OPS Сколько раз страница B-дерева размера PAGE_SIZE была сжата. Страницы сжаты всякий раз, когда пустая страница создается, или пространство для несжатого журнала модификации заканчивается.
COMPRESS_OPS_OK Сколько раз страница B-дерева размера PAGE_SIZE успешно сжата. Это количество никогда не должно превышать COMPRESS_OPS.
COMPRESS_TIMEПолное время в секундах, проведенных в попытках сжать страницы B-дерева размера PAGE_SIZE.
UNCOMPRESS_OPS Сколько раз страница B-дерева размера PAGE_SIZE было рассжата. Страницы B-дерева рассжаты всякий раз, когда сжатие терпит неудачу или при первом доступе, когда несжатая страница не существует в буферном бассейне.
UNCOMPRESS_TIME Полное время в секундах проведено в рассжатии страниц B-дерева размера PAGE_SIZE.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP\G
*************************** 1. row ***************************
  page_size: 1024
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 0
uncompress_time: 0
*************************** 2. row ***************************
  page_size: 2048
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 0
uncompress_time: 0
*************************** 3. row ***************************
  page_size: 4096
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 0
uncompress_time: 0
*************************** 4. row ***************************
  page_size: 8192
   compress_ops: 86955
compress_ops_ok: 81182
  compress_time: 27
 uncompress_ops: 26828
uncompress_time: 5
*************************** 5. row ***************************
  page_size: 16384
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 0
uncompress_time: 0
  • Используйте эти таблицы, чтобы измерить эффективность сжатых таблиц InnoDB в Вашей базе данных.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Для информации об использовании см. разделы 16.9.1.4 и 16.14.1.3. Для общей информации о сжатии таблиц InnoDB смю раздел 16.9.

22.30.6. Таблицы INFORMATION_SCHEMA INNODB_CMPMEM и INNODB_CMPMEM_RESET

Таблицы INNODB_CMPMEM и INNODB_CMPMEM_RESET содержат информацию о статусе сжатых страниц в буферном бассейне InnoDB.

Таблица 22.6. Столбцы INNODB_CMPMEM и INNODB_CMPMEM_RESET

ИмяОписание
PAGE_SIZE Размер блока в байтах. Каждый отчет этой таблицы описывает блоки этого размера.size.
BUFFER_POOL_INSTANCE Уникальный идентификатор для буферного бассейна.
PAGES_USED Число блоков размера PAGE_SIZE, которые используются в настоящее время.
PAGES_FREE Число блоков размера PAGE_SIZE, которые в настоящее время доступны для распределения. Этот столбец показывает внешнюю фрагментацию в бассейне памяти. Идеально, это число должно быть самое большее 1.
RELOCATION_OPS Число раз, которое блок размера PAGE_SIZE был перемещен. Система может переместить выделенный освобожденный блок, когда пытается сформировать больший освобожденный блок. Чтение из таблицы INNODB_CMPMEM_RESET сбрасывает это количество.
RELOCATION_TIME Полное время в микросекундах, которое проведено в перемещении блоков размера PAGE_SIZE. Чтение из таблицы INNODB_CMPMEM_RESET сбрасывает это количество.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM\G
*************************** 1. row ***************************
 page_size: 1024
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
  relocation_ops: 0
 relocation_time: 0
*************************** 2. row ***************************
 page_size: 2048
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
  relocation_ops: 0
 relocation_time: 0
*************************** 3. row ***************************
 page_size: 4096
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
  relocation_ops: 0
 relocation_time: 0
*************************** 4. row ***************************
 page_size: 8192
buffer_pool_instance: 0
pages_used: 7673
pages_free: 15
  relocation_ops: 4638
 relocation_time: 0
*************************** 5. row ***************************
 page_size: 16384
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
  relocation_ops: 0
 relocation_time: 0
  • Используйте эти таблицы, чтобы измерить эффективность сжатых таблиц InnoDB в Вашей базе данных.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Для информации об использовании см. разделы 16.9.1.4 и 16.14.1.3. Для общей информации о сжатии таблиц InnoDB смю раздел 16.9.

22.30.7. Таблицы INFORMATION_SCHEMA INNODB_CMP_PER_INDEX и INNODB_CMP_PER_INDEX_RESET

Таблицы INNODB_CMP_PER_INDEX и INNODB_CMP_PER_INDEX_RESET содержат информацию о статусе операций, связанных со сжатыми таблицами и индексами InnoDB с отдельной статистикой для каждой комбинации базы данных, таблицы и индекса, чтобы помочь Вам оценить работу и полноценность сжатия для определенных таблиц.

Для сжатой InnoDB-таблицы табличные данные и все вторичные индексы сжаты.

Таблица 22.7. Столбцы INNODB_CMP_PER_INDEX и INNODB_CMP_PER_INDEX_RESET

ИмяОписание
DATABASE_NAME База данных, содержащая применимую таблицу.
TABLE_NAME Таблица, чтобы контролировать статистику сжатия.
INDEX_NAME Индекс, чтобы контролировать статистику сжатия.
COMPRESS_OPS Число операций сжатия. Страницы сжаты всякий раз, когда пустая страница создается, или пространство для несжатого журнала модификации заканчивается.
COMPRESS_OPS_OK Число успешных операций сжатия. Вычтите из COMPRESS_OPS, чтобы получить число сбоев сжатия . Разделите на COMPRESS_OPS, чтобы получить процент отказов сжатия.
COMPRESS_TIME Общая сумма времени центрального процессора, в секундах, используемая для того, чтобы сжать данные в этом индексе.
UNCOMPRESS_OPS Число операций разсжатия. Сжатые InnoDB страницы разсжаты всякий раз, когда сжатие сбоит, или когда к сжатой странице в первый раз получают доступ в буферном бассейне и несжатая страница не существует.
UNCOMPRESS_TIME Общая сумма времени центрального процессора, в секундах, используемая для того, чтобы разсжать данные в этом индексе.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX\G
*************************** 1. row ***************************
  database_name: employees
 table_name: salaries
 index_name: PRIMARY
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 23451
uncompress_time: 4
*************************** 2. row ***************************
  database_name: employees
 table_name: salaries
 index_name: emp_no
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 1597
uncompress_time: 0
  • Используйте эти таблицы, чтобы измерить эффективность сжатых таблиц InnoDB в Вашей базе данных.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Для информации об использовании см. разделы 16.9.1.4 и 16.14.1.3. Для общей информации о сжатии таблиц InnoDB смю раздел 16.9.

22.30.8. Таблица INFORMATION_SCHEMA INNODB_FT_BEING_DELETED

Таблица INNODB_FT_BEING_DELETED снимок таблицы INNODB_FT_DELETED , которая используется только во время выполнения OPTIMIZE TABLE. Когда OPTIMIZE TABLE выполнен, таблица INNODB_FT_BEING_DELETED освобождена и DOC_ID удалены из таблицы INNODB_FT_DELETED. Поскольку содержание INNODB_FT_BEING_DELETED, как правило, имеет короткое время существования, эта таблица ограничила утилиту для контроля или отладки. Для информации о выполнении OPTIMIZE TABLE на таблицах с индексом FULLTEXT см. раздел 13.9.6.

Эта таблица первоначально кажется пустой, пока Вы не устанавливаете значение переменной конфигурации innodb_ft_aux_table . Вывод подобен примеру для таблицы INNODB_FT_DELETED .

Таблица 22.8. Столбцы INNODB_FT_BEING_DELETED

ИмяОписание
DOC_IDID документа строки, которая находится в процессе удаления. Это значение могло бы отразить значение столбца ID, который Вы определили для основной таблицы, или это может быть значение последовательности, произведенное InnoDB, когда таблица не содержит подходящий столбец. Это значение используется, чтобы пропустить строки в таблице innodb_ft_index_table , когда Вы делаете текстовые поиски перед данными для удаленных строк, физически удаленных из индекса FULLTEXT запросом OPTIMIZE TABLE.
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Для получения дополнительной информации о поисках InnoDB FULLTEXT см. разделы 16.8.9 и 13.9.

22.30.9. Таблица INFORMATION_SCHEMA INNODB_FT_CONFIG

Таблица INNODB_FT_CONFIG выводит на экран метаданные об индексе FULLTEXT и связанной обработке для таблиц.

Прежде, чем Вы запросите эту таблицу, установите переменную конфигурации innodb_ft_aux_table к имени (включая имя базы данных) таблицы, которая содержит индекс FULLTEXT, например, test/articles.

Таблица 22.9. Столбцы INNODB_FT_CONFIG

ИмяОписание
KEY Имя, определяющее элемент метаданных для таблицы InnoDB, содержащей индекс FULLTEXT.
VALUE Значение, связанное со столбцом KEY, отражающее некоторое предельное значение или текущий вес для аспекта индекса FULLTEXT таблицы InnoDB.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
+---------------------------+-------------------+
| KEY                       | VALUE             |
+---------------------------+-------------------+
| optimize_checkpoint_limit | 180               |
| synced_doc_id             | 0                 |
| stopword_table_name       | test/my_stopwords |
| use_stopword              | 1                 |
+---------------------------+-------------------+
  • Эта таблица предназначена только для внутренней конфигурации. Это не предназначено для применения в статистических информационных целях.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Значения для столбца KEY может меняться в зависимости от потребностей в исполнительной настройке и отладке полнотекстовой обработки. Значения ключа включают:

    • optimize_checkpoint_limit: Число секунд, после которых OPTIMIZE TABLE остановится.

    • synced_doc_id: Следующее DOC_ID.
    • stopword_table_name: Имя database/table определяемой пользователем таблицы стоп-слов. Эта область кажется пустой, если нет никакой определяемой пользователем таблицы стоп-слов.
    • use_stopword: Указывает, используется ли таблица стоп-слов, которая определена, когда создан индекс FULLTEXT.

22.30.10. Таблица INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD

Таблица INNODB_FT_DEFAULT_STOPWORD содержит список стоп-слов, которые используются по умолчанию, создавая индекс FULLTEXT для InnoDB.

Таблица 22.10. Столбцы INNODB_FT_DEFAULT_STOPWORD

ИмяОписание
value Слово, которое используется по умолчанию в качестве стоп-слова для индексов FULLTEXT на таблицах InnoDB. Не используемо, если Вы переопределяете значение по умолчанию опциями innodb_ft_server_stopword_table или innodb_ft_user_stopword_table.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+-------+
| value |
+-------+
| a     |
| about |
| an    |
| are   |
| as    |
| at    |
| be    |
| by    |
| com   |
| de    |
| en    |
| for   |
| from  |
| how   |
| i     |
| in    |
| is    |
| it    |
| la    |
| of    |
| on    |
| or    |
| that  |
| the   |
| this  |
| to    |
| was   |
| what  |
| when  |
| where |
| who   |
| will  |
| with  |
| und   |
| the   |
| www   |
+-------+
36 rows in set (0.00 sec)
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.11. Таблица INFORMATION_SCHEMA INNODB_FT_DELETED

Таблица INNODB_FT_DELETED делает запись строк, которые удалены из индекса FULLTEXT для таблицы InnoDB. Чтобы избежать дорогой перестройки индекса во время операций DML для InnoDB FULLTEXT, информация о недавно удаленных словах хранится отдельно, фильтруется из результатов поиска, когда Вы делаете текстовый поиск, и удаляется из основного поиска только, когда Вы вызываете OPTIMIZE TABLE.

Эта таблица первоначально кажется пустой, пока Вы не устанавливаете значение переменной конфигурации innodb_ft_aux_table к имени (включая имя базы данных) таблицы, которая содержит индекс FULLTEXT, например, test/articles.

Таблица 22.11. Столбцы INNODB_FT_DELETED

ИмяОписание
DOC_IDID документа недавно удаленной строки. Это значение могло бы отразить значение столбца ID, который Вы определили для основной таблицы, или это может быть значение последовательности, произведенное InnoDB, когда таблица не содержит подходящий столбец. Это значение используется, чтобы пропустить строки в таблице innodb_ft_index_table, когда Вы делаете текстовые поиски перед данными для удаленных строк, физически удаленных из индекса FULLTEXT запросом OPTIMIZE TABLE.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
+--------+
| DOC_ID |
+--------+
|  6     |
|  7     |
|  8     |
+--------+
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.12. Таблица INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE

INNODB_FT_INDEX_CACHE: Содержит информацию маркера о недавно вставленных строках в индекс FULLTEXT. Чтобы избежать дорогой перестройки индекса во время операций DML, информация о недавно индексированных словах хранится отдельно и объединена с основным поиском, только когда выполняется OPTIMIZE TABLE, когда сервер остановлен или когда размер кэша превышает предел, определенный innodb_ft_cache_size или innodb_ft_total_cache_size.

Прежде, чем Вы запросите эту таблицу, установите переменную конфигурации innodb_ft_aux_table к имени (включая имя базы данных) таблицы, которая содержит индекс FULLTEXT, например, test/articles.

Таблица 22.12. Столбцы INNODB_FT_INDEX_CACHE

ИмяОписание
WORD Слово извлечено из текста недавно вставленной строки.
FIRST_DOC_IDПервое ID документа, где это слово появляется в индексе FULLTEXT.
LAST_DOC_IDПоследнее ID документа, где это слово появляется в индексе FULLTEXT.
DOC_COUNTЧисло строк, в которых это слово появляется в индексе FULLTEXT. То же самое слово может быть несколько раз в пределах таблицы кэша, однажды для каждой комбинации значений DOC_ID и POSITION.
DOC_IDID документа недавно вставленной строки. Это значение могло бы отразить значение ID столбца, который Вы определили для основной таблицы, или это может быть значение последовательности, произведенное InnoDB, когда таблица не содержит подходящий столбец.
POSITION Позиция этого особого случая слова в пределах соответствующего документа, идентифицированного значением DOC_ID. Значение не представляет абсолютную позицию: это смещение, добавленное к POSITION предыдущего случая этого слова.
  • Эта таблица первоначально кажется пустой, пока Вы не устанавливаете значение переменной конфигурации innodb_ft_aux_table . Следующий пример демонстрирует, как использовать опцию innodb_ft_aux_table , чтобы показать информацию об индексе FULLTEXT для указанной таблицы.

    mysql> USE test;
    mysql> CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL
                                     PRIMARY KEY, title VARCHAR(200), body TEXT,
                                     FULLTEXT (title,body)) ENGINE=InnoDB;
    
    mysql> INSERT INTO articles (title,body) VALUES
                     ('MySQL Tutorial','DBMS stands for DataBase ...'),
                     ('How To Use MySQL Well','After you went through a ...'),
                     ('Optimizing MySQL','In this tutorial we will show ...'),
                     ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
                     ('MySQL vs. YourSQL','In the following database comparison ...'),
                     ('MySQL Security','When configured properly, MySQL ...');
    
    mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> USE INFORMATION_SCHEMA;
    mysql> SELECT word, doc_count, doc_id, position FROM INNODB_FT_INDEX_CACHE LIMIT 5;
    +------------+-----------+--------+----------+
    | word       | doc_count | doc_id | position |
    +------------+-----------+--------+----------+
    | 1001       | 1         |  4     |    0     |
    | after      | 1         |  2     |   22     |
    | comparison | 1         |  5     |   44     |
    | configured | 1         |  6     |   20     |
    | database   | 2         |  1     |   31     |
    +------------+-----------+--------+----------+
    
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.13. Таблица INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE

Таблица INNODB_FT_INDEX_TABLE выводит на экран информацию об инвертированном индексе, используемом, чтобы обработать текстовые поиски FULLTEXT таблицы InnoDB.

Прежде, чем Вы запросите эту таблицу, установите переменную конфигурации innodb_ft_aux_table к имени (включая имя базы данных) таблицы, которая содержит индекс FULLTEXT, например, test/articles.

Таблица 22.13. Столбцы INNODB_FT_INDEX_TABLE

ИмяОписание
WORD Слово, извлеченное из текста столбцов, которые являются частью FULLTEXT.
FIRST_DOC_ID Первое ID документа, где это слово появляется в индексе FULLTEXT.
LAST_DOC_ID Последнее ID документа, где это слово появляется в индексе FULLTEXT.
DOC_COUNT Число строк, в которых это слово появляется в индексе FULLTEXT. То же самое слово может быть несколько раз в пределах таблицы кэша, однажды для каждой комбинации DOC_ID и POSITION.
DOC_ID ID документа строки, содержащей слово. Это значение могло бы отразить значение ID столбца, который Вы определили для основной таблицы, или это может быть значение последовательности, произведенное InnoDB, когда таблица не содержит подходящий столбец.
POSITION Позиция этого особого случая слова в пределах соответствующего документа, идентифицированного DOC_IDvalue.
  • Эта таблица первоначально кажется пустой, пока Вы не устанавливаете значение переменной конфигурации innodb_ft_aux_table . Следующий пример демонстрирует, как использовать опцию innodb_ft_aux_table , чтобы показать информацию об индексе FULLTEXT для указанной таблицы. Прежде, чем информация для недавно вставленных строк появляется в INNODB_FT_INDEX_TABLE, кэш индекса FULLTEXT должен сброситься на диск. Это делается запуском OPTIMIZE TABLE на индексированной таблице с innodb_optimize_fulltext_only=ON.

    mysql> use test;
    mysql> CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL
                                     PRIMARY KEY, title VARCHAR(200),
                                     body TEXT, FULLTEXT (title,body))
                                     ENGINE=InnoDB;
    
    mysql> INSERT INTO articles (title,body) VALUES
                     ('MySQL Tutorial','DBMS stands for DataBase ...'),
                     ('How To Use MySQL Well','After you went through a ...'),
                     ('Optimizing MySQL','In this tutorial we will show ...'),
                     ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
                     ('MySQL vs. YourSQL','In the following database comparison ...'),
                     ('MySQL Security','When configured properly, MySQL ...');
    
    mysql> SET GLOBAL innodb_optimize_fulltext_only=ON;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> OPTIMIZE TABLE articles;
    +---------------+----------+----------+----------+
    | Table         | Op       | Msg_type | Msg_text |
    +---------------+----------+----------+----------+
    | test.articles | optimize | status   | OK       |
    +---------------+----------+----------+----------+
    
    mysql> SET GLOBAL innodb_ft_aux_table = 'test/articles';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> USE INFORMATION_SCHEMA;
    mysql> SELECT word, doc_count, doc_id, position FROM INNODB_FT_INDEX_TABLE LIMIT 5;
    +------------+-----------+--------+----------+
    | word       | doc_count | doc_id | position |
    +------------+-----------+--------+----------+
    | 1001       | 1         |  4     |    0     |
    | after      | 1         |  2     |   22     |
    | comparison | 1         |  5     |   44     |
    | configured | 1         |  6     |   20     |
    | database   | 2         |  1     |   31     |
    +------------+-----------+--------+----------+
    
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.14. Таблица INFORMATION_SCHEMA INNODB_LOCKS

Таблица INNODB_LOCKS содержит информацию о каждой блокировке, которую транзакция InnoDB запросила, но еще не приобрела, и каждой блокировке, при которой транзакция считает, что блокирует другую транзакцию.

Эта таблица устарела и удалена в MySQL 8.0.1. Используйте таблицу Performance Schema data_locks . См. раздел 23.9.12.1 .

Различия между INNODB_LOCKS и data_locks :

  • Если транзакция держит блокировку, INNODB_LOCKS выводит на экран блокировку, только если другая транзакция ждет ее. data_locks выводит на экран блокировку независимо от того, ждет ли какая-либо транзакция этого.

  • У таблицы data_locks нет никакого соответствия столбцов LOCK_SPACE, LOCK_PAGE или LOCK_REC.
  • Таблица INNODB_LOCKS требует глобальной привилегии PROCESS. Таблица data_locks требует обычной привилегии Performance Schema SELECT на таблице, из которой будет выбор.

Следующая таблица показывает отображение столбцов INNODB_LOCKS на столбцы data_locks. Используйте эту информацию, чтобы мигрировать приложения от одной таблицы к другой.

Таблица 22.14. Отображение столбцов INNODB_LOCKS на data_locks

INNODB_LOCKSdata_locks
LOCK_IDENGINE_LOCK_ID
LOCK_TRX_ID ENGINE_TRANSACTION_ID
LOCK_MODELOCK_MODE
LOCK_TYPELOCK_TYPE
LOCK_TABLE (имена схемы и таблицы вместе) OBJECT_SCHEMA (имя схемы), OBJECT_NAME (имя таблицы).
LOCK_INDEXINDEX_NAME
LOCK_SPACEНет.
LOCK_PAGEНет.
LOCK_RECНет.
LOCK_DATALOCK_DATA

22.30.15. Таблица INFORMATION_SCHEMA INNODB_LOCK_WAITS

Таблица INNODB_LOCK_WAITS содержит одну или более строк для каждой заблокированной транзакции InnoDB, указывая на блокировку, которую это просило и любые блокировки, которые блокируют этот запрос.

Эта таблица устарела и удалена с MySQL 8.0.1. Используйте таблицу data_lock_waits Performance Schema. См. раздел 23.9.12.2.

Таблицы отличаются по требуемым привилегиям: INNODB_LOCK_WAITS требует глобальную PROCESS . Таблица data_lock_waits требует обычной привилегии Performance Schema SELECT для таблицы, из которой будут взяты данные.

Следующая таблица показывает отображение столбцов INNODB_LOCK_WAITS на столбцы data_lock_waits. Используйте эту информацию, чтобы мигрировать приложения.

Таблица 22.15. Отображение INNODB_LOCK_WAITS на data_lock_waits

INNODB_LOCK_WAITS data_lock_waits
REQUESTING_TRX_ID REQUESTING_ENGINE_TRANSACTION_ID
REQUESTED_LOCK_ID REQUESTING_ENGINE_LOCK_ID
BLOCKING_TRX_ID BLOCKING_ENGINE_TRANSACTION_ID
BLOCKING_LOCK_ID BLOCKING_ENGINE_LOCK_ID

22.30.16. Таблица INFORMATION_SCHEMA INNODB_METRICS

Таблица INFORMATION_SCHEMA представляет большое разнообразие информации о работе InnoDB, дополняя определенные области таблиц PERFORMANCE_SCHEMA для InnoDB. С простыми запросами Вы можете проверить полное здоровье системы. С более подробными запросами Вы можете диагностировать такие проблемы, как исполнительные узкие места, нехватки ресурсов и проблемы приложения.

Каждый монитор представляет пункт в исходном тексте InnoDB, который инструментован, чтобы собрать встречную информацию. Каждый счетчик может быть запущен, остановлен и сброшен. Вы можете также выполнить эти действия для группы счетчиков, используя их общее имя модуля.

По умолчанию, относительно небольшие данные собраны. Чтобы запустить, остановить и сбросить счетчики, Вы устанавливаете один из параметров конфигурации innodb_monitor_enable, innodb_monitor_disable, innodb_monitor_reset или innodb_monitor_reset_all, используя название счетчика, название модуля, подстановочное соответствие для такого имени с символом % или специальное ключевое слово all.

Для информации об использовании см. раздел 16.14.6 .

Таблица 22.16. Столбцы INNODB_METRICS

ИмяОписание
NAME Уникальное имя для счетчика.
SUBSYSTEM Аспект InnoDB, к котолрому относится метрика. Список, который следует за таблицей, перечисляет соответствующие имена модулей, чтобы использовать с SET GLOBAL.
COUNT Значение, начиная со счетчика включено.
MAX_COUNT Максимальное значение, начиная со счетчика включено.
MIN_COUNT Минимальное значение, начиная со счетчика включено.
AVG_COUNT Среднее значение, начиная со счетчика включено.
COUNT_RESET Сбросить счетчик. Поля _RESET действуют как секундомер: Вы можете измерить деятельность во время некоторого временного интервала, в то время как совокупные числа все еще доступны в полях COUNT, MAX_COUNT и подобных.
MAX_COUNT_RESET Максимальное значение, после которого сбросить счетчик.
MIN_COUNT_RESET Минимальное значение, после которого сбросить счетчик.
AVG_COUNT_RESET Среднее значение, после которого сбросить счетчик.
TIME_ENABLED Timestamp последнего запуска.
TIME_DISABLED Timestamp последней остановки.
TIME_ELAPSED Прошедшее время в секундах, начиная с запуска счетчика.
TIME_RESET Timestamp последней остановки.
STATUS Работает ли счетчик все еще (enabled) или остановился (disabled).
TYPE Является ли элемент совокупным счетчиком, или измеряет текущее значение некоторого ресурса.
COMMENTОписание счетчика.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS
                   WHERE NAME="dml_inserts"\G
*************************** 1. row ***************************
 NAME: dml_inserts
  SUBSYSTEM: dml
COUNT: 3
  MAX_COUNT: 3
  MIN_COUNT: NULL
  AVG_COUNT: 0.046153846153846156
COUNT_RESET: 3
MAX_COUNT_RESET: 3
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: 2014-12-04 14:18:28
  TIME_DISABLED: NULL
   TIME_ELAPSED: 65
 TIME_RESET: NULL
 STATUS: enabled
 TYPE: status_counter
COMMENT: Number of rows inserted

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.17. Таблица INFORMATION_SCHEMA INNODB_SYS_COLUMNS

Таблица INNODB_SYS_COLUMNS обеспечивает метаданные о столбцах таблицы, эквивалентные информации из таблицы SYS_COLUMNS словаря данных InnoDB.

Таблица 22.17. Столбцы INNODB_SYS_COLUMNS

ИмяОписание
TABLE_ID Идентификатор, представляющий таблицу, связанный со столбцом, то же самое значение, что и INNODB_SYS_TABLES.TABLE_ID.
NAME Название каждого столбца в каждой таблице. Эти имена могут быть верхним регистром или нижним регистром в зависимости от lower_case_table_names. Нет никаких специальных сохраненных системой названий столбцов.
POS Порядковая позиция столбца в пределах таблицы, начиная с 0 и постепенно увеличиваяся последовательно. Когда столбец удален, остающиеся столбцы переупорядочены так, чтобы у последовательности не было никаких промежутков. Значение POS для виртуального произведенного столбца кодирует порядковый номер столбца и порядковую позицию столбца. Для получения дополнительной информации см. раздел 22.30.26.
MTYPE Числовой идентификатор типа столбца. 1 = VARCHAR, 2 = CHAR, 3 = FIXBINARY, 4 = BINARY, 5 = BLOB, 6 = INT, 7 = SYS_CHILD, 8 = SYS, 9 = FLOAT, 10 = DOUBLE, 11 = DECIMAL, 12 = VARMYSQL, 13 = MYSQL, 14 = GEOMETRY.
PRTYPE Двоичное значение с битами, определяющими тип данных MySQL, код набора символов и nullability.
LEN Длина столбца, например, 4 для INT и 8 для BIGINT. Для символьных столбцов в многобайтовых наборах символов это значение длины максимальная длина в байтах, нужная для представления определения, то есть, для VARCHAR(N) это могло бы быть 2*N, 3*N и так далее в зависимости от кодировки символов.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
                   where TABLE_ID = 71\G
*************************** 1. row ***************************
TABLE_ID: 71
NAME: col1
 POS: 0
   MTYPE: 6
  PRTYPE: 1027
 LEN: 4
*************************** 2. row ***************************
TABLE_ID: 71
NAME: col2
 POS: 1
   MTYPE: 2
  PRTYPE: 524542
 LEN: 10
*************************** 3. row ***************************
TABLE_ID: 71
NAME: col3
 POS: 2
   MTYPE: 1
  PRTYPE: 524303
 LEN: 10

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.18. Таблица INFORMATION_SCHEMA INNODB_SYS_DATAFILES

Таблица INNODB_SYS_DATAFILES предоставляет информацию о пути файла с данными для InnoDB файл на таблицу и общих табличных пространств, эквивалентную информации в таблице SYS_DATAFILES словаря данных InnoDB.

Таблица INFORMATION_SCHEMA.FILES предоставляет информацию о пути файла с данными и другие метаданные обо всех типах табличного пространства InnoDB, включая табличные пространства файла на таблицу, общие табличные пространства, системное табличное пространство, временные табличные пространства и табличные пространства отмены (если есть).

Таблица 22.18. Столбцы INNODB_SYS_DATAFILES

ИмяОписание
SPACE ID табличного пространства.
PATH Путь файла с данными табличного пространства (например, .\world\innodb\city.ibd). Если табличное пространство файл на таблицу создается в местоположении вне каталога данных MySQL, используя предложение DATA DIRECTORY в CREATE TABLE, поле PATH показывает полный путь к каталогу.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES
                   WHERE SPACE = 57\G
*************************** 1. row ***************************
SPACE: 57
 PATH: ./test/t1.ibd
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.19. Таблица INFORMATION_SCHEMA INNODB_SYS_FIELDS

Таблица INNODB_SYS_FIELDS обеспечивает метаданные о ключах столбцов (полей) индексов InnoDB, эквивалентную информации из таблицы SYS_FIELDS в словаре данных InnoDB.

Таблица 22.19. Столбцы INNODB_SYS_FIELDS

ИмяОписание
INDEX_ID Идентификатор для индекса, связанного с этим полем ключа, используя то же самое значение, как в INNODB_SYS_INDEXES.INDEX_ID.
NAME Название оригинального столбца таблицы, используя то же самое значение, как в INNODB_SYS_COLUMNS.NAME.
POS Порядковая позиция поля ключа в пределах индекса, начиная с 0 и постепенно увеличиваюаяся последовательно. Когда столбец удален, остающиеся столбцы переупорядочены так, чтобы у последовательности не было никаких промежутков.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS
                   WHERE INDEX_ID = 117\G
*************************** 1. row ***************************
INDEX_ID: 117
NAME: col1
 POS: 0
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.20. Таблица INFORMATION_SCHEMA INNODB_SYS_FOREIGN

Таблица INNODB_SYS_FOREIGN обеспечивает метаданные о внешних ключах, эквивалентную информации из таблицы SYS_FOREIGN в словаре данных InnoDB.

Таблица 22.20 Столбцы INNODB_SYS_FOREIGN

ИмяОписание
ID Имя (не числовое значение) внешнего ключа индекса. Предваряется именем базы данных, например, test/products_fk.
FOR_NAME Название дочерней таблицы в этих отношениях внешнего ключа.
REF_NAME Название родительской таблицы в этих отношениях внешнего ключа.
N_COLS Число столбцов во внешнем ключе индекса.
TYPE Набор разрядных флагов с информацией о столбце внешнего ключа, ORed вместе. 1 = ON DELETE CASCADE, 2 = ON UPDATE SET NULL, 4 = ON UPDATE CASCADE, 8 = ON UPDATE SET NULL, 16 = ON DELETE NO ACTION, 32 = ON UPDATE NO ACTION.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN\G
*************************** 1. row ***************************
  ID: test/fk1
FOR_NAME: test/child
REF_NAME: test/parent
  N_COLS: 1
TYPE: 1
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.21. Таблица INFORMATION_SCHEMA INNODB_SYS_FOREIGN_COLS

Таблица INNODB_SYS_FOREIGN_COLS обеспечивает информацию о статусе столбцов внешних ключей InnoDB, эквивалентную информации из таблицы SYS_FOREIGN_COLS словаря данных.

Таблица 22.21. Столбцы INNODB_SYS_FOREIGN_COLS

ИмяОписание
ID Внешний ключ индекса, связанный с этим полем ключа индекса, используя то же самое значение, как в INNODB_SYS_FOREIGN.ID.
FOR_COL_NAME Название связанного столбца в дочерней таблице.
REF_COL_NAME Название связанного столбца в родительской таблице.
POSПорядковая позиция этого поля ключа в пределах внешнего ключа индекса, начиная с 0.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS
                   WHERE ID = 'test/fk1'\G
*************************** 1. row ***************************
ID: test/fk1
FOR_COL_NAME: parent_id
REF_COL_NAME: id
 POS: 0
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.22. Таблица INFORMATION_SCHEMA INNODB_SYS_INDEXES

Таблица INNODB_SYS_INDEXES обеспечивает метаданные об индексах InnoDB, эквивалентную информации во внутренней таблице SYS_INDEXES InnoDB.

Таблица 22.22. Столбцы INNODB_SYS_INDEXES

ИмяОписание
INDEX_ID Идентификатор для каждого индекса, который уникален для всех баз данных.
NAME Название индекса. Большинство индексов, создаваемых неявно InnoDB, имеют последовательные имена, но имена индексов не обязательно уникальны. Например, PRIMARY для первичного ключа индекса, GEN_CLUST_INDEX для индекса представления первичного ключа, когда один не определен, ID_IND, FOR_IND и REF_IND для ограничений внешнего ключа.
TABLE_ID Идентификатор, представляющий таблицу, связанную с индексом, то же самое значение из INNODB_SYS_TABLES.TABLE_ID.
TYPE Числовой идентификатор, имеющий значение типа индекса. 0 = вторичный, 1 = Кластеризируемый, 2 = Уникальный, 3 = Основной, 32 = Полнотекстовый, 64 = Пространственный, 128 = вторичный, который включает произведенный виртуальный столбец.
N_FIELDS Число столбцов в ключе индекса. Для индексов GEN_CLUST_INDEX это значение 0, потому что индекс создается, используя искусственное значение, а не реальный столбец таблицы.
PAGE_NO Номер страницы корня индекса B-tree. Для полнотекстовых индексов поле PAGE_NO не используется и установлено в -1 (FIL_NULL), потому что полнотекстовый индекс выложен в нескольких B-деревьях (вспомогательные таблицы).
SPACE Идентификатор для табличного пространства, где индекс находится. 0 означает системное табличное пространство InnoDB. Любое другое число представляет таблицу, составленную в режиме файл на таблицу с отдельным файлом .ibd. Этот идентификатор остается тем же самым после TRUNCATE TABLE. Поскольку все индексы для таблицы находятся в том же самом табличном пространстве, как и таблица, это значение не обязательно уникально.
MERGE_THRESHOLD Пороговое значение слияния для индексных страниц. Если объем данных в индексной странице падает ниже значения MERGE_THRESHOLD, когда строка удалена или сокращена работой обновления, InnoDB делает попытку слить индексную страницу с соседней индексной страницей. Пороговое значение по умолчанию составляет 50%. Для получения дополнительной информации см. раздел 16.6.11 .

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES
                   WHERE TABLE_ID = 34\G
*************************** 1. row ***************************
   INDEX_ID: 39
 NAME: GEN_CLUST_INDEX
   TABLE_ID: 34
 TYPE: 1
   N_FIELDS: 0
PAGE_NO: 3
SPACE: 23
MERGE_THRESHOLD: 50
*************************** 2. row ***************************
   INDEX_ID: 40
 NAME: i1
   TABLE_ID: 34
 TYPE: 0
   N_FIELDS: 1
PAGE_NO: 4
SPACE: 23
MERGE_THRESHOLD: 50
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.23. Таблица INFORMATION_SCHEMA INNODB_SYS_TABLES

Таблица INNODB_SYS_TABLES обеспечивает метаданные о таблицах InnoDB, эквивалентные информации из таблицы SYS_TABLES словаря данных.

Таблица 22.23. Столбцы INNODB_SYS_TABLES

ИмяОписание
TABLE_ID Идентификатор для каждой таблицы InnoDB, который уникален для всех баз данных на сервере.
NAMEНазвание таблицы. Предваряется именем базы данных, например, test/t1. Системные имена таблиц находятся в верхнем регистре. Названия баз данных и пользовательских таблиц находятся в том же самом регистре, как они были первоначально определены, возможно, под влиянием параметра lower_case_table_names.
FLAG Это значение предоставляет разрядную информацию о формате таблицы и характеристиках хранения, включая формат строки, сжатый размер страницы (если применим) и действительно ли предложение DATA DIRECTORY использовано с CREATE TABLE или ALTER TABLE.
N_COLS Число столбцов в таблице. Число включает три скрытых столбца, которые создаются InnoDB (DB_ROW_ID, DB_TRX_ID и DB_ROLL_PTR). Число также включает произведенные виртуальные столбцы, если существуют.
SPACE Идентификатор для табличного пространства, где таблица находится. 0 означает системное табличное пространство InnoDB. Любое другое число представляет или табличное пространство файл на таблицу, или общее табличное пространство. Этот идентификатор остается тем же самым после TRUNCATE TABLE. Для табличных пространств файла на таблицу этот идентификатор уникален для таблиц во всех базы данных сервера.
ROW_FORMAT Формат строки таблицы (Compact, Redundant, Dynamic или Compressed).
ZIP_PAGE_SIZE Размер zip-страницы. Оотносится только к таблицам, которые используют сжатый формат строки.
SPACE_TYPE Тип табличного пространства, которому принадлежит таблица. Возможные значения включают System (для системного табличного пространства InnoDB), General (общие табличные пространства InnoDB, созданные с использованием CREATE TABLESPACE) и Single (табличные пространства файла на таблицу). Таблицы, назначенные на системное табличное пространство, используя предложение TABLESPACE=innodb_system в CREATE TABLE или ALTER TABLE имеют General = SPACE_TYPE.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE TABLE_ID = 214\G
*************************** 1. row ***************************
 TABLE_ID: 214
 NAME: test/t1
 FLAG: 129
   N_COLS: 4
SPACE: 233
   ROW_FORMAT: Compact
ZIP_PAGE_SIZE: 0
   SPACE_TYPE: General
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

Интерпретация значения столбца INNODB_SYS_TABLES.FLAG :

Столбец INNODB_SYS_TABLES.FLAG предоставляет информацию на разрядном уровне о формате таблицы и характеристиках хранения. Вы можете интерпретировать FLAG, добавляя вместе применимые десятичные числовые значения, которые обеспечены в следующей таблице.

Таблица 22.24. Значения позиции двоичного разряда для интерпретации данных о столбце INNODB_SYS_TABLES FLAG

Позиция двоичного разряда Описание Десятичное числовое значение
0 Этот бит установлен, если формат строки не REDUNDANT. Другими словами, это установлено, если формат строки COMPACT, DYNAMIC или COMPRESSED.
  • 0 - REDUNDANT

  • 1 - COMPACT, DYNAMIC или COMPRESSED.

1-4Эти четыре бита содержат небольшое число, которое представляет сжатый размер страницы таблицы. Поле INNODB_SYS_TABLES.ZIP_PAGE_SIZE также сообщает о сжатом размере страницы, если применимо.
  • 0 - без сжатия.

  • 2 - 1024 байта сжатый размер страницы
  • 4 - 2048 байта сжатый размер страницы
  • 6 - 4096 байта сжатый размер страницы
  • 8 - 8192 байта сжатый размер страницы
  • 10 - 16384 байта сжатый размер страницы

5Этот бит установлен, если формат строки DYNAMIC или COMPRESSED.
  • 0 - REDUNDANT или COMPACT.

  • 32 - DYNAMIC или COMPRESSED.

6Этот бит установлен, если опция DATA DIRECTORY применена с CREATE TABLE или ALTER TABLE. Этот бит установлен для табличных пространств файла на таблицу, которые расположены в каталогах кроме каталога данных по умолчанию (datadir).
  • 0 - Не отдаленное табличное пространство файла на таблицу.

  • 64 - Отдаленное табличное пространство файла на таблицу.
7Этот бит установлен, если таблица назначена на совместно используемое табличное пространство (общее или системное табличное пространство) использованием опции TABLESPACE=tablespace_name в CREATE TABLE или ALTER TABLE.
  • 0 - Таблица расположена в местоположении по умолчанию в зависимости от значения innodb_file_per_table.

  • 128 - Таблица явно назначена на совместно используемое табличное пространство.

В следующем, таблица t1 применяет ROW_FORMAT=DYNAMIC и имеет FLAG = 33. Основываясь на информации в предыдущей таблице, мы можем видеть, что позиция двоичного разряда 0 была бы установлена в 1, а позиция двоичного разряда 5 будет установлена в 32 для таблицы с форматом строк DYNAMIC. Эти значения составляют в целом FLAG = 33.

mysql> use test;
Database changed

mysql> CREATE TABLE t1 (c1 int) ROW_FORMAT=DYNAMIC;
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t1'\G
*************************** 1. row ***************************
 TABLE_ID: 89
 NAME: test/t1
 FLAG: 33
   N_COLS: 4
SPACE: 75
   ROW_FORMAT: Dynamic
ZIP_PAGE_SIZE: 0
1 row in set (0.00 sec)

22.30.24. Таблица INFORMATION_SCHEMA INNODB_SYS_TABLESPACES

Таблица INNODB_SYS_TABLESPACES обеспечивает метаданные о табличных пространствах файла на таблицу и общем, эквивалентные информации в таблице SYS_TABLESPACES InnoDB.

Таблица INFORMATION_SCHEMA.FILES обеспечивает метаданные обо всех типах табличного пространства InnoDB, включая табличные пространства файла на таблицу, общие табличные пространства, системное табличное пространство, временные табличные пространства и табличные пространства отмены (если есть).

Таблица 22.25. Столбцы INNODB_SYS_TABLESPACES

ИмяОписание
SPACE ID табличного пространства.
NAMEИмя базы данных и имя таблицы (например, world_innodb\city)
FLAG Это значение предоставляет разрядную информацию о формате табличного пространства и характеристиках хранения.
ROW_FORMAT Формат строки табличного пространства (Compact, Redundant, Dynamic или Compressed). Данные в этом поле интерпретируются в зависимости от информации флагов табличного пространства, которая находится в файле .ibd.
PAGE_SIZE Размер страницы табличного пространства. Данные в этом поле интерпретируются в зависимости от информации флагов табличного пространства, которая находится в файле .ibd.
ZIP_PAGE_SIZE Размер zip страницы. Данные в этом поле интерпретируются в зависимости от информации флагов табличного пространства, которая находится в файле .ibd.
SPACE_TYPE Тип табличного пространства. Возможные значения включают General (общие табличные пространства InnoDB, созданные CREATE TABLESPACE ) и Single (табличные пространства файла на таблицу).
FS_BLOCK_SIZE Размер блока файловой системы, который является размером модуля. Этот столбец был добавлен с введением InnoDB прозрачного сжатия страницы .
FILE_SIZE Очевидный размер файла, который представляет максимальный размер несжатого файла. Этот столбец был добавлен с введением InnoDB прозрачного сжатия страницы .
ALLOCATED_SIZE Фактический размер файла, который является количеством места, выделенного на диске. Этот столбец был добавлен с введением InnoDB прозрачного сжатия страницы .

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
                   WHERE SPACE = 26\G
*************************** 1. row ***************************
 SPACE: 26
NAME: test/t1
FLAG: 0
ROW_FORMAT: Compact or Redundant
 PAGE_SIZE: 16384
 ZIP_PAGE_SIZE: 0
SPACE_TYPE: Single
 FS_BLOCK_SIZE: 4096
 FILE_SIZE: 98304
ALLOCATED_SIZE: 65536
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.
  • Нет никакого способа определить из этого целого числа флаги, если формат строки табличного пространства Redundant или Compact. В результате возможные значения для поля ROW_FORMAT Compressed или Dynamic.

Интерпретация значения столбца INNODB_SYS_TABLESPACES.FLAG :

Столбец INNODB_SYS_TABLESPACES.FLAG предоставляет информацию на разрядном уровне о формате табличного пространства и характеристиках хранения.

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

Таблица 22.26. Значения позиции двоичного разряда для интерпретации данных о столбце INNODB_SYS_TABLESPACES FLAG

Позиция двоичного разряда Описание Десятичное числовое значение
0 Этот бит установлен, если формат строки таблицы в табличном пространстве DYNAMIC или COMPRESSED. Если бит не установлен, формат строки таблицы в табличном пространстве может быть также REDUNDANT или COMPACT. Если это табличное пространство файла на таблицу, Вы можете запросить INNODB_SYS_TABLES, чтобы определить формат строки row format is REDUNDANT или COMPACT.
  • 0 - REDUNDANT или COMPACT.

  • 1 - DYNAMIC или COMPRESSED.

1-4Эти четыре бита содержат небольшое число, которое представляет сжатый размер страницы (KEY_BLOCK_SIZE или физический размер блока) табличного пространства.
  • 0 - без сжатия.

  • 2 - 1024 байта сжатый размер страницы
  • 4 - 2048 байта сжатый размер страницы
  • 6 - 4096 байта сжатый размер страницы
  • 8 - 8192 байта сжатый размер страницы
  • 10 - 16384 байта сжатый размер страницы
  • 12 - 32768 байта сжатый размер страницы
  • 14 - 65536 байта сжатый размер страницы
5 Этот бит установлен для табличных пространств файла на таблицу, если формат строки таблицы DYNAMIC или COMPRESSED. У общих табличных пространств, которые не содержат сжатые таблицы, будут первые 6 бит установлены в 0, включая этот бит, указывая, что табличное пространство содержит таблицы REDUNDANT или COMPACT . Но фактически, общие табличные пространства могут содержать любую комбинацию таблиц REDUNDANT, COMPACT и DYNAMIC. Для получения дополнительной информации об общих табличных пространствах см. CREATE TABLESPACE.
  • 0 - REDUNDANT или COMPACT.

  • 32 - DYNAMIC или COMPRESSED.
6-9Эти четыре бита содержат небольшое число, которое представляет несжатый размер страницы (логический размер страницы) табличного пространства. Установка ноль, если логический размер страницы оригинальный размер страницы по умолчанию 16K.
  • 192 - 4096 байт логический/несжатый размер страницы.

  • 256 - 8192 байт логический/несжатый размер страницы.
  • 0 - 16384 байт логический/несжатый размер страницы.
  • 384 - 32768 байт логический/несжатый размер страницы.
  • 448 - 65536 байт логический/несжатый размер страницы.
10Этот бит установлен, если опция DATA DIRECTORY применена с CREATE TABLE или ALTER TABLE. Этот бит установлен для табличных пространств файла на таблицу, которые расположены в каталогах, кроме каталога данных по умолчанию (datadir).
  • 0 - Не отдаленное табличное пространство файла на таблицу.

  • 1024 - Отдаленное табличное пространство файла на таблицу.

11Этот бит установлен, если табличное пространство совместно используемое общее табличное пространство, созданное CREATE TABLESPACE .
  • 0 - Таблица расположена в местоположении по умолчанию в зависимости от значения innodb_file_per_table.

  • 2048 - Таблица была явно назначена на совместно используемое табличное пространство.

12Этот бит установлен, если табличное пространство выделено временным таблицам. Только предопределенное табличное пространство ibtmp1 использует этот флаг.
  • 0 - Табличное пространство не содержит временные таблицы, таким образом, оно не обновлено после запуска.

  • 4096 - Табличное пространство содержит временные таблицы и обновлено при каждом запуске.

В следующем примере таблице t1 создается с опцией innodb_file_per_table=ON, которая составляет таблицу t1 в собственном табличном пространстве. Запрашивая INNODB_SYS_TABLESPACES, мы видим, что у табличного пространства есть значение FLAG 33. Чтобы определить, как это значение достигнуто, рассмотрите битовые значения, описанные в предыдущей таблице. У бита 0 есть значение 1 потому, что таблица t1 использует формат строки DYNAMIC. У бита 5 есть значение 32 потому, что табличное пространство это табличное пространство файла на таблицу, которое использует формат строки DYNAMIC. Биты 6-9 = 0, так как innodb_page_size установлен в значение по умолчанию 16K. Другие битовые значения не применимы и поэтому установлены в 0. Значения для битов 0 и 5 составляют в целом значение FLAG 33.

mysql> use test;
Database changed

mysql> SHOW VARIABLES LIKE 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+

mysql> SHOW VARIABLES LIKE 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+

mysql> CREATE TABLE t1 (c1 int) ROW_FORMAT=DYNAMIC;
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
                   WHERE NAME LIKE 'test/t1'\G
*************************** 1. row ***************************
SPACE: 75
 NAME: test/t1
 FLAG: 33
   ROW_FORMAT: Dynamic
PAGE_SIZE: 16384
ZIP_PAGE_SIZE: 0
1 row in set (0.00 sec)

22.30.25. Представление INFORMATION_SCHEMA INNODB_SYS_TABLESTATS

Представление INNODB_SYS_TABLESTATS обеспечивает представление низкоуровневой информации о статусе таблиц InnoDB. Эти данные используются оптимизатором MySQL, чтобы вычислить, которые индексы использовать, запрашивая таблицы InnoDB. Эта информация получена из структур данных в памяти вместо того, чтобы соответствовать данным, хранящимся на диске. Нет никакой внутренней соответствующей системной таблицы InnoDB.

Таблицы InnoDB есть в этом представлении, если они были открыты начиная с последнего перезапуска сервера, а не из табличного кэша. Таблицы, для которых доступны постоянные статусы, всегда есть в этом представлении.

Табличные статистические данные обновлены только для операций DELETE или UPDATE, которые изменяют индексированные столбцы. Статистические данные не обновлены операциями, которые изменяют только неиндексированные столбцы.

Таблица 22.27. Столбцы INNODB_SYS_TABLESTATS

ИмяОписание
TABLE_ID Идентификатор, представляющий таблицу, для которой статистические данные доступны, используя то же самое значение, как в INNODB_SYS_TABLES.TABLE_ID.
NAME Название таблицы, используя то же самое значение, как в INNODB_SYS_TABLES.NAME.
STATS_INITIALIZED Значение Initialized, если статистические данные уже собраны, Uninitialized, если нет.
NUM_ROWS Текущее число строк в таблице. Обновлено после каждой работы DML. Может быть неточным, если нейтральные транзакции вставляют в или удаляют из таблицы.
CLUST_INDEX_SIZE Число страниц на диске, которые хранят кластеризируемый индекс, который содержит табличные данные InnoDB в порядке первичного ключа. Это значение могло бы быть нулем, если никакие статистические данные еще не собраны для таблицы.
OTHER_INDEX_SIZE Число страниц на диске, которые хранят все вторичные индексы для таблицы. Это значение могло бы быть нулем, если никакие статистические данные еще не собраны для таблицы.
MODIFIED_COUNTER Число строк, измененных операциями DML, такими как INSERT, UPDATE, DELETE и другими каскадными операциями от внешних ключей. Этот столбец сброшен каждый раз, когда статистика повторно вычислена.
AUTOINC Следующее число, которое будет выпущено для любой операции с auto-increment.
REF_COUNT Когда этот счетчик достигает ноля, табличные метаданные могут быть удалены из табличного кэша.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
                   where TABLE_ID = 71\G
*************************** 1. row ***************************
 TABLE_ID: 71
   NAME: test/t1
STATS_INITIALIZED: Initialized
 NUM_ROWS: 1
 CLUST_INDEX_SIZE: 1
 OTHER_INDEX_SIZE: 0
 MODIFIED_COUNTER: 1
AUTOINC: 0
REF_COUNT: 1
  • Эта таблица прежде всего полезна для исполнительного контроля на опытном уровне или развивая связанные с работой расширения для MySQL.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.26. Таблица INFORMATION_SCHEMA INNODB_SYS_VIRTUAL

Таблица INNODB_SYS_VIRTUAL обеспечивает метаданные о произведенных виртуальных столбцах и столбцы эквивалентны информации в таблице SYS_VIRTUAL словаря данных InnoDB.

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

Таблица 22.28. Столбцы INNODB_SYS_VIRTUAL

ИмяОписание
TABLE_ID Идентификатор, представляющий таблицу, связанный с виртуальным столбцом, то же самое значение, как в INNODB_SYS_TABLES.TABLE_ID.
POS Значение позиции произведенного виртуального столбца. Значение является большим, потому что оно кодирует порядковый номер столбца и порядковую позицию. Формула, используемая, чтобы вычислить значение, использует битовую операцию. Формула ((n-ый виртуальный произведенный столбец для экземпляра instance + 1) << 16) + порядковая позиция произведенного виртуального столбца. Например, если первый виртуальный произведенный столбец в InnoDB третий столбец таблицы, формула (0 + 1) << 16) + 2. Первый произведенный виртуальный столбец в InnoDB всегда имеет номер 0. Так что третий столбец в таблице имеет порядковую позицию произведенного виртуального столбца 2. Порядковые позиции посчитаны от 0.
BASE_POS Порядковая позиция столбцов, на которых базируется произведенный виртуальный столбец.

Пример:

mysql> CREATE TABLE `t1` (`a` int(11) DEFAULT NULL,
                             `b` int(11) DEFAULT NULL,
                             `c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
                             `h` varchar(10) DEFAULT NULL) ENGINE=InnoDB
                             DEFAULT CHARSET=latin1;

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_VIRTUAL
                   WHERE TABLE_ID IN (SELECT TABLE_ID
                   FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME
                   LIKE "test/t1");
+----------+-------+----------+
| TABLE_ID | POS   | BASE_POS |
+----------+-------+----------+
|   45     | 65538 | 0        |
|   45     | 65538 | 1        |
+----------+-------+----------+
  • Если постоянная величина назначена на произведенный виртуальный столбец, как в следующем примере, вход для столбца не появляется в таблице INNODB_SYS_VIRTUAL. Для появления входа, у произведенного виртуального столбца должен быть основной столбец.

    mysql> CREATE TABLE `t1` (`a` int(11) DEFAULT NULL,
                                 `b` int(11) DEFAULT NULL,
                                 `c` int(11) GENERATED ALWAYS AS (5) VIRTUAL)
                                 ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    Однако, метаданные для такого столбца появляются в таблице INNODB_SYS_COLUMNS .
  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.27. Таблица INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO

Таблица INNODB_TEMP_TABLE_INFO содержит метаданные об активных временных таблицах InnoDB. За исключением оптимизированных внутренних временных таблиц, используемых InnoDB, INNODB_TEMP_TABLE_INFO выдает отчеты обо всех пользовательских и создаваемых из системы временных таблицах, которые являются активными в пределах данного экземпляра InnoDB. Таблицы поддержаны в памяти и не сохранены на диск.

Таблица 22.29. Столбцы INNODB_TEMP_TABLE_INFO

ИмяОписание
TABLE_ID Табличное ID активной временной таблицы.
NAME Название активной временной таблицы.
N_COLS Число столбцов во временной таблице. Число всегда включает три скрытых столбца, создаваемые InnoDB (DB_ROW_ID, DB_TRX_ID, and DB_ROLL_PTR).
SPACE Идентификатор табличного пространства (численное значение) для табличного пространства, в котором находится временная таблица. Все временные таблицы InnoDB находятся в совместно используемом временном табличном пространстве, как определено innodb_temp_data_file_path. По умолчанию совместно используемое временное табличное пространство называется ibtmp1 и расположено в каталоге data. Сжатые временные таблицы находятся в отдельных табличных пространствах на таблицу, расположенных во временном каталоге, как определено tmpdir. SPACE ID всегда ненулевое значение и динамически произведено при перезапуске сервера.

Пример:

mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
  TABLE_ID: 32
  NAME: #sqlaf56_2_0
N_COLS: 4
 SPACE: 19
1 row in set (0.00 sec)
  • Эта таблица прежде всего полезна для опытного контроля уровня.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.30.28. Таблица INFORMATION_SCHEMA INNODB_TRX

Таблица INNODB_TRX содержит информацию о каждой транзакции (исключая транзакции только для чтения) в настоящее время выполняющиеся в InnoDB, включая то, ждет ли транзакция блокировки и запрос SQL, который транзакция выполняет, если есть.

Таблица 22.30. Столбцы INNODB_TRX

ИмяОписание
TRX_ID Уникальный операционный идентификационный ID, внутренний для InnoDB. Эти ID не создаются для транзакций, которые только для чтения и без блокировки. См. раздел 9.5.3.
TRX_WEIGHTВес транзакции, исходя из (но не обязательно точное количество) числа строк измененных и заблокированных транзакцией. Чтобы решить тупик, InnoDB выбирает транзакцию с самым маленьким весом как victim, чтобы откатить назад. Транзакции, которые изменили нетранзакционные таблицы, считаются более тяжелыми чем другие, независимо от числа измененных и заблокированных строк.
TRX_STATE Операционный режим выполнения. Разрешенные значения RUNNING, LOCK WAIT, ROLLING BACK и COMMITTING.
TRX_STARTEDВремя начала транзакции.
TRX_REQUESTED_LOCK_ID ID блокировки, которую транзакция в настоящее время ждет, если TRX_STATE LOCK WAIT, иначе NULL. Чтобы получить детали о блокировке, присоедините к этому столбцу столбец ENGINE_LOCK_ID таблицы Performance Schema data_locks.
TRX_WAIT_STARTED Время, когда транзакция начала ждать блокировку, если TRX_STATE LOCK WAIT, иначе NULL.
TRX_MYSQL_THREAD_IDID потока MySQL. Чтобы получить детали о потоке, присоедините к этому столбцу столбец ID таблицы PROCESSLIST и см. раздел 16.14.2.3.
TRX_QUERY Запрос SQL, который выполняется транзакцией.
TRX_OPERATION_STATE Текущая работа транзакции, если есть, иначе NULL.
TRX_TABLES_IN_USE Число таблиц InnoDB, используемых, обрабатывая текущий запрос SQL этой транзакции.
TRX_TABLES_LOCKED Число таблиц InnoDB, имеющих заблокированную текущим запросом SQL строку. Поскольку это блокировки строки, а не табличные, таблицы обычно могут читаться из записываться транзакциями, несмотря на некоторые заблокированные строки.
TRX_LOCK_STRUCTS Число блокировок, сохраненных транзакцией.
TRX_LOCK_MEMORY_BYTES Полный размер, занятый структурами блокировки этой транзакции в памяти.
TRX_ROWS_LOCKEDПриблизительное количество строк, заблокированных этой транзакцией. Значение могло бы включать помеченные для удаления строки, которые физически присутствуют, но невидимы для транзакций.
TRX_ROWS_MODIFIED Число измененных и вставленных строк в этой транзакции.
TRX_CONCURRENCY_TICKETS Значение, указывающее, сколько текущая транзакция может сделать прежде, чем быть подкачанной, как определено переменной innodb_concurrency_tickets.
TRX_ISOLATION_LEVEL Уровень изоляции текущей транзакции.
TRX_UNIQUE_CHECKS Включены ли проверки уникальности для текущей транзакции. Например, они могли бы быть выключены во время оптовой загрузки данных.
TRX_FOREIGN_KEY_CHECKS Включены ли проверки внешнего ключа для текущей транзакции. Например, они могли бы быть выключены во время оптовой загрузки данных.
TRX_LAST_FOREIGN_KEY_ERROR Подробное сообщение об ошибке для последней ошибки внешнего ключа, если есть, иначе NULL.
TRX_ADAPTIVE_HASH_LATCHED Заблокирован ли адаптивный хеш индекса текущей транзакцией. Единственная транзакция не блокирует весь адаптивный хеш. Разделение управляется innodb_adaptive_hash_index_parts, по умолчанию 8.
TRX_ADAPTIVE_HASH_TIMEOUT Оставить ли немедленно поиск для адаптивного хеша индекса или резервировать через требования от MySQL. Когда нет никакого адаптивного хеша, это значение остается нолем, и запросы резервируют, пока они не заканчиваются. То, когда адаптивный хеш индексирует систему поиска, разделено (управляется innodb_adaptive_hash_index_parts), по умолчанию 0.
TRX_IS_READ_ONLY Значение 1 указывает, что транзакция только для чтения.
TRX_AUTOCOMMIT_NON_LOCKING Значение 1 указывает, что транзакция является запросом SELECT, который не использует предложение FOR UPDATE или LOCK IN SHARED MODE и выполняется с включенным utocommit так, чтобы транзакция содержала только этот запрос. Когда этот столбец и TRX_IS_READ_ONLY вместе равны 1, InnoDB оптимизирует транзакцию, чтобы уменьшить накладные расходы, связанное с транзакциями, которые меняют табличные данные.

Пример:

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1. row ***************************
  trx_id: 1510
   trx_state: RUNNING
 trx_started: 2014-11-19 13:24:40
 trx_requested_lock_id: NULL
trx_wait_started: NULL
  trx_weight: 586739
   trx_mysql_thread_id: 2
   trx_query: DELETE FROM employees.salaries WHERE salary > 65000
   trx_operation_state: updating or deleting
 trx_tables_in_use: 1
 trx_tables_locked: 1
trx_lock_structs: 3003
 trx_lock_memory_bytes: 450768
 trx_rows_locked: 1407513
 trx_rows_modified: 583736
   trx_concurrency_tickets: 0
   trx_isolation_level: REPEATABLE READ
 trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 10000
trx_is_read_only: 0
trx_autocommit_non_locking: 0
  • Используйте эту таблицу, чтобы диагностировать исполнительные проблемы, которые происходят во времена тяжелой параллельной загрузки. Ее содержание обновлено как описано в разделе 16.14.2.3.

  • Используйте DESCRIBE или SHOW COLUMNS, чтобы просмотреть дополнительную информацию о столбцах этих таблиц, включая типы данных и значения по умолчанию.
  • Вы должны иметь привилегию PROCESS, чтобы запросить эту таблицу.

22.31. Расширения запроса SHOW

Некоторые расширения к SHOW сопровождают выполнение INFORMATION_SCHEMA:

  • SHOW может использоваться, чтобы получить информацию о структуре INFORMATION_SCHEMA.

  • Несколько запросов SHOW принимают предложение WHERE, которое обеспечивает больше гибкости в определении, какие строки вывести на экран.

INFORMATION_SCHEMA информационная база данных, таким образом, ее имя включено в вывод SHOW DATABASES . Точно так же SHOW TABLES может использоваться с INFORMATION_SCHEMA, чтобы получить список ее таблиц:

mysql> SHOW TABLES FROM INFORMATION_SCHEMA;
+---------------------------------------+
| Tables_in_INFORMATION_SCHEMA          |
+---------------------------------------+
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| GLOBAL_STATUS                         |
| GLOBAL_VARIABLES                      |
| KEY_COLUMN_USAGE                      |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| SESSION_STATUS                        |
| SESSION_VARIABLES                     |
| STATISTICS                            |
| TABLES                                |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_PRIVILEGES                       |
| VIEWS                                 |
+---------------------------------------+
27 rows in set (0.00 sec)
SHOW COLUMNS и DESCRIBE могут вывести на экран информацию о столбцах в отдельных таблицах INFORMATION_SCHEMA.

Запросы SHOW, которые принимают предложение LIKE, чтобы ограничить выводимые на экран строки, также разрешают предложение WHERE, которое определяет более общие условия, которым выбранные строки должны удовлетворять:

SHOW CHARACTER SET
SHOW COLLATION
SHOW COLUMNS
SHOW DATABASES
SHOW FUNCTION STATUS
SHOW INDEX
SHOW OPEN TABLES
SHOW PROCEDURE STATUS
SHOW STATUS
SHOW TABLE STATUS
SHOW TABLES
SHOW TRIGGERS
SHOW VARIABLES
Предложение WHERE, если есть, оценено по именам столбцов, выведенных на экран SHOW. Например, SHOW CHARACTER SET производит эти выходные столбцы:
mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |  2     |
| dec8     | DEC West European           | dec8_swedish_ci     |  1     |
| cp850    | DOS West European           | cp850_general_ci    |  1     |
| hp8      | HP West European            | hp8_english_ci      |  1     |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |  1     |
| latin1   | cp1252 West European        | latin1_swedish_ci   |  1     |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |  1     |
...
Чтобы использовать WHERE с SHOW CHARACTER SET, Вы обратились бы к этим именам столбцов. Как пример, следующий запрос выводит на экран информацию о наборах символов, для которых сопоставление по умолчанию содержит строку 'japanese' :
mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
+---------+---------------------------+---------------------+--------+
| Charset | Description               | Default collation   | Maxlen |
+---------+---------------------------+---------------------+--------+
| ujis    | EUC-JP Japanese           | ujis_japanese_ci    |  3     |
| sjis    | Shift-JIS Japanese        | sjis_japanese_ci    |  2     |
| cp932   | SJIS for Windows Japanese | cp932_japanese_ci   |  2     |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci |  3     |
+---------+---------------------------+---------------------+--------+
Этот запрос выводит на экран многобайтовые наборы символов:
mysql> SHOW CHARACTER SET WHERE Maxlen > 1;
+---------+---------------------------+---------------------+--------+
| Charset | Description               | Default collation   | Maxlen |
+---------+---------------------------+---------------------+--------+
| big5    | Big5 Traditional Chinese  | big5_chinese_ci     |  2     |
| ujis    | EUC-JP Japanese           | ujis_japanese_ci    |  3     |
| sjis    | Shift-JIS Japanese        | sjis_japanese_ci    |  2     |
| euckr   | EUC-KR Korean             | euckr_korean_ci     |  2     |
| gb2312  | GB2312 Simplified Chinese | gb2312_chinese_ci   |  2     |
| gbk     | GBK Simplified Chinese    | gbk_chinese_ci      |  2     |
| utf8    | UTF-8 Unicode             | utf8_general_ci     |  3     |
| ucs2    | UCS-2 Unicode             | ucs2_general_ci     |  2     |
| cp932   | SJIS for Windows Japanese | cp932_japanese_ci   |  2     |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci |  3     |
+---------+---------------------------+---------------------+--------+

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru