INFORMATION_SCHEMA
обеспечивает доступ к метаданным
о базе данных, информации о сервере MySQL, такой как название базы
данных или таблицы, типе данных столбца или привилегиях доступа. Другие
термины, которые иногда используются для этой информации, являются
словарем данных и системным каталогом.
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 utf8N
минимум 64. MySQL использует сопоставление по
умолчанию для этого набора символов (utf8_general_ci
)
для всех поисков, отображений, сравнений и других строковых операций
на таких столбцах.
Поскольку некоторые объекты MySQL представлены как файлы, поиски в
строковых столбцах INFORMATION_SCHEMA
могут быть затронуты
чувствительностью к регистру файловой системы. Для получения дополнительной
информации см.
раздел 11.1.8.7.
Запрос SELECT ... FROM INFORMATION_SCHEMA
предназначен как
более последовательный способ обеспечить доступ к информации, предоставленной
различными запросами SHOW
(SHOW DATABASES
,
SHOW TABLES
и т. д.).
Использование SELECT
имеет эти
преимущества, по сравнению с SHOW
:
Это соответствует правилам Кодда, потому что весь доступ сделан на таблицах.
SELECT
и должны только изучить некоторые имена таблиц и столбцов.INFORMATION_SCHEMA
в любой формат в соответствии с
потребностями приложения: например, структура данных или текстовое
представление для анализа.Поскольку 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
Name
указывает на название столбца в INFORMATION_SCHEMA
.
Это соответствует стандартному имени SQL, если поле
Remarks не говорит MySQL extension.
SHOW
Name
указывает на эквивалентное имя поля в самом близком запросе
SHOW
, если такой есть.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
.Таблица CHARACTER_SETS
предоставляет информацию о доступных наборах символов.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
CHARACTER_SET_NAME |
Charset | |
DEFAULT_COLLATE_NAME |
Default collation | |
Описание |
Описание | MySQL extension |
MAXLEN |
Maxlen | MySQL extension |
Следующие запросы эквивалентны:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS [WHERE CHARACTER_SET_NAME LIKE 'wild
'] SHOW CHARACTER SET [LIKE 'wild
']
Таблица COLLATIONS
предоставляет информацию о сопоставлениях для каждого набора символов.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
COLLATION_NAME |
Collation | |
CHARACTER_SET_NAME |
Charset | MySQL extension |
ID | Id |
MySQL extension |
IS_DEFAULT | Default |
MySQL extension |
IS_COMPILED | Compiled
| MySQL extension |
SORTLEN | Sortlen |
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
']
Таблица
COLLATION_CHARACTER_SET_APPLICABILITY
показывает, какой
набор символов для какого сопоставления применим. Столбцы эквивалентны первым
двум полям, которые Вы получите в выводе
SHOW COLLATION
.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
COLLATION_NAME |
Collation | |
CHARACTER_SET_NAME |
Charset |
Таблица COLUMNS
предоставляет информацию о столбцах в таблицах.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
TABLE_CATALOG |
def | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
COLUMN_NAME | Field |
|
ORDINAL_POSITION | см. примечания | |
COLUMN_DEFAULT | Default
| |
IS_NULLABLE | Null |
|
DATA_TYPE | Type |
|
CHARACTER_MAXIMUM_LENGTH | Type
| |
CHARACTER_OCTET_LENGTH | ||
NUMERIC_PRECISION | Type
| |
NUMERIC_SCALE | Type |
|
DATETIME_PRECISION | Type
| |
CHARACTER_SET_NAME | ||
COLLATION_NAME | Collation
| |
COLUMN_TYPE | Type |
MySQL extension |
COLUMN_KEY | Key |
MySQL extension |
EXTRA | Extra |
MySQL extension |
PRIVILEGES | Privileges
| MySQL extension |
COLUMN_COMMENT | Comment
| 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 FROMtbl_name
[FROMdb_name
] [LIKE 'wild
']
Таблица
COLUMN_PRIVILEGES
предоставляет информацию о привилегиях столбца.
Эта информация прибывает из таблицы mysql.columns_priv
.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
GRANTEE | ' 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 ...
Таблица ENGINES
предоставляет информацию о механизмах хранения.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
ENGINE | Engine
| MySQL extension |
SUPPORT | Support |
MySQL extension |
COMMENT | Comment |
MySQL extension |
TRANSACTIONS | Transactions
| MySQL extension |
XA | XA |
MySQL extension |
SAVEPOINTS | Savepoints
| MySQL extension |
Таблица ENGINES
нестандартная. Ее содержание соответствует столбцам
SHOW ENGINES
. Для описания его столбцов см.
раздел 14.7.5.16.
Таблица EVENTS
предоставляет информацию о запланированных событиях, которые обсуждаются в
разделе 21.4. Значения соответствуют
SHOW Name
именам столбцов
SHOW EVENTS
.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
EVENT_CATALOG | def , MySQL extension | |
EVENT_SCHEMA | Db |
MySQL extension |
EVENT_NAME | Name |
MySQL extension |
DEFINER | Definer |
MySQL extension |
TIME_ZONE | Time zone
| MySQL extension |
EVENT_BODY | MySQL extension | |
EVENT_DEFINITION | MySQL extension | |
EVENT_TYPE | Type |
MySQL extension |
EXECUTE_AT | Execute at
| MySQL extension |
INTERVAL_VALUE | Interval value
| MySQL extension |
INTERVAL_FIELD | Interval field
| MySQL extension |
SQL_MODE | MySQL extension | |
STARTS | Starts | MySQL extension |
ENDS | Ends | MySQL extension |
STATUS | Status | MySQL extension |
ON_COMPLETION | MySQL extension | |
CREATED | MySQL extension | |
LAST_ALTERED | MySQL extension | |
LAST_EXECUTED | MySQL extension | |
EVENT_COMMENT | MySQL extension | |
ORIGINATOR | Originator
| MySQL extension |
CHARACTER_SET_CLIENT |
character_set_client | MySQL extension |
COLLATION_CONNECTION |
collation_connection
| MySQL extension |
DATABASE_COLLATION | Database
Collation | MySQL 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.
Таблица 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
Значение переменной
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_NAME | Variable_name | |
VARIABLE_VALUE | Value |
Столбец VARIABLE_VALUE
для каждой из этих таблиц
определен как VARCHAR(1024)
.
Значение переменной
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_NAME | Variable_name | |
VARIABLE_VALUE | Value |
Столбец VARIABLE_VALUE
для каждой из этих таблиц
определен как VARCHAR(1024)
. Для переменных с очень длинными
значениями, которые не полностью выведены на экран, надо использовать
SELECT
, например:
SELECT @@GLOBAL.innodb_data_file_path;
Таблица 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
.
Таблица OPTIMIZER_TRACE
предоставляет информацию, произведенную трассировкой
оптимизатора. Чтобы включить трассировку, используйте переменную
optimizer_trace
.
Подробности есть в руководстве
MySQL Internals: Tracing the Optimizer.
Таблица PARAMETERS
предоставляет информацию о хранимой процедуре и функциональных параметрах и о
возвращаемых значениях для сохраненных функций. Информация о параметре
подобна содержанию столбца param_list
в
таблице mysql.proc
.
INFORMATION_SCHEMA Name |
mysql.proc Name | Remarks |
---|---|---|
SPECIFIC_CATALOG | def | |
SPECIFIC_SCHEMA | db |
routine database |
SPECIFIC_NAME | name |
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_TYPE | type |
same as for ROUTINES
table |
Для последовательных параметров хранимой процедуры или функции
значения ORDINAL_POSITION
1, 2, 3 и т. д. Для сохраненной
функции есть также строка, которая описывает тип данных для предложения
RETURNS
. Возвращаемое значение не истинный параметр, таким
образом, у строки, которая описывает его, есть эти уникальные характеристики:
ORDINAL_POSITION
0.
PARAMETER_NAME
и
PARAMETER_MODE
NULL
потому, что у возвращаемого
значения нет никакого имени, и режим не применяется.Таблица 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
в этом случае пустой.Таблица PLUGINS
предоставляет информацию о плагинах сервера.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
PLUGIN_NAME | Name
| MySQL extension |
PLUGIN_VERSION | MySQL extension | |
PLUGIN_STATUS | Status
| MySQL extension |
PLUGIN_TYPE | Type |
MySQL extension |
PLUGIN_TYPE_VERSION | MySQL extension | |
PLUGIN_LIBRARY | Library
| MySQL extension |
PLUGIN_LIBRARY_VERSION | MySQL extension | |
PLUGIN_AUTHOR | MySQL extension | |
PLUGIN_DESCRIPTION | MySQL extension | |
PLUGIN_LICENSE | License
| 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;
Таблица PROCESSLIST
предоставляет информацию, с которой работают потоки.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
ID | Id |
MySQL extension |
USER | User | MySQL extension |
HOST | Host | MySQL extension |
DB | db | MySQL extension |
COMMAND | Command |
MySQL extension |
TIME | Time | MySQL extension |
STATE | State | MySQL extension |
INFO | Info | MySQL extension |
Для детального описания столбцов таблицы см. раздел 14.7.5.29.
Таблица PROCESSLIST
нестандартная.
SHOW
, таблица
PROCESSLIST
покажет только информацию о Ваших собственных потоках, если Вы не будете
иметь привилегию PROCESS
, тогда Вы будете видеть информацию также о других потоках.
Как анонимный пользователь, Вы не можете видеть строки вообще.
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
Таблица PROFILING
предоставляет профилирующую информацию. Ее содержание соответствует
информации, произведенной SHOW
PROFILES
и SHOW PROFILE
(см. раздел 14.7.5.31).
Таблица не пуста, если переменная сеанса
profiling
установлена в 1.
Эта таблица устарела и будет удалена в будущем выпуске MySQL. Используйте Performance Schema вместо этого.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
QUERY_ID | Query_ID
| |
SEQ |
| |
STATE | Status |
|
DURATION | Duration |
|
CPU_USER | CPU_user |
|
CPU_SYSTEM | CPU_system
| |
CONTEXT_VOLUNTARY |
Context_voluntary | |
CONTEXT_INVOLUNTARY |
Context_involuntary | |
BLOCK_OPS_IN | Block_ops_in
| |
BLOCK_OPS_OUT | Block_ops_out
| |
MESSAGES_SENT | Messages_sent
| |
MESSAGES_RECEIVED |
Messages_received | |
PAGE_FAULTS_MAJOR |
Page_faults_major | |
PAGE_FAULTS_MINOR |
Page_faults_minor | |
SWAPS | Swaps |
|
SOURCE_FUNCTION |
Source_function | |
SOURCE_FILE | Source_file
| |
SOURCE_LINE | Source_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
предоставяют информацию, указывающую, где в исходном
коде профилируемое сосятоние выполняется.Таблица
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
.Таблица ROUTINES
предоставляет информацию о сохраненных подпрограммах (процедуры и функции).
Таблица ROUTINES
не включает определяемые пользователем функции (UDF).
Столбец mysql.proc
Name указывает
столбец таблицы mysql.proc
, который соответствует столбцу
таблицы INFORMATION_SCHEMA.ROUTINES
, если такой есть.
INFORMATION_SCHEMA Name |
mysql.proc Name | Remarks |
---|---|---|
SPECIFIC_NAME |
specific_name | |
ROUTINE_CATALOG | def
| |
ROUTINE_SCHEMA | db |
|
ROUTINE_NAME | name |
|
ROUTINE_TYPE | type |
{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_DEFINITION | body_utf8
| |
EXTERNAL_NAME | NULL
| |
EXTERNAL_LANGUAGE | language
| NULL |
PARAMETER_STYLE | SQL
| |
IS_DETERMINISTIC |
is_deterministic | |
SQL_DATA_ACCESS |
sql_data_access | |
SQL_PATH | NULL
| |
SECURITY_TYPE | security_type
| |
CREATED | created |
|
LAST_ALTERED | modified
| |
SQL_MODE | sql_mode |
MySQL extension |
ROUTINE_COMMENT | comment
| MySQL extension |
DEFINER | definer |
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.Это база данных, таким образом, таблица
SCHEMATA
предоставляет информацию о базах данных.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
CATALOG_NAME |
def | |
SCHEMA_NAME | Database | |
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
']
Таблица
SCHEMA_PRIVILEGES
предоставляет информацию о схеме (базе данных)
привилегий. Эта информация прибывает из таблицы mysql.db
.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
GRANTEE | ' value, MySQL extension | |
TABLE_CATALOG | def
, MySQL extension | |
TABLE_SCHEMA | MySQL extension | |
PRIVILEGE_TYPE | MySQL extension | |
IS_GRANTABLE | MySQL extension |
Это несатндартная таблица. Это берет свои значения из
таблицы mysql.db
.
Таблица 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_NAME | Table |
|
NON_UNIQUE | Non_unique
| |
INDEX_SCHEMA | = Database | |
INDEX_NAME | Key_name
| |
SEQ_IN_INDEX | Seq_in_index
| |
COLUMN_NAME | Column_name
| |
COLLATION | Collation
| |
CARDINALITY | Cardinality
| |
SUB_PART | Sub_part |
MySQL extension |
PACKED | Packed | MySQL extension |
NULLABLE | Null | MySQL extension |
INDEX_TYPE | Index_type
| MySQL extension |
COMMENT | Comment |
MySQL extension |
INDEX_COMMENT | Index_comment
| MySQL extension |
IS_VISIBLE | Visible |
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 FROMtbl_name
FROMdb_name
Таблица 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_SCHEMA | Table_ ...
| |
TABLE_NAME | Table_ ...
| |
TABLE_TYPE | ||
ENGINE | Engine | MySQL extension |
VERSION | Version |
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_FORMAT | Row_format
| MySQL extension |
TABLE_ROWS | Rows |
MySQL extension |
AVG_ROW_LENGTH | Avg_row_length
| MySQL extension |
DATA_LENGTH | Data_length
| MySQL extension |
MAX_DATA_LENGTH |
Max_data_length | MySQL extension |
INDEX_LENGTH | Index_length
| MySQL extension |
DATA_FREE | Data_free
| MySQL extension |
AUTO_INCREMENT | Auto_increment
| MySQL extension |
CREATE_TIME | Create_time
| MySQL extension |
UPDATE_TIME | Update_time
| MySQL extension |
CHECK_TIME | Check_time
| MySQL extension |
TABLE_COLLATION | Collation
| MySQL extension |
CHECKSUM | Checksum |
MySQL extension |
CREATE_OPTIONS | Create_options
| MySQL extension |
TABLE_COMMENT | Comment
| 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 FROMdb_name
[LIKE 'wild
']
Таблица 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
.
Таблица
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
.Таблица TABLE_PRIVILEGES
предоставляет информацию о табличных привилегиях. Эта информация
прибывает из таблицы mysql.tables_priv
.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
GRANTEE | '
value | |
TABLE_CATALOG | def
| |
TABLE_SCHEMA | ||
TABLE_NAME | ||
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
PRIVILEGE_TYPE
может содержать одно (и только одно)
из этих значений: SELECT
, INSERT
,
UPDATE
,
REFERENCES
,
ALTER
,
INDEX
,
DROP
или
CREATE VIEW
.
Следующие запросы НЕ эквивалентны:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES SHOW GRANTS ...
Таблица TRIGGERS
предоставляет информацию о триггерах. Чтобы видеть информацию о триггерах
таблицы, Вы должны иметь привилегию
TRIGGER
для таблицы.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
TRIGGER_CATALOG | def | |
TRIGGER_SCHEMA | ||
TRIGGER_NAME | Trigger
| |
EVENT_MANIPULATION | Event
| |
EVENT_OBJECT_CATALOG |
def | |
EVENT_OBJECT_SCHEMA | ||
EVENT_OBJECT_TABLE | Table
| |
ACTION_ORDER | ||
ACTION_CONDITION |
NULL | |
ACTION_STATEMENT | Statement
| |
ACTION_ORIENTATION |
ROW | |
ACTION_TIMING | Timing
| |
ACTION_REFERENCE_OLD_TABLE | NULL | |
ACTION_REFERENCE_NEW_TABLE | NULL | |
ACTION_REFERENCE_OLD_ROW |
OLD | |
ACTION_REFERENCE_NEW_ROW |
NEW | |
CREATED | Created |
|
SQL_MODE | sql_mode |
MySQL extension |
DEFINER | Definer |
MySQL extension |
CHARACTER_SET_CLIENT |
character_set_client | MySQL extension |
COLLATION_CONNECTION |
collation_connection | MySQL extension |
DATABASE_COLLATION |
Database Collation | MySQL 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
Таблица USER_PRIVILEGES
предоставляет информацию о глобальных привилегиях. Эта информация
прибывает из таблицы mysql.user
.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
---|---|---|
GRANTEE |
' value, MySQL extension | |
TABLE_CATALOG | def
, MySQL extension | |
PRIVILEGE_TYPE | MySQL extension | |
IS_GRANTABLE | MySQL extension |
Это нестандартная таблица. Это берет свои значения от таблицы
mysql.user
.
Таблица 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
.
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
обрезаются
от определения сервером.
Этот раздел обеспечивает табличные определения для таблиц
InnoDB
INFORMATION_SCHEMA
.
Для соответствующей информации и примеров см.
раздел 16.14.
Таблицы InnoDB
INFORMATION_SCHEMA
могут использоваться, чтобы контролировать активность InnoDB
,
чтобы обнаружить неэффективности прежде, чем они превратятся в проблемы,
или расследовать проблемы. Поскольку Ваша база данных становится больше и
более занятой, сталкиваясь с пределами Ваших аппаратных средств, Вы
контролируете и настраиваете эти аспекты, чтобы сохранить базу
данных, работающую гладко.
Таблица INNODB_BUFFER_PAGE
содержит информацию о каждой
странице в
буферном бассейне InnoDB
.
Для связанной информации об использовании и примеров см. раздел 16.14.5.
Запросы таблицы INNODB_BUFFER_PAGE
могут ввести существенные
накладные расходы. Не запрашивайте эту таблицу на производственной системе,
если Вы не знаете об исполнительном влиянии, которое Ваш запрос может
оказать, и определили это как приемлемое. Чтобы избежать воздействия на
работу, воспроизведите проблему, которую Вы хотите исследовать на
испытательном образце и запросите на нем таблицу
INNODB_BUFFER_PAGE
.
Таблица 22.1. Столбцы INNODB_BUFFER_PAGE
Имя | Описание |
---|---|
POOL_ID | ID бассейна. Идентификатор, чтобы различить разные экземпляры бассейна. |
BLOCK_ID | ID блока бассейна. |
SPACE | ID табличного пространства.
Использует то же самое значение, что и
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.Таблица 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. |
SPACE | ID табличного пространства.
Использует то же самое значение, что и
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
, чтобы
просмотреть дополнительную информацию о столбцах этой таблицы, включая типы
данных и значения по умолчанию.INNODB_BUFFER_PAGE_LRU
сообщает
информацию об этих страницах, пока они не выселены из буферного бассейна. Для
получения дополнительной информации о том, как
InnoDB
управляет буферными данными бассейна см.
раздел 16.6.3.1.Таблица INNODB_BUFFER_POOL_STATS
предоставляет большую часть
той же самой буферной информации о бассейне, предоставленной в выводе
SHOW ENGINE INNODB STATUS
. Большая часть информации может также
быть получена, используя InnoDB
переменные состояния сервера
.
Идея сделать страницы в буферном бассейне молодыми или старыми обращается к передаче их между подсписками в начале и хвосте буферной структуры данных бассейна. Молодые страницы дольше стареют в буферном бассейне, в то время как старые страницы на грани удления.
Таблица 22.3. Столбцы INNODB_BUFFER_POOL_STATS
Имя | Описание |
---|---|
POOL_ID | ID бассейна. Уникальный идентификатор, чтобы различить буферные бассейны. |
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_TOTAL | LRU IO суммарно |
LRU_IO_CURRENT | LRU 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
,
чтобы запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблицы 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
, чтобы
запросить эту таблицу.InnoDB
смю
раздел 16.9.Таблицы 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
, чтобы
запросить эту таблицу.InnoDB
смю
раздел 16.9.Таблицы 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
, чтобы
запросить эту таблицу.InnoDB
смю
раздел 16.9.Таблица 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_ID | ID документа строки,
которая находится в процессе удаления. Это значение могло бы отразить
значение столбца ID, который Вы определили для основной таблицы, или это
может быть значение последовательности, произведенное InnoDB ,
когда таблица не содержит подходящий столбец. Это значение используется,
чтобы пропустить строки в таблице
innodb_ft_index_table
, когда Вы делаете текстовые поиски перед данными для удаленных
строк, физически удаленных из индекса FULLTEXT запросом
OPTIMIZE TABLE .
|
DESCRIBE
или
SHOW COLUMNS
, чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.PROCESS
, чтобы
запросить эту таблицу.InnoDB
FULLTEXT
см. разделы
16.8.9 и
13.9.Таблица 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
.
Таблица 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
, чтобы
запросить эту таблицу.Таблица INNODB_FT_DELETED
делает запись строк, которые
удалены из индекса FULLTEXT
для таблицы InnoDB
.
Чтобы избежать дорогой перестройки индекса во время операций DML для
InnoDB
FULLTEXT
, информация о недавно удаленных
словах хранится отдельно, фильтруется из результатов поиска, когда Вы делаете
текстовый поиск, и удаляется из основного поиска только, когда Вы вызываете
OPTIMIZE TABLE
.
Эта таблица первоначально кажется пустой, пока Вы не устанавливаете
значение переменной конфигурации
innodb_ft_aux_table
к имени (включая имя базы данных) таблицы, которая содержит
индекс FULLTEXT
, например, test/articles
.
Таблица 22.11. Столбцы INNODB_FT_DELETED
Имя | Описание |
---|---|
DOC_ID | ID документа недавно
удаленной строки. Это значение могло бы отразить значение столбца 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
, чтобы
запросить эту таблицу.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_ID | ID документа недавно
вставленной строки. Это значение могло бы отразить значение 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
, чтобы
запросить эту таблицу.Таблица 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_ID value. |
Эта таблица первоначально кажется пустой, пока Вы не
устанавливаете значение переменной конфигурации
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
, чтобы
запросить эту таблицу.Таблица 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_LOCKS | data_locks |
---|---|
LOCK_ID | ENGINE_LOCK_ID
|
LOCK_TRX_ID |
ENGINE_TRANSACTION_ID |
LOCK_MODE | LOCK_MODE
|
LOCK_TYPE | LOCK_TYPE
|
LOCK_TABLE (имена схемы и таблицы вместе)
| OBJECT_SCHEMA (имя схемы),
OBJECT_NAME (имя таблицы). |
LOCK_INDEX | INDEX_NAME
|
LOCK_SPACE | Нет. |
LOCK_PAGE | Нет. |
LOCK_REC | Нет. |
LOCK_DATA | LOCK_DATA
|
Таблица
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 |
Таблица 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
, чтобы
запросить эту таблицу.Таблица 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( это могло бы быть
2* ,
3* и так далее в зависимости
от кодировки символов. |
Пример:
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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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 . |
|
1-4 | Эти четыре бита содержат небольшое число,
которое представляет сжатый размер страницы таблицы. Поле
INNODB_SYS_TABLES.ZIP_PAGE_SIZE
также сообщает о сжатом размере страницы, если применимо. |
|
5 | Этот бит установлен, если формат строки
DYNAMIC или COMPRESSED . |
|
6 | Этот бит установлен, если опция
DATA DIRECTORY применена с
CREATE TABLE или
ALTER TABLE .
Этот бит установлен для табличных пространств файла на таблицу,
которые расположены в каталогах кроме каталога данных по умолчанию
(datadir ). |
|
7 | Этот бит установлен, если таблица назначена на
совместно используемое табличное пространство (общее или системное табличное
пространство) использованием опции
TABLESPACE= в
CREATE TABLE или
ALTER TABLE . |
|
В следующем, таблица 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)
Таблица 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
, чтобы
запросить эту таблицу.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 . |
|
1-4 | Эти четыре бита содержат небольшое число,
которое представляет сжатый размер страницы (KEY_BLOCK_SIZE или
физический размер блока) табличного пространства. |
|
5 |
Этот бит установлен для табличных пространств файла на таблицу, если формат
строки таблицы DYNAMIC или COMPRESSED .
У общих табличных пространств, которые не содержат сжатые таблицы, будут
первые 6 бит установлены в 0, включая этот бит, указывая, что табличное
пространство содержит таблицы REDUNDANT или COMPACT
. Но фактически, общие табличные пространства могут содержать любую
комбинацию таблиц REDUNDANT , COMPACT и
DYNAMIC . Для получения дополнительной информации об общих
табличных пространствах см.
CREATE TABLESPACE . |
|
6-9 | Эти четыре бита содержат небольшое число, которое представляет несжатый размер страницы (логический размер страницы) табличного пространства. Установка ноль, если логический размер страницы оригинальный размер страницы по умолчанию 16K. |
|
10 | Этот бит установлен, если опция
DATA DIRECTORY применена с
CREATE TABLE или
ALTER TABLE .
Этот бит установлен для табличных пространств файла на таблицу, которые
расположены в каталогах, кроме каталога данных по умолчанию
(datadir ). |
|
11 | Этот бит установлен, если табличное
пространство совместно используемое общее табличное пространство,
созданное CREATE TABLESPACE
. |
|
12 | Этот бит установлен, если табличное
пространство выделено временным таблицам. Только предопределенное
табличное пространство ibtmp1 использует этот флаг. |
|
В следующем примере таблице 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)
Представление 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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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
, чтобы
запросить эту таблицу.Таблица 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_ID | ID потока 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
, чтобы
запросить эту таблицу.Некоторые расширения к 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 | +---------+---------------------------+---------------------+--------+