Глава 22. Таблицы INFORMATION_SCHEMA
INFORMATION_SCHEMA обеспечивает доступ к метаданным
о базе данных, информации о сервере MySQL, такой как название базы
данных или таблицы, типе данных столбца или привилегиях доступа. Другие
термины, которые иногда используются для этой информации, являются
словарем данных и системным каталогом.
Замечания о применении
INFORMATION_SCHEMA
INFORMATION_SCHEMA база данных в пределах каждого экземпляра
MySQL, место, которое хранит информацию обо всех других базах данных, которые
поддерживает сервер MySQL. INFORMATION_SCHEMA
содержит несколько таблиц только для чтения. Они фактически представления, не
базовые таблицы, таким образом нет никаких файлов, связанных с ними,
и Вы не можете установить триггеры на них. Кроме того, нет никакого каталога
базы данных с этим именем.
Хотя Вы можете выбрать INFORMATION_SCHEMA как базу данных по
умолчанию с помощью USE , Вы можете
только читать содержание таблиц, операции
INSERT ,
UPDATE или
DELETE не работают.
Пример
Вот пример запроса, который получает информацию из
INFORMATION_SCHEMA :
mysql> SELECT table_name, table_type, engine
FROM information_schema.tables
WHERE table_schema = 'db5' ORDER BY table_name;
+------------+------------+--------+
| table_name | table_type | engine |
+------------+------------+--------+
| fk | BASE TABLE | InnoDB |
| fk2 | BASE TABLE | InnoDB |
| goto | BASE TABLE | MyISAM |
| into | BASE TABLE | MyISAM |
| k | BASE TABLE | MyISAM |
| kurs | BASE TABLE | MyISAM |
| loop | BASE TABLE | MyISAM |
| pk | BASE TABLE | InnoDB |
| t | BASE TABLE | MyISAM |
| t2 | BASE TABLE | MyISAM |
| t3 | BASE TABLE | MyISAM |
| t7 | BASE TABLE | MyISAM |
| tables | BASE TABLE | MyISAM |
| v | VIEW | NULL |
| v2 | VIEW | NULL |
| v3 | VIEW | NULL |
| v56 | VIEW | NULL |
+------------+------------+--------+
17 rows in set (0.01 sec)
Объяснение: запрос просит список всех таблиц в базе данных db5 и
показывает только три столбца данных: название таблицы, ее тип и
ее механизм хранения.
Соображения о наборе символов
Определение для символьных столбцов (например,
TABLES.TABLE_NAME ) вообще
VARCHAR(N ) CHARACTER SET utf8 , где
N минимум 64. MySQL использует сопоставление по
умолчанию для этого набора символов (utf8_general_ci )
для всех поисков, отображений, сравнений и других строковых операций
на таких столбцах.
Поскольку некоторые объекты MySQL представлены как файлы, поиски в
строковых столбцах INFORMATION_SCHEMA могут быть затронуты
чувствительностью к регистру файловой системы. Для получения дополнительной
информации см.
раздел 11.1.8.7.
INFORMATION_SCHEMA как
альтернатива запросу SHOW
Запрос SELECT ... FROM INFORMATION_SCHEMA предназначен как
более последовательный способ обеспечить доступ к информации, предоставленной
различными запросами SHOW
(SHOW DATABASES ,
SHOW TABLES и т. д.).
Использование SELECT имеет эти
преимущества, по сравнению с SHOW :
Поскольку 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 . Для каждого столбца есть три сведения:
Много разделов указывают, что SHOW
эквивалентен SELECT , который
получает информацию от INFORMATION_SCHEMA . Для
SHOW , которые показывают информацию
для базы данных по умолчанию, если Вы опускаете FROM
db_name , Вы можете часто выбирать информацию для
базы данных по умолчанию, добавляя выражение
AND TABLE_SCHEMA = SCHEMA() в предложении WHERE
запроса, который получает информацию от INFORMATION_SCHEMA .
Соответствующая информация
Эти разделы обсуждают дополнительные
темы INFORMATION_SCHEMA :
22.1. Таблица
INFORMATION_SCHEMA CHARACTER_SETS
Таблица CHARACTER_SETS
предоставляет информацию о доступных наборах символов.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
CHARACTER_SET_NAME |
Charset | |
DEFAULT_COLLATE_NAME |
Default collation | |
Описание |
Описание | MySQL extension |
MAXLEN |
Maxlen | MySQL extension |
Следующие запросы эквивалентны:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
[WHERE CHARACTER_SET_NAME LIKE 'wild ']
SHOW CHARACTER SET [LIKE 'wild ']
22.2. Таблица
INFORMATION_SCHEMA COLLATIONS
Таблица COLLATIONS
предоставляет информацию о сопоставлениях для каждого набора символов.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
COLLATION_NAME |
Collation | |
CHARACTER_SET_NAME |
Charset | MySQL extension |
ID | Id |
MySQL extension |
IS_DEFAULT | Default |
MySQL extension |
IS_COMPILED | Compiled
| MySQL extension |
SORTLEN | Sortlen |
MySQL extension |
Информация о сопоставлении также доступна из
SHOW COLLATION .
Следующие запросы эквивалентны:
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS
[WHERE COLLATION_NAME LIKE 'wild ']
SHOW COLLATION [LIKE 'wild ']
22.3.
Таблица INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY
Таблица
COLLATION_CHARACTER_SET_APPLICABILITY показывает, какой
набор символов для какого сопоставления применим. Столбцы эквивалентны первым
двум полям, которые Вы получите в выводе
SHOW COLLATION .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
COLLATION_NAME |
Collation | |
CHARACTER_SET_NAME |
Charset | |
22.4. Таблица INFORMATION_SCHEMA COLUMNS
Таблица COLUMNS
предоставляет информацию о столбцах в таблицах.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | |
def |
TABLE_SCHEMA | | |
TABLE_NAME | | |
COLUMN_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 |
Примечания:
Следующие запросы почти эквивалентны:
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name '
[AND table_schema = 'db_name ']
[AND column_name LIKE 'wild ']
SHOW COLUMNS FROM tbl_name
[FROM db_name ]
[LIKE 'wild ']
22.5.
Таблица INFORMATION_SCHEMA COLUMN_PRIVILEGES
Таблица
COLUMN_PRIVILEGES предоставляет информацию о привилегиях столбца.
Эта информация прибывает из таблицы mysql.columns_priv .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
GRANTEE | |
'user_name '@'host_name '
value |
TABLE_CATALOG | | def
|
TABLE_SCHEMA | | |
TABLE_NAME | | |
COLUMN_NAME | | |
PRIVILEGE_TYPE | | |
IS_GRANTABLE | |
|
В выводе из
SHOW FULL COLUMNS все
привилегии в одном поле и в нижнем регистре, например,
select,insert,update,references . В
COLUMN_PRIVILEGES
есть одна привилегия на строку в верхнем регистре.
PRIVILEGE_TYPE содержать одно (и только одно)
из этих значений: SELECT
, INSERT ,
UPDATE ,
REFERENCES .
- Если пользователь имеет привилегию
GRANT OPTION ,
IS_GRANTABLE будет YES . Иначе
IS_GRANTABLE будет NO . Вывод не перечисляет
GRANT OPTION
как отдельную привилегию.
Следующие запросы НЕ эквивалентны:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
SHOW GRANTS ...
22.6.
Таблица INFORMATION_SCHEMA ENGINES
Таблица ENGINES
предоставляет информацию о механизмах хранения.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
ENGINE | Engine
| MySQL extension |
SUPPORT | Support |
MySQL extension |
COMMENT | Comment |
MySQL extension |
TRANSACTIONS | Transactions
| MySQL extension |
XA | XA |
MySQL extension |
SAVEPOINTS | Savepoints
| MySQL extension |
22.7. Таблица INFORMATION_SCHEMA EVENTS
Таблица 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.
22.8. Таблица INFORMATION_SCHEMA FILES
Таблица FILES
предоставляет информацию о файлах, в которых хранятся данные о
табличном пространстве MySQL.
INFORMATION_SCHEMA.FILES
предоставляет сведения о файлах данных
NDB и InnoDB .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
FILE_ID | | MySQL
extension |
FILE_NAME | | MySQL extension
|
FILE_TYPE | | MySQL extension
|
TABLESPACE_NAME | | MySQL
extension |
TABLE_CATALOG | | MySQL
extension |
TABLE_SCHEMA | | MySQL
extension |
TABLE_NAME | | MySQL extension
|
LOGFILE_GROUP_NAME | | MySQL
extension |
LOGFILE_GROUP_NUMBER | | MySQL
extension |
ENGINE | | MySQL extension
|
FULLTEXT_KEYS | | MySQL
extension |
DELETED_ROWS | | MySQL
extension |
UPDATE_COUNT | | MySQL
extension |
FREE_EXTENTS | | MySQL
extension |
TOTAL_EXTENTS | | MySQL
extension |
EXTENT_SIZE | | MySQL
extension |
INITIAL_SIZE | | MySQL
extension |
MAXIMUM_SIZE | | MySQL
extension |
AUTOEXTEND_SIZE | | MySQL
extension |
CREATION_TIME | | MySQL
extension |
LAST_UPDATE_TIME | | MySQL
extension |
LAST_ACCESS_TIME | | MySQL
extension |
RECOVER_TIME | | MySQL
extension |
TRANSACTION_COUNTER | | MySQL
extension |
VERSION | | MySQL extension
|
ROW_FORMAT | | MySQL extension
|
TABLE_ROWS | | MySQL extension
|
AVG_ROW_LENGTH | | MySQL
extension |
DATA_LENGTH | | MySQL
extension |
MAX_DATA_LENGTH | | MySQL
extension |
INDEX_LENGTH | | MySQL
extension |
DATA_FREE | | MySQL extension
|
CREATE_TIME | | MySQL
extension |
UPDATE_TIME | | MySQL
extension |
CHECK_TIME | | MySQL extension
|
CHECKSUM | | MySQL extension
|
STATUS | | MySQL extension
|
EXTRA | | MySQL extension |
Следующие примечания относятся к InnoDB . Поля
INFORMATION_SCHEMA.FILES ,
которые не описаны ниже, не применимы к
InnoDB и имеют значение NULL .
Данные, о которых сообщает
INFORMATION_SCHEMA.FILES ,
берутся из кэш-памяти InnoDB для открытых файлов. Для
INFORMATION_SCHEMA.INNODB_SYS_DATAFILES источником данных является
внутренняя таблица SYS_DATAFILES
словаря данных InnoDB .
- Данные, о которых сообщает
INFORMATION_SCHEMA.FILES
включает временные данные о табличном пространстве. Эти данные недоступны
во внутренней таблице SYS_DATAFILES словаря данных
и поэтому не сообщаются
INNODB_SYS_DATAFILES .
- Данные о табличном пространстве отмены сообщаются
INFORMATION_SCHEMA.FILES
когда отдельные табличные пространства отмены сконфигурированы, используя
опцию
innodb_undo_tablespaces .
FILE_ID ID табличного пространства, также называемое
space_id или fil_space_t::id .
FILE_NAME название файла с данными. У файла на
таблицу и общих табличных пространств есть расширение .ibd .
Табличные пространства отмены имеют префикс undo .
Системное табличное пространство имеет префикс ibdata .
Временные табличные пространства имеет префикс ibtmp .
Имя файла включает путь к файлу, который может быть указан относительно
каталога данных MySQL (datadir
).
FILE_TYPE тип файла табличного пространства. Есть три
возможных типа файла для файлов InnoDB . TABLESPACE
тип файла для любой системы, общий или файл табличного пространства файла на
таблицу, который содержит таблицы, индексы или другие формы пользовательских
данных. TEMPORARY тип файла для временных табличных пространств.
UNDO LOG тип файла для табличных пространств журнала отмены,
которые содержат отчеты отмены. По умолчанию отчеты отмены сохранены в
системном табличном пространстве. Отдельные табличные пространства журнала
отмены могут быть добавлены, используя опцию
innodb_undo_tablespaces .
TABLESPACE_NAME название SQL табличного пространства. Общее
имя табличного пространства SYS_TABLESPACES.NAME .
Для других файлов табличного пространства имена начинаются с
innodb_ , such as innodb_system ,
innodb_undo и innodb_file_per_table .
Формат имени табличного пространства файла на таблицу
innodb_file_per_table_## ,
где ## ID табличного пространства.
ENGINE механизм хранения. Для InnoDB
значение всегда InnoDB .
FREE_EXTENTS число полностью свободных экстентов в
текущем файле с данными.
TOTAL_EXTENTS число полных объемов, используемых в текущем
файле с данными. Любой частичный экстент в конце файла не посчитан.
EXTENT_SIZE 1048576 (1MB) для файлов с размером страниц в
4k, 8k или 16k. Размер экстента 2097152 (2MB) для файлов с размером страниц
32k и 4194304 (4MB) для файлов с размером страниц 64k.
INFORMATION_SCHEMA.FILES
не сообщает размер страницы InnoDB . Он определен в опции
innodb_page_size
. Размер экстента может также быть получен из
INNODB_SYS_TABLESPACES , где
FILES.FILE_ID = INNODB_SYS_TABLESPACES.SPACE_ID .
INITIAL_SIZE начальный размер файла в байтах.
MAXIMUM_SIZE максимальное количество байтов, позволенных в
файле. Значение NULL для всех файлов с данными за исключением
предопределенных системных файлов с данными табличного пространства.
Максимальный системный размер файла табличного пространства определен
innodb_data_file_path
. Максимальный временный размер файла табличного пространства
определен
innodb_temp_data_file_path . Значение NULL
для предопределенного системного файла с данными табличного пространства
указывает, что предел размера файла не был определен явно.
AUTOEXTEND_SIZE размер авторасширения, определенный
innodb_data_file_path
для системного табличного пространства или определенный
innodb_temp_data_file_path для временных табличных пространств.
DATA_FREE общая сумма свободного пространства (в байтах) для
всего табличного пространства. У предопределенных системных табличных
пространств, которые включают системное табличное пространство и временные
табличные пространства, может быть один или более файлов с данными.
STATUS NORMAL по умолчанию. Табличные
пространства файла на таблицу могут сообщить IMPORTING ,
который указывает, что табличное пространство еще не доступно.
- Следующий запрос возвращает все данные, подходящие для
табличных пространств
InnoDB .
mysql> SELECT FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME,
FREE_EXTENTS, TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE,
MAXIMUM_SIZE, AUTOEXTEND_SIZE, DATA_FREE, STATUS ENGINE
FROM INFORMATION_SCHEMA.FILES \G
22.9. Таблицы
INFORMATION_SCHEMA GLOBAL_STATUS и SESSION_STATUS
Значение переменной
show_compatibility_56 затрагивает информацию, доступную из
таблиц, описанных здесь. Для деталей см. описание этой переменной в
разделе 6.1.5.
Информация, доступная из таблиц, описанных здесь, также доступна из
Performance Schema. Таблицы INFORMATION_SCHEMA устарели в
предпочтении к Performance Schema и будут удалены в будущем выпуске MySQL.
Для совета относительно перемещения от INFORMATION_SCHEMA на
Performance Schema см.
раздел
23.17.
Таблицы GLOBAL_STATUS
и SESSION_STATUS
предоставляют информацию о переменных состояния сервера. Их содержание
соответствует информации, произведенной запросами
SHOW GLOBAL STATUS и
SHOW SESSION STATUS (см.
раздел 14.7.5.35).
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
VARIABLE_NAME | Variable_name | |
VARIABLE_VALUE | Value | |
22.10. Таблицы
INFORMATION_SCHEMA GLOBAL_VARIABLES и SESSION_VARIABLES
Значение переменной
show_compatibility_56 затрагивает информацию, доступную из
таблиц, описанных здесь. Для деталей см. описание этой переменной в
разделе 6.1.5.
Информация, доступная из таблиц, описанных здесь, также доступна из
Performance Schema. Таблицы INFORMATION_SCHEMA устарели в
предпочтении к Performance Schema и будут удалены в будущем выпуске MySQL.
Для совета относительно перемещения от INFORMATION_SCHEMA на
Performance Schema см.
раздел
23.17.
Таблицы GLOBAL_VARIABLES
и SESSION_VARIABLES
предоставляют информацию о переменных состояния сервера. Их содержание
соответствует информации, произведенной запросами
SHOW GLOBAL VARIABLES и
SHOW SESSION VARIABLES (см.
раздел 14.7.5.39).
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
VARIABLE_NAME | Variable_name |
|
VARIABLE_VALUE | Value | |
Столбец VARIABLE_VALUE для каждой из этих таблиц
определен как VARCHAR(1024) . Для переменных с очень длинными
значениями, которые не полностью выведены на экран, надо использовать
SELECT , например:
SELECT @@GLOBAL.innodb_data_file_path;
22.11.
Таблица INFORMATION_SCHEMA KEY_COLUMN_USAGE
Таблица KEY_COLUMN_USAGE
описывает, у каких ключевых столбцов есть ограничения.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
CONSTRAINT_CATALOG | |
def |
CONSTRAINT_SCHEMA | | |
CONSTRAINT_NAME | | |
TABLE_CATALOG | | def
|
TABLE_SCHEMA | | |
TABLE_NAME | | |
COLUMN_NAME | | |
ORDINAL_POSITION | | |
POSITION_IN_UNIQUE_CONSTRAINT | |
|
REFERENCED_TABLE_SCHEMA | |
|
REFERENCED_TABLE_NAME | |
|
REFERENCED_COLUMN_NAME | |
|
Если ограничение внешний ключ, то это столбец внешнего ключа, а не
столбец ссылки внешнего ключа.
- Значение
ORDINAL_POSITION это позиция столбца в пределах
ограничения, а не позиция столбца в пределах таблицы. Позиции столбца
пронумерованы, начиная с 1.
- Значение
POSITION_IN_UNIQUE_CONSTRAINT NULL для
ограничений уникального и первичного ключа. Для ограничений внешнего ключа
это порядковая позиция в ключе таблицы, на которую ссылаются.
Предположите, что есть два табличных имени t1 и
t3 со следующими определениями:
CREATE TABLE t1 (s1 INT, s2 INT, s3 INT, PRIMARY KEY(s3)) ENGINE=InnoDB;
CREATE TABLE t3 (s1 INT, s2 INT, s3 INT, KEY(s1),
CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)) ENGINE=InnoDB;
Для этих двух таблиц
KEY_COLUMN_USAGE имеет две строки:
Одна строка с CONSTRAINT_NAME = 'PRIMARY' ,
TABLE_NAME = 't1' ,
COLUMN_NAME = 's3' ,
ORDINAL_POSITION = 1 ,
POSITION_IN_UNIQUE_CONSTRAINT = NULL .
-
Вторая строка с
CONSTRAINT_NAME = 'CO' ,
TABLE_NAME = 't3' ,
COLUMN_NAME = 's2' ,
ORDINAL_POSITION = 1 ,
POSITION_IN_UNIQUE_CONSTRAINT = 1 .
22.12. Таблица
INFORMATION_SCHEMA OPTIMIZER_TRACE
Таблица OPTIMIZER_TRACE
предоставляет информацию, произведенную трассировкой
оптимизатора. Чтобы включить трассировку, используйте переменную
optimizer_trace .
Подробности есть в руководстве
MySQL Internals: Tracing the Optimizer.
22.13.
Таблица INFORMATION_SCHEMA PARAMETERS
Таблица PARAMETERS
предоставляет информацию о хранимой процедуре и функциональных параметрах и о
возвращаемых значениях для сохраненных функций. Информация о параметре
подобна содержанию столбца param_list в
таблице mysql.proc .
INFORMATION_SCHEMA Name |
mysql.proc 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 потому, что у возвращаемого
значения нет никакого имени, и режим не применяется.
22.14. Таблица
INFORMATION_SCHEMA PARTITIONS
Таблица PARTITIONS
предоставляет информацию о табличном разделении. См.
главу 20.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | |
MySQL extension |
TABLE_SCHEMA | | MySQL
extension |
TABLE_NAME | | MySQL extension
|
PARTITION_NAME | | MySQL
extension |
SUBPARTITION_NAME | | MySQL
extension |
PARTITION_ORDINAL_POSITION | |
MySQL extension |
SUBPARTITION_ORDINAL_POSITION | |
MySQL extension |
PARTITION_METHOD | | MySQL
extension |
SUBPARTITION_METHOD | | MySQL
extension |
PARTITION_EXPRESSION | | MySQL
extension |
SUBPARTITION_EXPRESSION | |
MySQL extension |
PARTITION_DESCRIPTION | |
MySQL extension |
TABLE_ROWS | | MySQL extension
|
AVG_ROW_LENGTH | | MySQL
extension |
DATA_LENGTH | | MySQL
extension |
MAX_DATA_LENGTH | | MySQL
extension |
INDEX_LENGTH | | MySQL
extension |
DATA_FREE | | MySQL extension
|
CREATE_TIME | | MySQL
extension |
UPDATE_TIME | | MySQL
extension |
CHECK_TIME | | MySQL extension
|
CHECKSUM | | MySQL extension
|
PARTITION_COMMENT | | MySQL
extension |
NODEGROUP | | MySQL extension
|
TABLESPACE_NAME | | MySQL
extension |
Таблица PARTITIONS
нестандартная.
Каждый отчет в этой таблице соответствует отдельному разделу или
подразду разделенной таблицы.
TABLE_CATALOG : Всегда def .
TABLE_SCHEMA : Этот столбец содержит название базы данных,
которой принадлежит таблица.
TABLE_NAME : Этот столбец содержит название
таблицы, содержащей разделение.
PARTITION_NAME : Название разделения.
SUBPARTITION_NAME : Если
PARTITIONS
представляет подраздел, тогда этот столбец содержит название подраздела,
иначе это NULL .
PARTITION_ORDINAL_POSITION : Все разделы индексированы в том
же самом порядке, как они определены, первый раздел имеет номер
1 . Индексация может измениться, поскольку разделы могут быть
добавлены, удалены и реорганизованы. Показанное этим столбцом число отражает
текущий порядок, принимая во внимание любые изменения индексации.
SUBPARTITION_ORDINAL_POSITION : Подразделы в пределах данного
раздела также индексированы в той же самой манере, как раздел
индексирован в пределах таблицы.a table.
PARTITION_METHOD : Одно из значений:
RANGE , LIST ,
HASH , LINEAR HASH ,
KEY , or LINEAR KEY .
То есть, один из доступных типов разделения как обсуждено в
разделе 20.2.
SUBPARTITION_METHOD : Одно из значений:
HASH , LINEAR HASH ,
KEY , or LINEAR KEY .
То есть, один из доступных типов подразделов как обсуждено в
разделе 20.2.6.
PARTITION_EXPRESSION : Это выражение для функции разделения,
используемой в CREATE TABLE
или ALTER TABLE , который
создало текущее разделение таблицы.
Например, считайте разделенную таблицу создаваемой в базе данных
test , используя этот запрос:
CREATE TABLE tp (c1 INT, c2 INT, c3 VARCHAR(25))
PARTITION BY HASH(c1 + c2) PARTITIONS 4;
Столбец PARTITION_EXPRESSION в таблице PARTITIONS
имеет запись для разделения этой таблицы как c1 + c2 :
mysql> SELECT DISTINCT PARTITION_EXPRESSION
> FROM INFORMATION_SCHEMA.PARTITIONS
> WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';
+----------------------+
| PARTITION_EXPRESSION |
+----------------------+
| c1 + c2 |
+----------------------+
1 row in set (0.09 sec)
SUBPARTITION_EXPRESSION : Это работает тем же самым
способом на выражении подразделения, которое определяет подразделы для
таблицы как PARTITION_EXPRESSION делает для выражения
разделения, используемого, чтобы определить разделы таблицы.
Если у таблицы нет никакого подразделения, то этот столбец
NULL .
PARTITION_DESCRIPTION : Этот столбец используется для
разделов типа RANGE и LIST. Для RANGE это содержит набор
значений в разделе VALUES LESS THAN , которые могут быть целым
числом или MAXVALUE . Для LIST
этот столбец содержит значения, определенные в VALUES IN ,
то есть список целочисленных значений, разделенных запятой.
Для разделения, метод PARTITION_METHOD которого
RANGE или LIST , этот
столбец всегда NULL .
TABLE_ROWS : Число строк таблицы в разделе.
Для разделенных таблиц InnoDB
количество строки в столбце TABLE_ROWS только ориентировочное,
используемое в оптимизации SQL и, возможно, всегда неточное.
AVG_ROW_LENGTH : Средняя длина строк, сохраненных в этом
разделе или подразделе, в байтах.
Это то же самое, как DATA_LENGTH деленное на
TABLE_ROWS .
DATA_LENGTH : Полная длина всех строк, сохраненных в этом
разделе или подразделе, в байтах, то есть, общее количество байтов,
сохраненных в разделе или подразделе.
MAX_DATA_LENGTH : Максимальное количество байтов, которые
могут быть сохранены в этом разделе или подразделе.
INDEX_LENGTH : Длина индексного файла для этого раздела
или подраздела в байтах.
DATA_FREE : Число байтов, выделенных разделу или подразделу,
но не используемых.
CREATE_TIME : Время создания раздела.
UPDATE_TIME : Время, когда раздел был последний раз изменен.
CHECK_TIME : Время, когда таблица, которой принадлежит этот
раздел или подраздел, была проверена в последний раз.
Для разделенных таблиц InnoDB
столбец всегда NULL .
CHECKSUM : Значение контрольной суммы, если есть. Иначе
этот столбец NULL .
PARTITION_COMMENT : Этот столбец содержит текст любого
комментария, сделанного для разделения.
В MySQL 8.0 максимальная длина для комментария разделения определена как
1024 символа и ширина отображения столбца PARTITION_COMMENT тоже
1024, чтобы соответствовать этому пределу (Bug #11748924, Bug #37728).
Значение по умолчанию для этого столбца пустая строка.
NODEGROUP : Это nodegroup, которой принадлежит разделение.
Это относится только к таблицам MySQL Cluster. Для остальных ситуаций
значение этого столбца всегда 0 .
TABLESPACE_NAME : Этот столбец содержит название табличного
пространства, которому принадлежит разделение. Значение этого
столбца всегда DEFAULT .
- У неразделенной таблицы есть один отчет в
INFORMATION_SCHEMA.PARTITIONS . Однако, значения столбцов
PARTITION_NAME , SUBPARTITION_NAME ,
PARTITION_ORDINAL_POSITION ,
SUBPARTITION_ORDINAL_POSITION , PARTITION_METHOD ,
SUBPARTITION_METHOD , PARTITION_EXPRESSION ,
SUBPARTITION_EXPRESSION и PARTITION_DESCRIPTION
все NULL . Столбец PARTITION_COMMENT
в этом случае пустой.
22.15. Таблица INFORMATION_SCHEMA PLUGINS
Таблица PLUGINS
предоставляет информацию о плагинах сервера.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
PLUGIN_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 |
Для плагинов, установленных с
INSTALL PLUGIN , значения PLUGIN_NAME и
PLUGIN_LIBRARY также зарегистрированы в таблице
mysql.plugin .
Эти запросы эквивалентны:
SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,
PLUGIN_LIBRARY, PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS;
SHOW PLUGINS;
22.16. Таблица
INFORMATION_SCHEMA PROCESSLIST
Таблица PROCESSLIST
предоставляет информацию, с которой работают потоки.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
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.
Следующие запросы эквивалентны:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
SHOW FULL PROCESSLIST
22.17. Таблица
INFORMATION_SCHEMA PROFILING
Таблица PROFILING
предоставляет профилирующую информацию. Ее содержание соответствует
информации, произведенной SHOW
PROFILES и SHOW PROFILE
(см. раздел 14.7.5.31).
Таблица не пуста, если переменная сеанса
profiling установлена в 1.
Эта таблица устарела и будет удалена в будущем выпуске MySQL. Используйте
Performance Schema вместо этого.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
QUERY_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
| |
22.18. Таблица
INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS
Таблица
REFERENTIAL_CONSTRAINTS предоставляет информацию о внешних ключах.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
CONSTRAINT_CATALOG | | def |
CONSTRAINT_SCHEMA | | |
CONSTRAINT_NAME | | |
UNIQUE_CONSTRAINT_CATALOG | | def |
UNIQUE_CONSTRAINT_SCHEMA | | |
UNIQUE_CONSTRAINT_NAME | | |
MATCH_OPTION | | |
UPDATE_RULE | | |
DELETE_RULE | | |
TABLE_NAME | | |
REFERENCED_TABLE_NAME | |
|
22.19. Таблица INFORMATION_SCHEMA ROUTINES
Таблица 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 так:
CREATED : Дата и время, когда подпрограмма
создавалась. Это значение TIMESTAMP
.
LAST_ALTERED : Дата и время, когда подпрограмма была
изменена в последний раз. Это значение
TIMESTAMP . Если подпрограмма не была изменена, начиная с ее
создания этот столбец держит то же самое значение, как CREATED .
SQL_MODE : Режим SQL, когда подпрограмма была создана или
изменена, и под которым подпрограмма выполняется. Для разрешенных значений
см. раздел 6.1.8.
CHARACTER_SET_CLIENT : Значение сеансовой переменной
character_set_client
, когда подпрограмма создавалась.
COLLATION_CONNECTION : Значение сеансовой переменной
collation_connection
, когда подпрограмма создавалась.
DATABASE_COLLATION : Сопоставление базы данных, с
которой связана подпрограмма.
- Столбцы
DATA_TYPE , CHARACTER_MAXIMUM_LENGTH ,
CHARACTER_OCTET_LENGTH , NUMERIC_PRECISION ,
NUMERIC_SCALE , DATETIME_PRECISION ,
CHARACTER_SET_NAME и COLLATION_NAME
предоставляют информацию о типе данных для предложения RETURNS
сохраненных функций. Если сохраненная подпрограмма хранимая процедура, эти
столбцы все NULL .
- Информация о типах данных
RETURNS сохраненной функции
также доступна в таблице
PARAMETERS .
Строка типа данных возвращаемого значения для функции может быть
идентифицирована как строка, которая имеет значение
ORDINAL_POSITION 0.
22.20. Таблица INFORMATION_SCHEMA SCHEMATA
Это база данных, таким образом, таблица
SCHEMATA
предоставляет информацию о базах данных.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
CATALOG_NAME | |
def |
SCHEMA_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 ']
22.21. Таблица
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
Таблица
SCHEMA_PRIVILEGES предоставляет информацию о схеме (базе данных)
привилегий. Эта информация прибывает из таблицы mysql.db .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
GRANTEE | |
'user_name '@'host_name '
value, MySQL extension |
TABLE_CATALOG | | def
, MySQL extension |
TABLE_SCHEMA | | MySQL
extension |
PRIVILEGE_TYPE | | MySQL
extension |
IS_GRANTABLE | | MySQL
extension |
22.22. Таблицы
INFORMATION_SCHEMA STATISTICS и STATISTICS_DYNAMIC
Таблица STATISTICS
предоставляет информацию об индексах.
Столбцы в таблице STATISTICS
, которые представляют табличную статистику, содержат кэшируемые
значения. Если переменная
information_schema_stats равна CACHED (значение по
умолчанию), сервер получает кэшируемые значения для запросов на таблице
STATISTICS .
Чтобы обновить кэшируемые значения для данной таблицы, надо использовать
ANALYZE TABLE . Чтобы
использовать последнюю статистику непосредственно от механизмов хранения,
следует установить
information_schema_stats в LATEST .
В этом случае сервер обрабатывает запросы на таблице
STATISTICS
как запросы на STATISTICS_DYNAMIC
. Для получения дополнительной информации см.
раздел 9.2.4.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | |
def |
TABLE_SCHEMA | | = Database
|
TABLE_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 FROM tbl_name
FROM db_name
22.23. Таблицы INFORMATION_SCHEMA TABLES и
TABLES_DYNAMIC
Таблица TABLES
предоставляет информацию о таблицах в базах данных.
Столбцы в TABLES ,
которые представляют табличную статистику, содержат кэшируемые значения. Если
переменная
information_schema_stats имеет значение
CACHED (по умолчанию это так), сервер получает кэшируемые
значения для запросов на таблице
TABLES . Чтобы обновить кэшируемые значения для данной таблицы,
надо использовать ANALYZE TABLE
. Чтобы использовать последнюю статистику непосредственно от механизмов
хранения, установите
information_schema_stats в LATEST .
В этом случае сервер обрабатывает запросы на
TABLES как запросы на
TABLES_DYNAMIC .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | |
def |
TABLE_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 FROM db_name
[LIKE 'wild ']
22.24.
Таблица INFORMATION_SCHEMA TABLESPACES
Таблица TABLESPACES
предоставляет информацию об активных табличных пространствах.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLESPACE_NAME | |
MySQL extension |
ENGINE | | MySQL extension
|
TABLESPACE_TYPE | | MySQL
extension |
LOGFILE_GROUP_NAME | | MySQL
extension |
EXTENT_SIZE | | MySQL
extension |
AUTOEXTEND_SIZE | | MySQL
extension |
MAXIMUM_SIZE | | MySQL
extension |
NODEGROUP_ID | | MySQL
extension |
TABLESPACE_COMMENT | | MySQL
extension |
Таблица INFORMATION_SCHEMA.TABLESPACES не предоставляет
информацию о табличных пространствах InnoDB .
Для метаданных о табличном пространстве InnoDB см.
INNODB_SYS_TABLESPACES и
INNODB_SYS_DATAFILES
. Таблица
INFORMATION_SCHEMA.FILES также обеспечивает
метаданные для InnoDB .
22.25. Таблица
INFORMATION_SCHEMA TABLE_CONSTRAINTS
Таблица
TABLE_CONSTRAINTS описывает, у каких таблиц есть ограничения.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
CONSTRAINT_CATALOG | |
def |
CONSTRAINT_SCHEMA | | |
CONSTRAINT_NAME | | |
TABLE_SCHEMA | | |
TABLE_NAME | | |
CONSTRAINT_TYPE | | |
22.26. Таблица
INFORMATION_SCHEMA TABLE_PRIVILEGES
Таблица TABLE_PRIVILEGES
предоставляет информацию о табличных привилегиях. Эта информация
прибывает из таблицы mysql.tables_priv .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
GRANTEE | | '
user_name '@'host_name '
value |
TABLE_CATALOG | | def
|
TABLE_SCHEMA | | |
TABLE_NAME | | |
PRIVILEGE_TYPE | | |
IS_GRANTABLE | | |
Следующие запросы НЕ эквивалентны:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
SHOW GRANTS ...
22.27. Таблица INFORMATION_SCHEMA TRIGGERS
Таблица TRIGGERS
предоставляет информацию о триггерах. Чтобы видеть информацию о триггерах
таблицы, Вы должны иметь привилегию
TRIGGER для таблицы.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TRIGGER_CATALOG | |
def |
TRIGGER_SCHEMA | | |
TRIGGER_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 |
Пример, используя триггер ins_sum , определенный в
разделе 21.3:
mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
*************************** 1. row ***************************
TRIGGER_CATALOG: def
TRIGGER_SCHEMA: test
TRIGGER_NAME: ins_sum
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: def
EVENT_OBJECT_SCHEMA: test
EVENT_OBJECT_TABLE: account
ACTION_ORDER: 1
ACTION_CONDITION: NULL
ACTION_STATEMENT: SET @sum = @sum + NEW.amount
ACTION_ORIENTATION: ROW
ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
ACTION_REFERENCE_OLD_ROW: OLD
ACTION_REFERENCE_NEW_ROW: NEW
CREATED: 2013-07-05 07:41:21.26
SQL_MODE: NO_ENGINE_SUBSTITUTION
DEFINER: me@localhost
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: latin1_swedish_ci
22.28. Таблица
INFORMATION_SCHEMA USER_PRIVILEGES
Таблица USER_PRIVILEGES
предоставляет информацию о глобальных привилегиях. Эта информация
прибывает из таблицы mysql.user .
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
GRANTEE | |
'user_name '@'host_name
' value, MySQL extension |
TABLE_CATALOG | | def
, MySQL extension |
PRIVILEGE_TYPE | | MySQL
extension |
IS_GRANTABLE | | MySQL
extension |
22.29. Таблица INFORMATION_SCHEMA VIEWS
Таблица VIEWS
предоставляет информацию о представлениях в базах данных. Вы должны иметь
привилегию SHOW VIEW ,
чтобы получить доступ к этой таблице.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | |
def |
TABLE_SCHEMA | | |
TABLE_NAME | | |
VIEW_DEFINITION | | |
CHECK_OPTION | | |
IS_UPDATABLE | | |
DEFINER | | |
SECURITY_TYPE | | |
CHARACTER_SET_CLIENT | | MySQL
extension |
COLLATION_CONNECTION | | MySQL
extension |
Столбец VIEW_DEFINITION имеет большинство того, что
Вы видите в поле Create Table вывода
SHOW CREATE VIEW .
Пропустите слова прежде SELECT и
слова WITH CHECK OPTION . Предположите, что
оригинальный запрос был:
CREATE VIEW v AS
SELECT s2, s1 FROM t WHERE s1 > 5
ORDER BY s1 WITH CHECK OPTION;
Тогда определение представления похоже на это:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
Столбец CHECK_OPTION имеет значение
NONE , CASCADE или LOCAL .
- MySQL устанавливает флаг, названный флагом обновляемости представления,
в ходе
CREATE VIEW . Флаг
YES (true), если UPDATE
и DELETE (и подобные
операции) являются законными для представления. Иначе, флаг установлен в
NO (false). Столбец IS_UPDATABLE таблицы
VIEWS выводит на экран
состояние этого флага. Это означает, что сервер всегда знает, является
ли представление обновляемым.
Если представление не обновляемое, такие запросы, как
UPDATE ,
DELETE и
INSERT
незаконны и будут отклонены. Отметьте, что, даже если представление
обновляемое невозможно вставить в него, для деталей обратитесь к
разделу 21.5.3.
DEFINER : Учетная запись пользователя, который создал
представление, в формате 'user_name '@'
host_name ' . SECURITY_TYPE
имеет значение DEFINER или INVOKER .
CHARACTER_SET_CLIENT : Значение сеансовой переменной
character_set_client
, когда представление создавалось.
-
COLLATION_CONNECTION : Значение сеансовой переменной
collation_connection
, когда представление создавалось.
MySQL позволяет Вам использовать отличающиеся настройки
sql_mode , чтобы указать
серверу тип синтаксиса SQL. Например, Вы могли бы использовать
ANSI режим SQL, чтобы
гарантировать, что MySQL правильно интерпретирует стандартный оператор
конкатенации SQL, двойную черту (|| ), в Ваших запросах. Если Вы
тогда создаете представление, которое связывает элементы, установка
sql_mode
в значение, отличающееся от ANSI
может заставить представление стать недопустимым. Но дело обстоит
не так. Независимо от того, как Вы выписываете определение представления,
MySQL всегда хранит это тем же самым путем, в канонической форме. Вот пример,
который показывает, как сервер изменяет оператор связи двойной черты на
функцию CONCAT() :
mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)
Преимущество хранения определения представления в канонической форме состоит
в том, что изменения, произведенные позже в значении
sql_mode
не будут затрагивать результаты представления. Однако, дополнительное
последствие в том, что комментарии до
SELECT обрезаются
от определения сервером.
22.30. Таблицы InnoDB
INFORMATION_SCHEMA
Этот раздел обеспечивает табличные определения для таблиц
InnoDB INFORMATION_SCHEMA .
Для соответствующей информации и примеров см.
раздел 16.14.
Таблицы InnoDB INFORMATION_SCHEMA
могут использоваться, чтобы контролировать активность InnoDB ,
чтобы обнаружить неэффективности прежде, чем они превратятся в проблемы,
или расследовать проблемы. Поскольку Ваша база данных становится больше и
более занятой, сталкиваясь с пределами Ваших аппаратных средств, Вы
контролируете и настраиваете эти аспекты, чтобы сохранить базу
данных, работающую гладко.
22.30.1. Таблица
INFORMATION_SCHEMA INNODB_BUFFER_PAGE
Таблица INNODB_BUFFER_PAGE содержит информацию о каждой
странице в
буферном бассейне InnoDB
.
Для связанной информации об использовании и примеров см.
раздел 16.14.5.
Запросы таблицы INNODB_BUFFER_PAGE могут ввести существенные
накладные расходы. Не запрашивайте эту таблицу на производственной системе,
если Вы не знаете об исполнительном влиянии, которое Ваш запрос может
оказать, и определили это как приемлемое. Чтобы избежать воздействия на
работу, воспроизведите проблему, которую Вы хотите исследовать на
испытательном образце и запросите на нем таблицу
INNODB_BUFFER_PAGE .
Таблица 22.1. Столбцы INNODB_BUFFER_PAGE
Имя | Описание |
POOL_ID |
ID бассейна. Идентификатор, чтобы различить разные экземпляры бассейна.
|
BLOCK_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
22.30.2. Таблица
INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU
Таблица INNODB_BUFFER_PAGE_LRU содержит информацию о
страницах в буферном бассейне
InnoDB , в особенности как они упорядочиваются в списке LRU,
который определяет, какие страницы
удалить из буферного бассейна, когда он становится полным.
Таблица
INNODB_BUFFER_PAGE_LRU имеет те же самые столбцы, что и
INNODB_BUFFER_PAGE
, за исключением того, что
INNODB_BUFFER_PAGE_LRU имеет столбец LRU_POSITION
вместо BLOCK_ID column.
Таблица 22.2. Столбцы INNODB_BUFFER_PAGE_LRU
Имя | Описание |
POOL_ID |
ID бассейна. Идентификатор, чтобы различить разные экземпляры бассейна.
|
LRU_POSITION |
Позиция страницы в списке LRU. |
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
22.30.3. Таблица
INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS
Таблица INNODB_BUFFER_POOL_STATS предоставляет большую часть
той же самой буферной информации о бассейне, предоставленной в выводе
SHOW ENGINE INNODB STATUS . Большая часть информации может также
быть получена, используя InnoDB
переменные состояния сервера
.
Идея сделать страницы в буферном бассейне молодыми или
старыми обращается к передаче их между
подсписками
в начале и хвосте буферной структуры данных бассейна. Молодые страницы
дольше стареют в буферном бассейне, в то время как старые страницы
на грани удления.
Таблица 22.3. Столбцы INNODB_BUFFER_POOL_STATS
Имя | Описание |
POOL_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
22.30.4. Таблица
INFORMATION_SCHEMA INNODB_CACHED_INDEXES
Таблица INNODB_CACHED_INDEXES сообщает о числе индексных
страниц, кэшируемых в буферном бассейне InnoDB
для каждого индекса.
Таблица 22.4. Столбцы INNODB_CACHED_INDEXES
Имя | Описание |
SPACE_ID |
ID табличного пространства. |
INDEX_ID | Идентификатор для каждого
индекса, который уникален для всех баз данных. |
N_CACHED_PAGES |
Число индексных страниц, кэшированных в буферном бассейне.
|
Примеры:
Этот запрос возвращает число индексных страниц, кэшируемых в
бассейне InnoDB для определенного индекса:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CACHED_INDEXES
WHERE INDEX_ID=65\G
*************************** 1. row ***************************
INDEX_ID: 65
N_CACHED_PAGES: 45
1 row in set (0.00 sec)
Этот запрос возвращает число индексных страниц, кэшируемых в буферном
бассейне для каждого индекса и использует
INNODB_SYS_INDEXES
и INNODB_SYS_TABLES
, чтобы получить имя таблицы и индекса для каждого
значения INDEX_ID .
SELECT tables.name AS table_name, indexes.name AS index_name,
cached.n_cached_pages AS n_cached_pages FROM
INFORMATION_SCHEMA.INNODB_CACHED_INDEXES AS cached,
INFORMATION_SCHEMA.INNODB_SYS_INDEXES AS indexes,
INFORMATION_SCHEMA.INNODB_SYS_TABLES AS tables WHERE
cached.index_id = indexes.index_id AND
indexes.table_id = tables.table_id;
22.30.5. Таблицы INFORMATION_SCHEMA
INNODB_CMP и INNODB_CMP_RESET
Таблицы INNODB_CMP и INNODB_CMP_RESET
содержат информацию о статусе операций, связанных с
сжатыми
таблицами InnoDB .
Таблица 22.5. Столбцы INNODB_CMP и INNODB_CMP_RESET
Имя | Описание |
PAGE_SIZE |
Сжатый размер страницы в байтах. |
COMPRESS_OPS |
Сколько раз страница B-дерева размера PAGE_SIZE была сжата.
Страницы сжаты всякий раз, когда пустая страница создается, или пространство
для несжатого журнала модификации заканчивается. |
COMPRESS_OPS_OK |
Сколько раз страница B-дерева размера PAGE_SIZE успешно сжата.
Это количество никогда не должно превышать COMPRESS_OPS .
|
COMPRESS_TIME | Полное время в
секундах, проведенных в попытках сжать страницы B-дерева размера
PAGE_SIZE . |
UNCOMPRESS_OPS |
Сколько раз страница B-дерева размера PAGE_SIZE было рассжата.
Страницы B-дерева рассжаты всякий раз, когда сжатие терпит неудачу или при
первом доступе, когда несжатая страница не существует в буферном бассейне.
|
UNCOMPRESS_TIME |
Полное время в секундах проведено в рассжатии страниц B-дерева размера
PAGE_SIZE . |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP\G
*************************** 1. row ***************************
page_size: 1024
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 0
uncompress_time: 0
*************************** 2. row ***************************
page_size: 2048
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 0
uncompress_time: 0
*************************** 3. row ***************************
page_size: 4096
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 0
uncompress_time: 0
*************************** 4. row ***************************
page_size: 8192
compress_ops: 86955
compress_ops_ok: 81182
compress_time: 27
uncompress_ops: 26828
uncompress_time: 5
*************************** 5. row ***************************
page_size: 16384
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 0
uncompress_time: 0
22.30.6. Таблицы INFORMATION_SCHEMA
INNODB_CMPMEM и INNODB_CMPMEM_RESET
Таблицы INNODB_CMPMEM и INNODB_CMPMEM_RESET
содержат информацию о статусе сжатых
страниц в буферном бассейне
InnoDB .
Таблица 22.6. Столбцы INNODB_CMPMEM и INNODB_CMPMEM_RESET
Имя | Описание |
PAGE_SIZE |
Размер блока в байтах. Каждый отчет этой таблицы описывает
блоки этого размера.size. |
BUFFER_POOL_INSTANCE |
Уникальный идентификатор для буферного бассейна. |
PAGES_USED |
Число блоков размера PAGE_SIZE , которые
используются в настоящее время. |
PAGES_FREE |
Число блоков размера PAGE_SIZE , которые в настоящее время
доступны для распределения. Этот столбец показывает внешнюю фрагментацию в
бассейне памяти. Идеально, это число должно быть самое большее 1. |
RELOCATION_OPS |
Число раз, которое блок размера PAGE_SIZE был перемещен. Система
может переместить выделенный освобожденный блок, когда пытается сформировать
больший освобожденный блок. Чтение из таблицы
INNODB_CMPMEM_RESET сбрасывает это количество. |
RELOCATION_TIME |
Полное время в микросекундах, которое проведено в перемещении блоков размера
PAGE_SIZE . Чтение из таблицы
INNODB_CMPMEM_RESET сбрасывает это количество.
|
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM\G
*************************** 1. row ***************************
page_size: 1024
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
relocation_ops: 0
relocation_time: 0
*************************** 2. row ***************************
page_size: 2048
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
relocation_ops: 0
relocation_time: 0
*************************** 3. row ***************************
page_size: 4096
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
relocation_ops: 0
relocation_time: 0
*************************** 4. row ***************************
page_size: 8192
buffer_pool_instance: 0
pages_used: 7673
pages_free: 15
relocation_ops: 4638
relocation_time: 0
*************************** 5. row ***************************
page_size: 16384
buffer_pool_instance: 0
pages_used: 0
pages_free: 0
relocation_ops: 0
relocation_time: 0
22.30.7. Таблицы
INFORMATION_SCHEMA INNODB_CMP_PER_INDEX и
INNODB_CMP_PER_INDEX_RESET
Таблицы INNODB_CMP_PER_INDEX и
INNODB_CMP_PER_INDEX_RESET содержат информацию о статусе
операций, связанных со сжатыми
таблицами и индексами InnoDB с отдельной статистикой для каждой
комбинации базы данных, таблицы и индекса, чтобы помочь Вам оценить работу и
полноценность сжатия для определенных таблиц.
Для сжатой InnoDB -таблицы табличные данные и все
вторичные индексы сжаты.
Таблица 22.7. Столбцы INNODB_CMP_PER_INDEX и
INNODB_CMP_PER_INDEX_RESET
Имя | Описание |
DATABASE_NAME |
База данных, содержащая применимую таблицу. |
TABLE_NAME |
Таблица, чтобы контролировать статистику сжатия. |
INDEX_NAME |
Индекс, чтобы контролировать статистику сжатия. |
COMPRESS_OPS |
Число операций сжатия. Страницы
сжаты всякий раз, когда пустая страница создается, или пространство для
несжатого журнала модификации заканчивается. |
COMPRESS_OPS_OK |
Число успешных операций сжатия. Вычтите из COMPRESS_OPS , чтобы
получить число сбоев сжатия
. Разделите на COMPRESS_OPS , чтобы получить
процент отказов сжатия. |
COMPRESS_TIME |
Общая сумма времени центрального процессора, в секундах, используемая для
того, чтобы сжать данные в этом индексе. |
UNCOMPRESS_OPS |
Число операций разсжатия. Сжатые InnoDB страницы разсжаты
всякий раз, когда сжатие
сбоит, или
когда к сжатой странице в первый раз получают доступ в
буферном бассейне
и несжатая страница не существует. |
UNCOMPRESS_TIME |
Общая сумма времени центрального процессора, в секундах, используемая
для того, чтобы разсжать данные в этом индексе. |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX\G
*************************** 1. row ***************************
database_name: employees
table_name: salaries
index_name: PRIMARY
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 23451
uncompress_time: 4
*************************** 2. row ***************************
database_name: employees
table_name: salaries
index_name: emp_no
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 1597
uncompress_time: 0
22.30.8.
Таблица INFORMATION_SCHEMA INNODB_FT_BEING_DELETED
Таблица INNODB_FT_BEING_DELETED снимок таблицы
INNODB_FT_DELETED
, которая используется только во время выполнения
OPTIMIZE TABLE . Когда
OPTIMIZE TABLE выполнен,
таблица INNODB_FT_BEING_DELETED освобождена и DOC_ID удалены
из таблицы
INNODB_FT_DELETED . Поскольку содержание
INNODB_FT_BEING_DELETED , как правило, имеет короткое время
существования, эта таблица ограничила утилиту для контроля или отладки. Для
информации о выполнении OPTIMIZE TABLE
на таблицах с индексом FULLTEXT см.
раздел 13.9.6.
Эта таблица первоначально кажется пустой, пока Вы не устанавливаете
значение переменной конфигурации
innodb_ft_aux_table
. Вывод подобен примеру для таблицы
INNODB_FT_DELETED
.
Таблица 22.8. Столбцы INNODB_FT_BEING_DELETED
Имя | Описание |
DOC_ID | ID документа строки,
которая находится в процессе удаления. Это значение могло бы отразить
значение столбца ID, который Вы определили для основной таблицы, или это
может быть значение последовательности, произведенное InnoDB ,
когда таблица не содержит подходящий столбец. Это значение используется,
чтобы пропустить строки в таблице
innodb_ft_index_table
, когда Вы делаете текстовые поиски перед данными для удаленных
строк, физически удаленных из индекса FULLTEXT запросом
OPTIMIZE TABLE .
|
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
- Для получения дополнительной информации о поисках
InnoDB
FULLTEXT см. разделы
16.8.9 и
13.9.
22.30.9. Таблица
INFORMATION_SCHEMA INNODB_FT_CONFIG
Таблица INNODB_FT_CONFIG выводит на экран метаданные об
индексе FULLTEXT и связанной обработке для таблиц.
Прежде, чем Вы запросите эту таблицу, установите переменную конфигурации
innodb_ft_aux_table
к имени (включая имя базы данных) таблицы, которая содержит
индекс FULLTEXT , например, test/articles .
Таблица 22.9. Столбцы INNODB_FT_CONFIG
Имя | Описание |
KEY |
Имя, определяющее элемент метаданных для таблицы InnoDB ,
содержащей индекс FULLTEXT . |
VALUE |
Значение, связанное со столбцом KEY , отражающее
некоторое предельное значение или текущий вес для аспекта индекса
FULLTEXT таблицы InnoDB . |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
+---------------------------+-------------------+
| KEY | VALUE |
+---------------------------+-------------------+
| optimize_checkpoint_limit | 180 |
| synced_doc_id | 0 |
| stopword_table_name | test/my_stopwords |
| use_stopword | 1 |
+---------------------------+-------------------+
22.30.10. Таблица
INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD
Таблица INNODB_FT_DEFAULT_STOPWORD содержит список
стоп-слов, которые используются по
умолчанию, создавая индекс FULLTEXT для InnoDB .
Таблица 22.10. Столбцы INNODB_FT_DEFAULT_STOPWORD
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+-------+
| value |
+-------+
| a |
| about |
| an |
| are |
| as |
| at |
| be |
| by |
| com |
| de |
| en |
| for |
| from |
| how |
| i |
| in |
| is |
| it |
| la |
| of |
| on |
| or |
| that |
| the |
| this |
| to |
| was |
| what |
| when |
| where |
| who |
| will |
| with |
| und |
| the |
| www |
+-------+
36 rows in set (0.00 sec)
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.11. Таблица
INFORMATION_SCHEMA INNODB_FT_DELETED
Таблица INNODB_FT_DELETED делает запись строк, которые
удалены из индекса FULLTEXT для таблицы InnoDB .
Чтобы избежать дорогой перестройки индекса во время операций DML для
InnoDB FULLTEXT , информация о недавно удаленных
словах хранится отдельно, фильтруется из результатов поиска, когда Вы делаете
текстовый поиск, и удаляется из основного поиска только, когда Вы вызываете
OPTIMIZE TABLE .
Эта таблица первоначально кажется пустой, пока Вы не устанавливаете
значение переменной конфигурации
innodb_ft_aux_table
к имени (включая имя базы данных) таблицы, которая содержит
индекс FULLTEXT , например, test/articles .
Таблица 22.11. Столбцы INNODB_FT_DELETED
Имя | Описание |
DOC_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 , чтобы
запросить эту таблицу.
22.30.12. Таблица
INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE
INNODB_FT_INDEX_CACHE : Содержит информацию маркера о
недавно вставленных строках в индекс FULLTEXT . Чтобы избежать
дорогой перестройки индекса во время операций DML, информация о недавно
индексированных словах хранится отдельно и объединена с основным поиском,
только когда выполняется OPTIMIZE
TABLE , когда сервер остановлен или когда размер кэша превышает
предел, определенный
innodb_ft_cache_size или
innodb_ft_total_cache_size .
Прежде, чем Вы запросите эту таблицу, установите переменную конфигурации
innodb_ft_aux_table
к имени (включая имя базы данных) таблицы, которая содержит
индекс FULLTEXT , например, test/articles .
Таблица 22.12. Столбцы INNODB_FT_INDEX_CACHE
Имя | Описание |
WORD |
Слово извлечено из текста недавно вставленной строки. |
FIRST_DOC_ID | Первое ID документа,
где это слово появляется в индексе FULLTEXT . |
LAST_DOC_ID | Последнее ID документа,
где это слово появляется в индексе FULLTEXT . |
DOC_COUNT | Число строк, в которых это
слово появляется в индексе FULLTEXT . То же самое слово может
быть несколько раз в пределах таблицы кэша, однажды для каждой комбинации
значений DOC_ID и POSITION . |
DOC_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 , чтобы
запросить эту таблицу.
22.30.13. Таблица
INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE
Таблица INNODB_FT_INDEX_TABLE выводит на экран информацию об
инвертированном индексе, используемом, чтобы обработать текстовые поиски
FULLTEXT таблицы InnoDB .
Прежде, чем Вы запросите эту таблицу, установите переменную конфигурации
innodb_ft_aux_table
к имени (включая имя базы данных) таблицы, которая содержит
индекс FULLTEXT , например, test/articles .
Таблица 22.13. Столбцы INNODB_FT_INDEX_TABLE
Имя | Описание |
WORD |
Слово, извлеченное из текста столбцов, которые являются частью
FULLTEXT . |
FIRST_DOC_ID |
Первое ID документа, где это слово появляется в индексе
FULLTEXT . |
LAST_DOC_ID |
Последнее ID документа, где это слово появляется в индексе
FULLTEXT . |
DOC_COUNT |
Число строк, в которых это слово появляется в индексе FULLTEXT .
То же самое слово может быть несколько раз в пределах таблицы кэша, однажды
для каждой комбинации DOC_ID и POSITION . |
DOC_ID |
ID документа строки, содержащей слово. Это значение могло бы отразить
значение ID столбца, который Вы определили для основной таблицы, или это
может быть значение последовательности, произведенное InnoDB ,
когда таблица не содержит подходящий столбец. |
POSITION |
Позиция этого особого случая слова в пределах соответствующего документа,
идентифицированного DOC_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 , чтобы
запросить эту таблицу.
22.30.14.
Таблица INFORMATION_SCHEMA INNODB_LOCKS
Таблица INNODB_LOCKS
содержит информацию о каждой блокировке, которую транзакция
InnoDB запросила, но еще не приобрела, и каждой блокировке,
при которой транзакция считает, что блокирует другую транзакцию.
Эта таблица устарела и удалена в MySQL 8.0.1. Используйте таблицу
Performance Schema data_locks
. См. раздел 23.9.12.1
.
Различия между INNODB_LOCKS
и data_locks
:
Если транзакция держит блокировку,
INNODB_LOCKS
выводит на экран блокировку, только если другая транзакция ждет ее.
data_locks выводит на
экран блокировку независимо от того, ждет ли какая-либо транзакция этого.
- У таблицы
data_locks
нет никакого соответствия столбцов LOCK_SPACE ,
LOCK_PAGE или LOCK_REC .
- Таблица
INNODB_LOCKS
требует глобальной привилегии
PROCESS . Таблица
data_locks требует обычной привилегии
Performance Schema SELECT
на таблице, из которой будет выбор.
Следующая таблица показывает отображение столбцов
INNODB_LOCKS на
столбцы data_locks .
Используйте эту информацию, чтобы мигрировать приложения от
одной таблицы к другой.
Таблица 22.14. Отображение столбцов INNODB_LOCKS на data_locks
INNODB_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
|
22.30.15. Таблица
INFORMATION_SCHEMA INNODB_LOCK_WAITS
Таблица
INNODB_LOCK_WAITS содержит одну или более строк для каждой
заблокированной транзакции InnoDB , указывая на блокировку,
которую это просило и любые блокировки, которые блокируют этот запрос.
Эта таблица устарела и удалена с MySQL 8.0.1. Используйте
таблицу data_lock_waits
Performance Schema. См.
раздел 23.9.12.2.
Таблицы отличаются по требуемым привилегиям:
INNODB_LOCK_WAITS
требует глобальную PROCESS
. Таблица
data_lock_waits требует обычной привилегии Performance Schema
SELECT для таблицы, из
которой будут взяты данные.
Следующая таблица показывает отображение столбцов
INNODB_LOCK_WAITS
на столбцы
data_lock_waits . Используйте эту информацию,
чтобы мигрировать приложения.
Таблица 22.15. Отображение INNODB_LOCK_WAITS на data_lock_waits
INNODB_LOCK_WAITS |
data_lock_waits |
REQUESTING_TRX_ID |
REQUESTING_ENGINE_TRANSACTION_ID |
REQUESTED_LOCK_ID |
REQUESTING_ENGINE_LOCK_ID |
BLOCKING_TRX_ID |
BLOCKING_ENGINE_TRANSACTION_ID |
BLOCKING_LOCK_ID |
BLOCKING_ENGINE_LOCK_ID |
22.30.16. Таблица
INFORMATION_SCHEMA INNODB_METRICS
Таблица INFORMATION_SCHEMA представляет большое разнообразие
информации о работе InnoDB , дополняя определенные области
таблиц PERFORMANCE_SCHEMA для InnoDB .
С простыми запросами Вы можете проверить полное здоровье системы. С более
подробными запросами Вы можете диагностировать такие проблемы, как
исполнительные узкие места, нехватки ресурсов и проблемы приложения.
Каждый монитор представляет пункт в исходном тексте
InnoDB , который инструментован, чтобы собрать встречную
информацию. Каждый счетчик может быть запущен, остановлен и сброшен. Вы
можете также выполнить эти действия для группы счетчиков,
используя их общее имя модуля.
По умолчанию, относительно небольшие данные собраны. Чтобы запустить,
остановить и сбросить счетчики, Вы устанавливаете один из параметров
конфигурации
innodb_monitor_enable ,
innodb_monitor_disable ,
innodb_monitor_reset
или
innodb_monitor_reset_all , используя название счетчика, название
модуля, подстановочное соответствие для такого имени с символом
% или специальное ключевое слово all .
Для информации об использовании см.
раздел 16.14.6
.
Таблица 22.16. Столбцы INNODB_METRICS
Имя | Описание |
NAME |
Уникальное имя для счетчика. |
SUBSYSTEM |
Аспект InnoDB , к котолрому относится метрика. Список, который
следует за таблицей, перечисляет соответствующие имена модулей, чтобы
использовать с SET GLOBAL . |
COUNT |
Значение, начиная со счетчика включено. |
MAX_COUNT |
Максимальное значение, начиная со счетчика включено. |
MIN_COUNT |
Минимальное значение, начиная со счетчика включено. |
AVG_COUNT |
Среднее значение, начиная со счетчика включено. |
COUNT_RESET |
Сбросить счетчик. Поля _RESET действуют как секундомер: Вы
можете измерить деятельность во время некоторого временного интервала, в то
время как совокупные числа все еще доступны в полях
COUNT , MAX_COUNT и подобных. |
MAX_COUNT_RESET |
Максимальное значение, после которого сбросить счетчик. |
MIN_COUNT_RESET |
Минимальное значение, после которого сбросить счетчик. |
AVG_COUNT_RESET |
Среднее значение, после которого сбросить счетчик. |
TIME_ENABLED |
Timestamp последнего запуска. |
TIME_DISABLED |
Timestamp последней остановки. |
TIME_ELAPSED |
Прошедшее время в секундах, начиная с запуска счетчика. |
TIME_RESET |
Timestamp последней остановки. |
STATUS |
Работает ли счетчик все еще (enabled )
или остановился (disabled ). |
TYPE |
Является ли элемент совокупным счетчиком, или измеряет текущее
значение некоторого ресурса. |
COMMENT | Описание счетчика.
|
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS
WHERE NAME="dml_inserts"\G
*************************** 1. row ***************************
NAME: dml_inserts
SUBSYSTEM: dml
COUNT: 3
MAX_COUNT: 3
MIN_COUNT: NULL
AVG_COUNT: 0.046153846153846156
COUNT_RESET: 3
MAX_COUNT_RESET: 3
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
TIME_ENABLED: 2014-12-04 14:18:28
TIME_DISABLED: NULL
TIME_ELAPSED: 65
TIME_RESET: NULL
STATUS: enabled
TYPE: status_counter
COMMENT: Number of rows inserted
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.17.
Таблица INFORMATION_SCHEMA INNODB_SYS_COLUMNS
Таблица INNODB_SYS_COLUMNS обеспечивает метаданные о
столбцах таблицы, эквивалентные информации из таблицы
SYS_COLUMNS словаря данных InnoDB .
Таблица 22.17. Столбцы INNODB_SYS_COLUMNS
Имя | Описание |
TABLE_ID |
Идентификатор, представляющий таблицу, связанный со столбцом, то же самое
значение, что и INNODB_SYS_TABLES.TABLE_ID . |
NAME |
Название каждого столбца в каждой таблице. Эти имена могут быть верхним
регистром или нижним регистром в зависимости от
lower_case_table_names . Нет никаких специальных сохраненных
системой названий столбцов. |
POS |
Порядковая позиция столбца в пределах таблицы, начиная с 0 и постепенно
увеличиваяся последовательно. Когда столбец удален, остающиеся столбцы
переупорядочены так, чтобы у последовательности не было никаких промежутков.
Значение POS для виртуального произведенного столбца кодирует
порядковый номер столбца и порядковую позицию столбца. Для получения
дополнительной информации см.
раздел 22.30.26. |
MTYPE |
Числовой идентификатор типа столбца. 1 = VARCHAR ,
2 = CHAR , 3 = FIXBINARY , 4 = BINARY ,
5 = BLOB , 6 = INT , 7 = SYS_CHILD ,
8 = SYS , 9 = FLOAT , 10 = DOUBLE ,
11 = DECIMAL , 12 = VARMYSQL ,
13 = MYSQL , 14 = GEOMETRY . |
PRTYPE |
Двоичное значение с битами, определяющими тип данных MySQL, код набора
символов и nullability. |
LEN |
Длина столбца, например, 4 для INT и 8 для BIGINT .
Для символьных столбцов в многобайтовых наборах символов это значение длины
максимальная длина в байтах, нужная для представления определения, то есть,
для VARCHAR(N ) это могло бы быть
2*N ,
3*N и так далее в зависимости
от кодировки символов. |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
where TABLE_ID = 71\G
*************************** 1. row ***************************
TABLE_ID: 71
NAME: col1
POS: 0
MTYPE: 6
PRTYPE: 1027
LEN: 4
*************************** 2. row ***************************
TABLE_ID: 71
NAME: col2
POS: 1
MTYPE: 2
PRTYPE: 524542
LEN: 10
*************************** 3. row ***************************
TABLE_ID: 71
NAME: col3
POS: 2
MTYPE: 1
PRTYPE: 524303
LEN: 10
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.18.
Таблица INFORMATION_SCHEMA INNODB_SYS_DATAFILES
Таблица INNODB_SYS_DATAFILES предоставляет информацию о пути
файла с данными для InnoDB файл на таблицу и общих табличных
пространств, эквивалентную информации в таблице SYS_DATAFILES
словаря данных InnoDB .
Таблица INFORMATION_SCHEMA.FILES
предоставляет информацию о пути файла с данными и другие
метаданные обо всех типах табличного пространства InnoDB ,
включая табличные пространства файла на таблицу, общие табличные
пространства, системное табличное пространство, временные табличные
пространства и табличные пространства отмены (если есть).
Таблица 22.18. Столбцы INNODB_SYS_DATAFILES
Имя | Описание |
SPACE |
ID табличного пространства. |
PATH |
Путь файла с данными табличного пространства (например,
.\world\innodb\city.ibd ). Если табличное пространство
файл на таблицу
создается в местоположении вне каталога данных MySQL, используя предложение
DATA DIRECTORY в CREATE
TABLE , поле PATH показывает полный путь к каталогу.
|
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES
WHERE SPACE = 57\G
*************************** 1. row ***************************
SPACE: 57
PATH: ./test/t1.ibd
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.19. Таблица
INFORMATION_SCHEMA INNODB_SYS_FIELDS
Таблица INNODB_SYS_FIELDS обеспечивает метаданные о ключах
столбцов (полей) индексов InnoDB , эквивалентную информации из
таблицы SYS_FIELDS в словаре данных InnoDB .
Таблица 22.19. Столбцы INNODB_SYS_FIELDS
Имя | Описание |
INDEX_ID |
Идентификатор для индекса, связанного с этим полем ключа, используя то же
самое значение, как в INNODB_SYS_INDEXES.INDEX_ID . |
NAME |
Название оригинального столбца таблицы, используя то же самое значение, как в
INNODB_SYS_COLUMNS.NAME . |
POS |
Порядковая позиция поля ключа в пределах индекса, начиная с 0 и постепенно
увеличиваюаяся последовательно. Когда столбец удален, остающиеся столбцы
переупорядочены так, чтобы у последовательности не было никаких промежутков.
|
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS
WHERE INDEX_ID = 117\G
*************************** 1. row ***************************
INDEX_ID: 117
NAME: col1
POS: 0
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.20. Таблица
INFORMATION_SCHEMA INNODB_SYS_FOREIGN
Таблица INNODB_SYS_FOREIGN обеспечивает метаданные о
внешних ключах, эквивалентную
информации из таблицы SYS_FOREIGN
в словаре данных InnoDB .
Таблица 22.20 Столбцы INNODB_SYS_FOREIGN
Имя | Описание |
ID |
Имя (не числовое значение) внешнего ключа индекса. Предваряется именем базы
данных, например, test/products_fk . |
FOR_NAME |
Название дочерней таблицы
в этих отношениях внешнего ключа. |
REF_NAME |
Название родительской таблицы
в этих отношениях внешнего ключа. |
N_COLS |
Число столбцов во внешнем ключе индекса. |
TYPE |
Набор разрядных флагов с информацией о столбце внешнего ключа, ORed вместе.
1 = ON DELETE CASCADE , 2 = ON UPDATE SET NULL,
4 = ON UPDATE CASCADE , 8 = ON UPDATE SET NULL,
16 = ON DELETE NO ACTION, 32 = ON UPDATE NO ACTION.
|
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN\G
*************************** 1. row ***************************
ID: test/fk1
FOR_NAME: test/child
REF_NAME: test/parent
N_COLS: 1
TYPE: 1
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.21.
Таблица INFORMATION_SCHEMA INNODB_SYS_FOREIGN_COLS
Таблица INNODB_SYS_FOREIGN_COLS обеспечивает информацию о
статусе столбцов внешних ключей InnoDB , эквивалентную информации
из таблицы SYS_FOREIGN_COLS словаря данных.
Таблица 22.21. Столбцы INNODB_SYS_FOREIGN_COLS
Имя | Описание |
ID |
Внешний ключ индекса, связанный с этим полем ключа индекса, используя то же
самое значение, как в INNODB_SYS_FOREIGN.ID . |
FOR_COL_NAME |
Название связанного столбца в дочерней таблице. |
REF_COL_NAME |
Название связанного столбца в родительской таблице. |
POS | Порядковая позиция этого поля
ключа в пределах внешнего ключа индекса, начиная с 0.
|
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS
WHERE ID = 'test/fk1'\G
*************************** 1. row ***************************
ID: test/fk1
FOR_COL_NAME: parent_id
REF_COL_NAME: id
POS: 0
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.22. Таблица
INFORMATION_SCHEMA INNODB_SYS_INDEXES
Таблица INNODB_SYS_INDEXES обеспечивает метаданные об
индексах InnoDB , эквивалентную информации во внутренней
таблице SYS_INDEXES InnoDB .
Таблица 22.22. Столбцы INNODB_SYS_INDEXES
Имя | Описание |
INDEX_ID |
Идентификатор для каждого индекса, который уникален для всех баз данных.
|
NAME |
Название индекса. Большинство индексов, создаваемых неявно
InnoDB , имеют последовательные имена, но имена индексов не
обязательно уникальны. Например, PRIMARY для первичного ключа
индекса, GEN_CLUST_INDEX для индекса представления первичного
ключа, когда один не определен, ID_IND , FOR_IND и
REF_IND для ограничений внешнего ключа. |
TABLE_ID |
Идентификатор, представляющий таблицу, связанную с индексом,
то же самое значение из INNODB_SYS_TABLES.TABLE_ID . |
TYPE |
Числовой идентификатор, имеющий значение типа индекса. 0 = вторичный,
1 = Кластеризируемый, 2 = Уникальный, 3 = Основной,
32 = Полнотекстовый, 64 = Пространственный, 128 = вторичный, который включает
произведенный виртуальный столбец. |
N_FIELDS |
Число столбцов в ключе индекса. Для индексов GEN_CLUST_INDEX
это значение 0, потому что индекс создается, используя искусственное
значение, а не реальный столбец таблицы. |
PAGE_NO |
Номер страницы корня индекса B-tree. Для полнотекстовых индексов поле
PAGE_NO не используется и установлено в -1
(FIL_NULL ), потому что полнотекстовый индекс
выложен в нескольких B-деревьях (вспомогательные таблицы). |
SPACE |
Идентификатор для табличного пространства, где индекс находится. 0 означает
системное табличное
пространство InnoDB . Любое другое число представляет
таблицу, составленную в режиме
файл на таблицу с отдельным
файлом .ibd . Этот идентификатор остается тем же самым после
TRUNCATE TABLE . Поскольку
все индексы для таблицы находятся в том же самом табличном пространстве, как
и таблица, это значение не обязательно уникально. |
MERGE_THRESHOLD |
Пороговое значение слияния для индексных страниц. Если объем данных в
индексной странице падает ниже значения
MERGE_THRESHOLD, когда
строка удалена или сокращена работой обновления, InnoDB
делает попытку слить индексную страницу с соседней индексной страницей.
Пороговое значение по умолчанию составляет 50%. Для получения дополнительной
информации см. раздел 16.6.11
. |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES
WHERE TABLE_ID = 34\G
*************************** 1. row ***************************
INDEX_ID: 39
NAME: GEN_CLUST_INDEX
TABLE_ID: 34
TYPE: 1
N_FIELDS: 0
PAGE_NO: 3
SPACE: 23
MERGE_THRESHOLD: 50
*************************** 2. row ***************************
INDEX_ID: 40
NAME: i1
TABLE_ID: 34
TYPE: 0
N_FIELDS: 1
PAGE_NO: 4
SPACE: 23
MERGE_THRESHOLD: 50
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.23. Таблица
INFORMATION_SCHEMA INNODB_SYS_TABLES
Таблица INNODB_SYS_TABLES обеспечивает метаданные о
таблицах InnoDB , эквивалентные информации из таблицы
SYS_TABLES словаря данных.
Таблица 22.23. Столбцы INNODB_SYS_TABLES
Имя | Описание |
TABLE_ID |
Идентификатор для каждой таблицы InnoDB , который уникален для
всех баз данных на сервере. |
NAME | Название таблицы.
Предваряется именем базы данных, например, test/t1 .
Системные имена таблиц находятся в верхнем регистре. Названия баз данных и
пользовательских таблиц находятся в том же самом регистре, как они были
первоначально определены, возможно, под влиянием параметра
lower_case_table_names . |
FLAG |
Это значение предоставляет разрядную информацию о формате таблицы и
характеристиках хранения, включая формат строки, сжатый размер страницы (если
применим) и действительно ли предложение DATA DIRECTORY
использовано с CREATE TABLE
или ALTER TABLE . |
N_COLS |
Число столбцов в таблице. Число включает три скрытых столбца, которые
создаются InnoDB (DB_ROW_ID , DB_TRX_ID
и DB_ROLL_PTR ). Число также включает
произведенные
виртуальные столбцы, если существуют. |
SPACE |
Идентификатор для табличного пространства, где таблица находится. 0 означает
системное табличное
пространство InnoDB .
Любое другое число представляет или табличное пространство
файл на таблицу,
или общее табличное пространство. Этот идентификатор остается тем же самым
после TRUNCATE TABLE .
Для табличных пространств файла на таблицу этот идентификатор уникален для
таблиц во всех базы данных сервера. |
ROW_FORMAT |
Формат строки таблицы (Compact, Redundant, Dynamic или Compressed). |
ZIP_PAGE_SIZE |
Размер zip-страницы. Оотносится только к таблицам, которые используют
сжатый формат строки. |
SPACE_TYPE |
Тип табличного пространства, которому принадлежит таблица. Возможные значения
включают System (для системного табличного пространства
InnoDB ), General (общие табличные пространства
InnoDB , созданные с использованием
CREATE TABLESPACE ) и
Single (табличные пространства файла на таблицу).
Таблицы, назначенные на системное табличное пространство, используя
предложение TABLESPACE=innodb_system в
CREATE TABLE или
ALTER TABLE имеют
General = SPACE_TYPE . |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE TABLE_ID = 214\G
*************************** 1. row ***************************
TABLE_ID: 214
NAME: test/t1
FLAG: 129
N_COLS: 4
SPACE: 233
ROW_FORMAT: Compact
ZIP_PAGE_SIZE: 0
SPACE_TYPE: General
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
Интерпретация значения столбца INNODB_SYS_TABLES.FLAG
:
Столбец INNODB_SYS_TABLES.FLAG предоставляет информацию на
разрядном уровне о формате таблицы и характеристиках хранения. Вы можете
интерпретировать FLAG , добавляя вместе применимые десятичные
числовые значения, которые обеспечены в следующей таблице.
Таблица 22.24. Значения позиции двоичного разряда для интерпретации
данных о столбце INNODB_SYS_TABLES FLAG
Позиция двоичного разряда |
Описание |
Десятичное числовое значение |
0 |
Этот бит установлен, если формат строки не REDUNDANT .
Другими словами, это установлено, если формат строки COMPACT ,
DYNAMIC или COMPRESSED . |
0 - REDUNDANT
- 1 -
COMPACT , DYNAMIC или
COMPRESSED .
|
1-4 | Эти четыре бита содержат небольшое число,
которое представляет сжатый размер страницы таблицы. Поле
INNODB_SYS_TABLES.ZIP_PAGE_SIZE
также сообщает о сжатом размере страницы, если применимо. |
0 - без сжатия.
- 2 - 1024 байта сжатый размер страницы
- 4 - 2048 байта сжатый размер страницы
- 6 - 4096 байта сжатый размер страницы
- 8 - 8192 байта сжатый размер страницы
- 10 - 16384 байта сжатый размер страницы
|
5 | Этот бит установлен, если формат строки
DYNAMIC или COMPRESSED . |
|
6 | Этот бит установлен, если опция
DATA DIRECTORY применена с
CREATE TABLE или
ALTER TABLE .
Этот бит установлен для табличных пространств файла на таблицу,
которые расположены в каталогах кроме каталога данных по умолчанию
(datadir ). |
|
7 | Этот бит установлен, если таблица назначена на
совместно используемое табличное пространство (общее или системное табличное
пространство) использованием опции
TABLESPACE=tablespace_name в
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)
22.30.24. Таблица
INFORMATION_SCHEMA INNODB_SYS_TABLESPACES
Таблица INNODB_SYS_TABLESPACES обеспечивает метаданные о
табличных пространствах файла на таблицу и общем, эквивалентные информации в
таблице SYS_TABLESPACES InnoDB .
Таблица INFORMATION_SCHEMA.FILES
обеспечивает метаданные обо всех типах табличного пространства
InnoDB , включая табличные пространства файла на таблицу, общие
табличные пространства, системное табличное пространство, временные табличные
пространства и табличные пространства отмены (если есть).
Таблица 22.25. Столбцы INNODB_SYS_TABLESPACES
Имя | Описание |
SPACE |
ID табличного пространства. |
NAME | Имя базы данных и имя таблицы
(например, world_innodb\city ) |
FLAG |
Это значение предоставляет разрядную информацию о формате табличного
пространства и характеристиках хранения. |
ROW_FORMAT |
Формат строки табличного пространства (Compact, Redundant, Dynamic или
Compressed). Данные в этом поле интерпретируются в зависимости от информации
флагов табличного пространства, которая находится в
файле .ibd. |
PAGE_SIZE |
Размер страницы табличного пространства. Данные в этом поле интерпретируются
в зависимости от информации флагов табличного пространства, которая находится
в файле .ibd. |
ZIP_PAGE_SIZE |
Размер zip страницы. Данные в этом поле интерпретируются
в зависимости от информации флагов табличного пространства, которая находится
в файле .ibd. |
SPACE_TYPE |
Тип табличного пространства. Возможные значения включают
General (общие табличные пространства InnoDB ,
созданные CREATE TABLESPACE
) и Single (табличные пространства файла на таблицу).
|
FS_BLOCK_SIZE |
Размер блока файловой системы, который является размером модуля.
Этот столбец был добавлен с введением InnoDB
прозрачного сжатия страницы
. |
FILE_SIZE |
Очевидный размер файла, который представляет максимальный размер несжатого
файла. Этот столбец был добавлен с введением InnoDB
прозрачного сжатия страницы
. |
ALLOCATED_SIZE |
Фактический размер файла, который является количеством места, выделенного на
диске. Этот столбец был добавлен с введением InnoDB
прозрачного сжатия страницы
. |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
WHERE SPACE = 26\G
*************************** 1. row ***************************
SPACE: 26
NAME: test/t1
FLAG: 0
ROW_FORMAT: Compact or Redundant
PAGE_SIZE: 16384
ZIP_PAGE_SIZE: 0
SPACE_TYPE: Single
FS_BLOCK_SIZE: 4096
FILE_SIZE: 98304
ALLOCATED_SIZE: 65536
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
- Нет никакого способа определить из этого целого числа флаги, если формат
строки табличного пространства Redundant или Compact. В результате возможные
значения для поля
ROW_FORMAT
Compressed или Dynamic.
Интерпретация значения столбца INNODB_SYS_TABLESPACES.FLAG
:
Столбец INNODB_SYS_TABLESPACES.FLAG предоставляет информацию
на разрядном уровне о формате табличного
пространства и характеристиках хранения.
Вы можете интерпретировать значение столбца FLAG , добавляя
вместе применимые десятичные числовые значения, которые
обеспечены в следующей таблице.
Таблица 22.26. Значения позиции двоичного разряда для интерпретации
данных о столбце INNODB_SYS_TABLESPACES FLAG
Позиция двоичного разряда |
Описание |
Десятичное числовое значение |
0 |
Этот бит установлен, если формат строки таблицы в табличном пространстве
DYNAMIC или COMPRESSED . Если бит не установлен,
формат строки таблицы в табличном пространстве может быть также
REDUNDANT или COMPACT . Если это табличное
пространство файла на таблицу, Вы можете запросить
INNODB_SYS_TABLES , чтобы определить формат строки
row format is REDUNDANT или COMPACT . |
|
1-4 | Эти четыре бита содержат небольшое число,
которое представляет сжатый размер страницы (KEY_BLOCK_SIZE или
физический размер блока) табличного пространства. |
0 - без сжатия.
- 2 - 1024 байта сжатый размер страницы
- 4 - 2048 байта сжатый размер страницы
- 6 - 4096 байта сжатый размер страницы
- 8 - 8192 байта сжатый размер страницы
- 10 - 16384 байта сжатый размер страницы
- 12 - 32768 байта сжатый размер страницы
- 14 - 65536 байта сжатый размер страницы
|
5 |
Этот бит установлен для табличных пространств файла на таблицу, если формат
строки таблицы DYNAMIC или COMPRESSED .
У общих табличных пространств, которые не содержат сжатые таблицы, будут
первые 6 бит установлены в 0, включая этот бит, указывая, что табличное
пространство содержит таблицы REDUNDANT или COMPACT
. Но фактически, общие табличные пространства могут содержать любую
комбинацию таблиц REDUNDANT , COMPACT и
DYNAMIC . Для получения дополнительной информации об общих
табличных пространствах см.
CREATE TABLESPACE . |
|
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)
22.30.25. Представление
INFORMATION_SCHEMA INNODB_SYS_TABLESTATS
Представление INNODB_SYS_TABLESTATS обеспечивает
представление низкоуровневой информации о статусе таблиц InnoDB .
Эти данные используются оптимизатором MySQL, чтобы вычислить, которые индексы
использовать, запрашивая таблицы InnoDB .
Эта информация получена из структур данных в памяти вместо того, чтобы
соответствовать данным, хранящимся на диске. Нет никакой внутренней
соответствующей системной таблицы InnoDB .
Таблицы InnoDB есть в этом представлении, если они были
открыты начиная с последнего перезапуска сервера, а не из табличного кэша.
Таблицы, для которых доступны постоянные статусы, всегда
есть в этом представлении.
Табличные статистические данные обновлены только для операций
DELETE или
UPDATE , которые изменяют
индексированные столбцы. Статистические данные не обновлены операциями,
которые изменяют только неиндексированные столбцы.
Таблица 22.27. Столбцы INNODB_SYS_TABLESTATS
Имя | Описание |
TABLE_ID |
Идентификатор, представляющий таблицу, для которой статистические данные
доступны, используя то же самое значение, как в
INNODB_SYS_TABLES.TABLE_ID . |
NAME |
Название таблицы, используя то же самое значение, как в
INNODB_SYS_TABLES.NAME . |
STATS_INITIALIZED |
Значение Initialized , если статистические данные уже собраны,
Uninitialized , если нет. |
NUM_ROWS |
Текущее число строк в таблице. Обновлено после каждой работы DML. Может быть
неточным, если нейтральные транзакции вставляют в или удаляют из таблицы.
|
CLUST_INDEX_SIZE |
Число страниц на диске, которые хранят кластеризируемый индекс, который
содержит табличные данные InnoDB в порядке первичного ключа.
Это значение могло бы быть нулем, если никакие статистические данные еще не
собраны для таблицы. |
OTHER_INDEX_SIZE |
Число страниц на диске, которые хранят все вторичные индексы для таблицы. Это
значение могло бы быть нулем, если никакие статистические данные еще не
собраны для таблицы. |
MODIFIED_COUNTER |
Число строк, измененных операциями DML, такими как
INSERT , UPDATE , DELETE и другими
каскадными операциями от внешних ключей. Этот столбец сброшен каждый раз,
когда статистика повторно вычислена. |
AUTOINC |
Следующее число, которое будет выпущено для любой операции с auto-increment.
|
REF_COUNT |
Когда этот счетчик достигает ноля, табличные метаданные могут быть удалены
из табличного кэша. |
Пример:
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
where TABLE_ID = 71\G
*************************** 1. row ***************************
TABLE_ID: 71
NAME: test/t1
STATS_INITIALIZED: Initialized
NUM_ROWS: 1
CLUST_INDEX_SIZE: 1
OTHER_INDEX_SIZE: 0
MODIFIED_COUNTER: 1
AUTOINC: 0
REF_COUNT: 1
22.30.26. Таблица
INFORMATION_SCHEMA INNODB_SYS_VIRTUAL
Таблица INNODB_SYS_VIRTUAL обеспечивает метаданные о
произведенных
виртуальных столбцах и столбцы эквивалентны информации в таблице
SYS_VIRTUAL словаря данных InnoDB .
Строка появляется в таблице INNODB_SYS_VIRTUAL для каждого
столбца, на котором базируется произведенный виртуальный столбец.
Таблица 22.28. Столбцы INNODB_SYS_VIRTUAL
Имя | Описание |
TABLE_ID |
Идентификатор, представляющий таблицу, связанный с виртуальным столбцом, то
же самое значение, как в INNODB_SYS_TABLES.TABLE_ID . |
POS |
Значение позиции
произведенного виртуального столбца. Значение является большим, потому
что оно кодирует порядковый номер столбца и порядковую позицию. Формула,
используемая, чтобы вычислить значение, использует битовую операцию. Формула
((n-ый виртуальный произведенный столбец для экземпляра instance + 1)
<< 16) + порядковая позиция произведенного виртуального столбца .
Например, если первый виртуальный произведенный столбец в InnoDB
третий столбец таблицы, формула (0 + 1) << 16) + 2.
Первый произведенный виртуальный столбец в InnoDB всегда имеет
номер 0. Так что третий столбец в таблице имеет порядковую позицию
произведенного виртуального столбца 2. Порядковые позиции посчитаны от 0.
|
BASE_POS |
Порядковая позиция столбцов, на которых базируется
произведенный виртуальный столбец. |
Пример:
mysql> CREATE TABLE `t1` (`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
`h` varchar(10) DEFAULT NULL) ENGINE=InnoDB
DEFAULT CHARSET=latin1;
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_VIRTUAL
WHERE TABLE_ID IN (SELECT TABLE_ID
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME
LIKE "test/t1");
+----------+-------+----------+
| TABLE_ID | POS | BASE_POS |
+----------+-------+----------+
| 45 | 65538 | 0 |
| 45 | 65538 | 1 |
+----------+-------+----------+
Если постоянная величина назначена на
произведенный
виртуальный столбец, как в следующем примере, вход для столбца не
появляется в таблице INNODB_SYS_VIRTUAL . Для появления
входа, у произведенного виртуального столбца должен быть основной столбец.
mysql> CREATE TABLE `t1` (`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) GENERATED ALWAYS AS (5) VIRTUAL)
ENGINE=InnoDB DEFAULT CHARSET=latin1;
Однако, метаданные для такого столбца появляются в таблице
INNODB_SYS_COLUMNS
.
- Используйте
DESCRIBE или
SHOW COLUMNS , чтобы
просмотреть дополнительную информацию о столбцах этих таблиц, включая типы
данных и значения по умолчанию.
- Вы должны иметь привилегию
PROCESS , чтобы
запросить эту таблицу.
22.30.27. Таблица
INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO
Таблица INNODB_TEMP_TABLE_INFO содержит метаданные об
активных временных таблицах InnoDB .
За исключением оптимизированных внутренних временных таблиц, используемых
InnoDB , INNODB_TEMP_TABLE_INFO выдает
отчеты обо всех пользовательских и создаваемых из системы временных таблицах,
которые являются активными в пределах данного экземпляра InnoDB .
Таблицы поддержаны в памяти и не сохранены на диск.
Таблица 22.29. Столбцы INNODB_TEMP_TABLE_INFO
Имя | Описание |
TABLE_ID |
Табличное ID активной временной таблицы. |
NAME |
Название активной временной таблицы. |
N_COLS |
Число столбцов во временной таблице. Число всегда включает три скрытых
столбца, создаваемые InnoDB
(DB_ROW_ID, DB_TRX_ID, and DB_ROLL_PTR). |
SPACE |
Идентификатор табличного пространства (численное значение) для табличного
пространства, в котором находится временная таблица. Все временные таблицы
InnoDB находятся в совместно используемом временном табличном
пространстве, как определено
innodb_temp_data_file_path . По умолчанию совместно используемое
временное табличное пространство называется ibtmp1 и расположено
в каталоге data . Сжатые временные таблицы находятся в отдельных
табличных пространствах на таблицу, расположенных во временном каталоге, как
определено tmpdir .
SPACE ID всегда ненулевое значение и динамически произведено
при перезапуске сервера. |
Пример:
mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 32
NAME: #sqlaf56_2_0
N_COLS: 4
SPACE: 19
1 row in set (0.00 sec)
22.30.28. Таблица
INFORMATION_SCHEMA INNODB_TRX
Таблица INNODB_TRX содержит информацию о каждой транзакции
(исключая транзакции только для чтения) в настоящее время выполняющиеся в
InnoDB , включая то, ждет ли транзакция блокировки и запрос SQL,
который транзакция выполняет, если есть.
Таблица 22.30. Столбцы INNODB_TRX
Имя | Описание |
TRX_ID |
Уникальный операционный идентификационный ID, внутренний для
InnoDB . Эти ID не создаются для транзакций, которые только для
чтения и без блокировки. См.
раздел 9.5.3. |
TRX_WEIGHT | Вес транзакции, исходя из
(но не обязательно точное количество) числа строк измененных и
заблокированных транзакцией. Чтобы решить тупик, InnoDB выбирает
транзакцию с самым маленьким весом как victim, чтобы откатить
назад. Транзакции, которые изменили нетранзакционные таблицы, считаются более
тяжелыми чем другие, независимо от числа измененных и заблокированных строк.
|
TRX_STATE |
Операционный режим выполнения. Разрешенные значения
RUNNING , LOCK WAIT , ROLLING BACK и
COMMITTING . |
TRX_STARTED | Время начала транзакции.
|
TRX_REQUESTED_LOCK_ID |
ID блокировки, которую транзакция в настоящее время ждет, если
TRX_STATE LOCK WAIT , иначе NULL .
Чтобы получить детали о блокировке, присоедините к этому столбцу столбец
ENGINE_LOCK_ID таблицы Performance Schema
data_locks . |
TRX_WAIT_STARTED |
Время, когда транзакция начала ждать блокировку, если TRX_STATE
LOCK WAIT , иначе NULL . |
TRX_MYSQL_THREAD_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
22.31. Расширения запроса SHOW
Некоторые расширения к SHOW
сопровождают выполнение INFORMATION_SCHEMA :
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 |
+---------+---------------------------+---------------------+--------+
|
|