SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
<Insert Picture Here>
Отладка производительности MySQL: дополнительные
материалы
Света Смирнова
Ведущий инженер технической поддержки MySQL
Пояснение
• Дополнительные материалы созданы с целью напомнить
слушателю о работе встроенных инструментов MySQL
• За основу взята текущая версия, рекомендуемая для
использования: 5.5
• Новые возможности, доступные в нестабильной версии,
опущены, так как цель мастер-класса — помочь в реальной
ситуации, а не в «прекрасном далёком»
• Данная шпаргалка предполагает, что слушатель знаком с
представленными инструментами и лишь структурирует
информацию.
• Детали и подробное описание доступны в официальном
руководстве пользователя MySQL по адресу
• http://dev.mysql.com/doc/refman/5.5/en/index.html
EXPLAIN
• mysql> explain extended select * from t1 join t2;
• +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
• | id | select_type | table | type  | possible_keys | key         | key_len | ref  | rows | filtered | Extra                                              |
• +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
• |  1 | SIMPLE      | t1    | index | NULL          | col_int_key | 5       | NULL |    4 |   100.00 | Using index                                        |
• |  1 | SIMPLE      | t2    | index | NULL          | col_int_key | 5       | NULL |    6 |   100.00 | Using index; Using join buffer (Block Nested Loop) |
• +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
• 2 rows in set, 1 warning (0.00 sec)
•
• Note (Code 1003): /* select#1 */ select `test`.`t1`.`col_int_key` AS `col_int_key`,`test`.`t1`.`pk` AS `pk`,`test`.`t2`.`col_int_key` AS `col_int_key`,`test`.`t2`.`pk` 
AS `pk` from `test`.`t1` join `test`.`t2`
Во что реально был преобразован запрос
Номер SELECT-а
Тип SELECT-а
Таблица, для которой выдаётся информация в данной строке
Тип доступа к данным
Возможные ключи
Ключ, который реально был использован
Длина ключа
Какие стоблцы сравнивались с индексом
Количество просмотренных строк
% строк, который будет отфильтрован
rows × filtered / 100 — количество строк, которые будут объединены с предыдущей таблицей
Дополнительная информация
Произведение строк в этом столбце: сколько строк будет просмотрено всего
Для данного примера приблизительное значение — 4*6 = 24
EXPLAIN: что обозначает поле type
Название Описание
system В таблице одна строка
const В таблице только одна строка, соответствующая выбранному условию, которая может
быть выбрана по уникальному ключу: WHERE primary_key=CONST
eq_ref Только одна строка будет прочитана для каждой комбинации строк предыдущих таблиц.
Применяется в JOIN-ах по уникальному NOT NULL ключу при сравнениях при помощи
знака =
ref Все строки, необходимые для соединения, могут быть прочитаны при помощи
неуникального ключа или первых нескольких знаков ключа при сравнениях = и <=>
fulltext Поиск по полнотекстовому ключу
ref_or_null То же, что и ref, но с дополнительным поиском строк со значением NULL:
WHERE key_column=expr OR key_column IS NULL
index_merge Использована оптимизация Index Merge: поиск по нескольким ключам.
unique_subquery Подзапрос IN, выбирающий значения по первичному ключу, был заменён более
эффективной функцией поиска по индексу
index_subquery Подзапрос IN, выбирающий значения по неуникальному ключу, был заменён более
эффективной функцией поиска по индексу
range Будут возвращены только строки, выбранные из определённого набора значений. Поиск
происходит по индексу. Применяется для операций сравнения =, <>, >, >=, <, <=, IS NULL,
<=>, BETWEEN, IN()
index Будет просмотрен индекс целиком
ALL Будет просмотрена вся таблица
EXPLAIN: что обозначает поле Extra
Содержимое поля Описание
const row not found Пустая таблица
Distinct Поиск прекращается после первого значения подходящего
под условие, так ищутся уникальные значения
Full scan on NULL key Для выполнения подзапроса индексне может быть
использован
Impossible HAVING Условие HAVING всегда ложно
Impossible WHERE Условие WHERE всегда ложно
Impossible WHERE noticed after reading const tables Условие WHERE всегда ложно для указанных const и system
условий.
No matching min/max row Не найдено строки, удовлетворяющей условию SELECT
MIN()/MAX() ... WHERE
no matching row in const table Для запроса с JOIN не найдено строк, удовлетворяющих
условию по уникальному ключу
No tables used Запрос не использует таблиц (запрос без FROM или с FROM
DUAL)
Not exist Оптимизация LEFT JOIN: для каждой строки из левой таблицы
будет просмотрена единственная строка из правой,
независимо, есть ли в ней более одного совпадения
Range checked for each record (index map: N) MySQL не нашёл подходящего индекса, но нашёл, что индекс
может быть использован после нахождения данных из
предыдущих таблиц
EXPLAIN: что обозначает поле Extra
Содержимое поля Описание
Scanned N databases Оптимизация запросов к INFORMATION_SCHEMA: сколько
директорий просмотрено для выполнения запроса
Select tables optimized away Запрос содержит только агрегирующие функции, которые
могут быть выполнены без просмотра таблиц (по индексу)
Skip_open_table, Open_frm_only, Open_trigger_only,
Open_full_table
Оптимизация запросов к INFORMATION_SCHEMA
unique row not found Нет строк, удовлетворяющих условию по уникальному ключу
Using filesort MySQL нужно сделать дополнительную работу, чтобы
возвратить строки в отсортированном порядке. Filesort не
всегда обозначает использование файлов: сортировка может
производиться полностью в памяти
Using index Результат запроса может быть возвращён только из индекса
без доступа к таблице (SELECT ind_col ... WHERE ind_cond
Using index for group-by Только индекс используется для получение результата
запросов GROUP BY или DISTINCT
Using join buffer Данные из соединяемых таблиц сначала считываются в JOIN
BUFFER, затем происходит объединение
Using sort_union(...), Using union(...), Using intersect(...) Как индексы соединяются для оптимизации index_merge
Using temporary Для выполнения запроса создаётся временная таблица
Using where Для выборки используется условие WHERE
Переменные Handler_%
Название Описание
Handler_commit Количество запросов COMMIT
Handler_delete Сколько раз строки были удалены из таблицы. Удобно для наблюдения за тем, как выполняется
запрос DELETE из большой таблицы
Handler_prepare Счётчик PREPARE для двухфазных операций COMMIT
Handler_read_first Сколько раз прочитана первая строка из индекса. Может быть индикатором full index scan
Handler_read_key Количество запросов на чтение строки на основании записей в ключе. Индикатор правильного
использования индексов.
Handler_read_last Сколько раз прочитана последняя строка из индекса.
Handler_read_next Количество чтений следующей по порядку строки индекса
Handler_read_prev Количество чтений предыдущей по порядку строки индекса
Handler_read_rnd Количество запросов чтения строки на основе фиксированной позиции. Индикатор запросов,
требующих сортировки или же объединений, не использующих индекс
Handler_read_rnd_next Количество запросов на чтение следующей строки из таблицы. Индикатор full table scan и
неправильного использования индексов
Handler_rollback Количество запросов ROLLBACK
Handler_savepoint Количество запросов SAVEPOINT
Handler_savepoint_rollback Количество запросов ROLLBACK до SAVEPOINT
Handler_update Количество запросов на обновление строк.
Handler_write Количество запросов на запись строки в таблицу.
SHOW [FULL] PROCESSLIST
• mysql> show full processlist;
• +­­­­+­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
• | Id | User | Host            | db   | Command | Time | State      | Info                               |
• +­­­­+­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
• |  3 | root | localhost       | test | Query   |    0 | init       | show full processlist              |
• |  1 | root | localhost:51051 | test | Query   |    5 | User sleep | select * from t2 where sleep(10)=0 |
• +­­­­+­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
• 2 rows in set (0.00 sec)
Full — вывод полного запроса
MySQL thread ID (ид соединения)
Время выполнения
Тип операции
База данных
Состояние
Что происходит. Например, выполняемый запрос.
Хост
Пользователь
SHOW INDEX
• mysql> show index from tind;
• +­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­­+
• | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
• +­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­­+
• | tind  |          0 | PRIMARY  |            1 | id          | A         |           6 |     NULL | NULL   |      | BTREE      |         |               |
• | tind  |          1 | f1       |            1 | f1          | A         |           6 |     NULL | NULL   | YES  | BTREE      |         | someone       |
• | tind  |          1 | f2       |            1 | f2          | NULL      |           6 |     NULL | NULL   | YES  | FULLTEXT   |         |               |
• +­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­­+
• 3 rows in set (0.01 sec)
Название таблицы
Тип индекса
Пользовательский комментарий
(при создании индекса)
Как ключ упакован
Сколько значений частично проиндексировано
Дозволен ли NULL
Дополнительная информация
(например, disabled)
Количество уникальных значений
Как отсортированы значения.
А — в порядке возрастания
NULL — не отсортированы
Название колонки
Порядковый номер. Имеет значение для индекса по нескольким полям
Название индекса
Уникален ли индекс? 0 - уникален
Optimizer switches
Название Описание
index_merge Включена ли оптимизация поиска по нескольким
ключам
index_merge_intersection Оптимизация пересечений: условие AND
Пример: key_col1 < 10 AND key_col2 = 'foo'
index_merge_union Оптимизация объединений: условие OR
Пример: key_col1 = 'foo' OR (key_col2 = 
'bar' AND key_col3 = 'baz')
index_merge_sort_union Оптимизация объединений, при которых
index_merge_union применён быть не может
Пример: (key_col1 > 10 OR key_col2 = 'bar') 
AND key_col3 = 'baz'
Таблицы INFORMATION_SCHEMA.INNODB_%
Название Описание
INNODB_TRX Транзакции, которые выполняются в настоящий
момент
INNODB_LOCKS Блокировки, удерживаемые транзакциями в
настоящий момент
INNODB_LOCK_WAITS Блокировки, которых ждут транзакции в данный
момент
INNODB_CMP Информация о сжатых таблицах
INNODB_CMP_RESET Информация о сжатых таблицах. Информация
сбрасывается после запроса. Использовать для
отслеживания изменений.
INNODB_CMPMEM Информация о сжатых страницах
INNODB_CMPMEM_RESET Информация о сжатых страницах. Информация
сбрасывается после запроса. Использовать для
отслеживания изменений.
ENGINE INNODB STATUS
Название Описание
BACKGROUND THREAD Активность background thread
SEMAPHORES Внутренние семафоры. Например, при
CHECK TABLE
TRANSACTIONS Текущие транзакции
FILE I/O Операции ввода-вывода, все
внутренние нити
INSERT BUFFER AND ADAPTIVE HASH
INDEX
Использование insert буфера и adaptive
hash index
LOG Операции с InnoDB log файлами
BUFFER POOL AND MEMORY Использование InnoDB buffer pool и
памяти
ROW OPERATIONS Строковые операции, статистика
Буфера, влияющие на производительность
Название Описание
join_buffer_size Объединения и table scans. Выделяется для каждых двух таблиц в JOIN
net_buffer_length Буфер для каждого соединения, содержит запросы и их результаты.
query_prealloc_size Для обработки запроса. Чем длиннее запрос, тем больше должен быть этот буфер.
read_buffer_size Для каждого последовательного сканирования таблицы
read_rnd_buffer_size Буфер для сортировки результатов. Сказывается на производительности ORDER BY
sort_buffer_size Буфер, выделяемый для каждой сортировки
sql_buffer_result Если установлен, сервер сохраняет результат каждого запроса во временной таблице.
Позволяет быстрее освободить блокировки.
thread_cache_size Количество нитей, созданных для обработки соединений, которое может быть
использовано повторно.
thread_stack Размер стэка для каждой нити. Если слишком маленькое, сложные запросы и
рекурсивные процедуры могут быть отклонены
tmp_table_size Максимальный размер для внутренних служебных таблиц в памяти: по достижении этого
размера конвертируются на диск
query_cache_size Размер кэша запросов. Не рекомендуется устанавливать более 100 MB
table_definition_cache Сколько определений таблиц хранить в кэше
table_open_cache Сколько дескрипторов таблиц хранить в кэше
SHOW GLOBAL STATUS: производительность
Название Описание
Aborted_clients, Aborted_connects Отключённые клиенты и соединения
Binlog_[stmt_]cache_use, Binlog_[stmt_]cache_disk_use Активность использования Binlog cache
Bytes_received, Bytes_sent Трафик
Com_* Статистика по запросам и командам (INIT DB при соединении, ...)
Created_tmp_[disk_]tables, Created_tmp_files Статистика по внутренним временным таблицам и файлам
Handler_* См. раньше
Innodb_* Статистика InnoD: buffer pool, lor, i/o операции, другое
Key_blocks_* Статистика использования ключей
Open_*, Opened_* Открытые файлы, таблицы и т.п. Opened — с начала работы.
Если Open равно размеру соответствующего буфера, а Opened
велико, подумайте над увеличением буфера
Qcache_* Статистика использования Query cache
Connections, Queries, Questions Количество соединений и запросов, Queries содержит запросы из
хранимых процедур, Questions - нет
Select_*, Sort_* Статистика для запросов SELECT и сортировок
Table_locks_* Табличные блокировки
Threads_* Статистика по соединениям
Таблицы в Performance Schema
Название Описание
cond_instances Состояния с начала запуска сервера (напр.,
wait/synch/cond/sql/DEBUG_SYNC::cond)
events_waits_current Какой блокировки ждёт каждая нить.
events_waits_history Последние performance_schema_events_waits_history_size ожиданий
events_waits_history_long Последние performance_schema_events_waits_history_long_size ожиданий
events_waits_summary_by_instance Агрегатор ожиданий по инстанциям (напр.,
wait/synch/mutex/sql/LOCK_uuid_generator)
events_waits_summary_by_thread_by_event_name Агрегатор ожиданий по нитям и названиям (напр.,
wait/synch/mutex/sql/PAGE::lock)
events_waits_summary_global_by_event_name Глобальный агрегатор ожиданий по названиям,без привязки к нитям.
file_instances Список однажды открытых файлов
file_summary_by_event_name Агрегатор файловых операций по событиям ( wait/io/file/sql/map)
file_summary_by_instance Агрегатор файловых операций по имени файла
mutex_instances Список мутексов. С ненулевым LOCKED_BY_THREAD_ID - текущие.
performance_timers Типы таймеров.
rwlock_instances Блокировки ввода-вывода.
setup_consumers Настройки: включён ли вывод в соответствующую таблицу.
setup_instruments Настройки: какие события отслеживать.
setup_timers Настройки: какой таймер используется.
threads Все внутренние нити сервера (не путать с соединениями).
The preceding is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.

Weitere ähnliche Inhalte

Ähnlich wie Troubleshooting my sql_performance_addons

Query perfomance tuning
Query perfomance tuningQuery perfomance tuning
Query perfomance tuningcollabock
 
Оптимизации скорости выполнения запросов
Оптимизации скорости выполнения запросовОптимизации скорости выполнения запросов
Оптимизации скорости выполнения запросовAlex.Kolonitsky
 
бд шпора2
бд шпора2бд шпора2
бд шпора2elgin690
 
Обзор полезных функций и приемов в Excel
Обзор полезных функций и приемов в ExcelОбзор полезных функций и приемов в Excel
Обзор полезных функций и приемов в ExcelTanya Mikhalchenko
 
0042
00420042
0042JIuc
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьTanya Denisyuk
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest
 
СУБД осень 2012 лекция 7
СУБД осень 2012 лекция 7СУБД осень 2012 лекция 7
СУБД осень 2012 лекция 7Technopark
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. RussianRawan Qurmet
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьphp-user-group-minsk
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
0043
00430043
0043JIuc
 
Базы данных лекция №7
Базы данных лекция №7Базы данных лекция №7
Базы данных лекция №7Vitaliy Pak
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
Индексы в MySQL
Индексы в MySQLИндексы в MySQL
Индексы в MySQLPavel Zyukin
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL Sergey Xek
 

Ähnlich wie Troubleshooting my sql_performance_addons (20)

Query perfomance tuning
Query perfomance tuningQuery perfomance tuning
Query perfomance tuning
 
Оптимизации скорости выполнения запросов
Оптимизации скорости выполнения запросовОптимизации скорости выполнения запросов
Оптимизации скорости выполнения запросов
 
бд шпора2
бд шпора2бд шпора2
бд шпора2
 
Обзор полезных функций и приемов в Excel
Обзор полезных функций и приемов в ExcelОбзор полезных функций и приемов в Excel
Обзор полезных функций и приемов в Excel
 
24 25 запросы
24 25 запросы24 25 запросы
24 25 запросы
 
Stat 3 alpha
Stat 3 alphaStat 3 alpha
Stat 3 alpha
 
Stat 1 alpha
Stat 1 alphaStat 1 alpha
Stat 1 alpha
 
0042
00420042
0042
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQLCodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
CodeFest 2013. Аверин С. — MySQL+HandlerSocket=NoSQL
 
СУБД осень 2012 лекция 7
СУБД осень 2012 лекция 7СУБД осень 2012 лекция 7
СУБД осень 2012 лекция 7
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. Russian
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
My sql 0
My sql 0My sql 0
My sql 0
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
0043
00430043
0043
 
Базы данных лекция №7
Базы данных лекция №7Базы данных лекция №7
Базы данных лекция №7
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
Индексы в MySQL
Индексы в MySQLИндексы в MySQL
Индексы в MySQL
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL
 

Mehr von Sveta Smirnova

Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringSveta Smirnova
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveSveta Smirnova
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersSveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговSveta Smirnova
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessSveta Smirnova
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOpsSveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterSveta Smirnova
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsSveta Smirnova
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Sveta Smirnova
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?Sveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraSveta Smirnova
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?Sveta Smirnova
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Sveta Smirnova
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...Sveta Smirnova
 
Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQLSveta Smirnova
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Sveta Smirnova
 

Mehr von Sveta Smirnova (20)

Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and Monitoring
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to Have
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for Developers
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации багов
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your Business
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]s
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOps
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tears
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with Galera
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]s
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
 
Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQL
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?
 

Troubleshooting my sql_performance_addons

  • 1. <Insert Picture Here> Отладка производительности MySQL: дополнительные материалы Света Смирнова Ведущий инженер технической поддержки MySQL
  • 2. Пояснение • Дополнительные материалы созданы с целью напомнить слушателю о работе встроенных инструментов MySQL • За основу взята текущая версия, рекомендуемая для использования: 5.5 • Новые возможности, доступные в нестабильной версии, опущены, так как цель мастер-класса — помочь в реальной ситуации, а не в «прекрасном далёком» • Данная шпаргалка предполагает, что слушатель знаком с представленными инструментами и лишь структурирует информацию. • Детали и подробное описание доступны в официальном руководстве пользователя MySQL по адресу • http://dev.mysql.com/doc/refman/5.5/en/index.html
  • 3. EXPLAIN • mysql> explain extended select * from t1 join t2; • +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ • | id | select_type | table | type  | possible_keys | key         | key_len | ref  | rows | filtered | Extra                                              | • +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ • |  1 | SIMPLE      | t1    | index | NULL          | col_int_key | 5       | NULL |    4 |   100.00 | Using index                                        | • |  1 | SIMPLE      | t2    | index | NULL          | col_int_key | 5       | NULL |    6 |   100.00 | Using index; Using join buffer (Block Nested Loop) | • +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ • 2 rows in set, 1 warning (0.00 sec) • • Note (Code 1003): /* select#1 */ select `test`.`t1`.`col_int_key` AS `col_int_key`,`test`.`t1`.`pk` AS `pk`,`test`.`t2`.`col_int_key` AS `col_int_key`,`test`.`t2`.`pk`  AS `pk` from `test`.`t1` join `test`.`t2` Во что реально был преобразован запрос Номер SELECT-а Тип SELECT-а Таблица, для которой выдаётся информация в данной строке Тип доступа к данным Возможные ключи Ключ, который реально был использован Длина ключа Какие стоблцы сравнивались с индексом Количество просмотренных строк % строк, который будет отфильтрован rows × filtered / 100 — количество строк, которые будут объединены с предыдущей таблицей Дополнительная информация Произведение строк в этом столбце: сколько строк будет просмотрено всего Для данного примера приблизительное значение — 4*6 = 24
  • 4. EXPLAIN: что обозначает поле type Название Описание system В таблице одна строка const В таблице только одна строка, соответствующая выбранному условию, которая может быть выбрана по уникальному ключу: WHERE primary_key=CONST eq_ref Только одна строка будет прочитана для каждой комбинации строк предыдущих таблиц. Применяется в JOIN-ах по уникальному NOT NULL ключу при сравнениях при помощи знака = ref Все строки, необходимые для соединения, могут быть прочитаны при помощи неуникального ключа или первых нескольких знаков ключа при сравнениях = и <=> fulltext Поиск по полнотекстовому ключу ref_or_null То же, что и ref, но с дополнительным поиском строк со значением NULL: WHERE key_column=expr OR key_column IS NULL index_merge Использована оптимизация Index Merge: поиск по нескольким ключам. unique_subquery Подзапрос IN, выбирающий значения по первичному ключу, был заменён более эффективной функцией поиска по индексу index_subquery Подзапрос IN, выбирающий значения по неуникальному ключу, был заменён более эффективной функцией поиска по индексу range Будут возвращены только строки, выбранные из определённого набора значений. Поиск происходит по индексу. Применяется для операций сравнения =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN() index Будет просмотрен индекс целиком ALL Будет просмотрена вся таблица
  • 5. EXPLAIN: что обозначает поле Extra Содержимое поля Описание const row not found Пустая таблица Distinct Поиск прекращается после первого значения подходящего под условие, так ищутся уникальные значения Full scan on NULL key Для выполнения подзапроса индексне может быть использован Impossible HAVING Условие HAVING всегда ложно Impossible WHERE Условие WHERE всегда ложно Impossible WHERE noticed after reading const tables Условие WHERE всегда ложно для указанных const и system условий. No matching min/max row Не найдено строки, удовлетворяющей условию SELECT MIN()/MAX() ... WHERE no matching row in const table Для запроса с JOIN не найдено строк, удовлетворяющих условию по уникальному ключу No tables used Запрос не использует таблиц (запрос без FROM или с FROM DUAL) Not exist Оптимизация LEFT JOIN: для каждой строки из левой таблицы будет просмотрена единственная строка из правой, независимо, есть ли в ней более одного совпадения Range checked for each record (index map: N) MySQL не нашёл подходящего индекса, но нашёл, что индекс может быть использован после нахождения данных из предыдущих таблиц
  • 6. EXPLAIN: что обозначает поле Extra Содержимое поля Описание Scanned N databases Оптимизация запросов к INFORMATION_SCHEMA: сколько директорий просмотрено для выполнения запроса Select tables optimized away Запрос содержит только агрегирующие функции, которые могут быть выполнены без просмотра таблиц (по индексу) Skip_open_table, Open_frm_only, Open_trigger_only, Open_full_table Оптимизация запросов к INFORMATION_SCHEMA unique row not found Нет строк, удовлетворяющих условию по уникальному ключу Using filesort MySQL нужно сделать дополнительную работу, чтобы возвратить строки в отсортированном порядке. Filesort не всегда обозначает использование файлов: сортировка может производиться полностью в памяти Using index Результат запроса может быть возвращён только из индекса без доступа к таблице (SELECT ind_col ... WHERE ind_cond Using index for group-by Только индекс используется для получение результата запросов GROUP BY или DISTINCT Using join buffer Данные из соединяемых таблиц сначала считываются в JOIN BUFFER, затем происходит объединение Using sort_union(...), Using union(...), Using intersect(...) Как индексы соединяются для оптимизации index_merge Using temporary Для выполнения запроса создаётся временная таблица Using where Для выборки используется условие WHERE
  • 7. Переменные Handler_% Название Описание Handler_commit Количество запросов COMMIT Handler_delete Сколько раз строки были удалены из таблицы. Удобно для наблюдения за тем, как выполняется запрос DELETE из большой таблицы Handler_prepare Счётчик PREPARE для двухфазных операций COMMIT Handler_read_first Сколько раз прочитана первая строка из индекса. Может быть индикатором full index scan Handler_read_key Количество запросов на чтение строки на основании записей в ключе. Индикатор правильного использования индексов. Handler_read_last Сколько раз прочитана последняя строка из индекса. Handler_read_next Количество чтений следующей по порядку строки индекса Handler_read_prev Количество чтений предыдущей по порядку строки индекса Handler_read_rnd Количество запросов чтения строки на основе фиксированной позиции. Индикатор запросов, требующих сортировки или же объединений, не использующих индекс Handler_read_rnd_next Количество запросов на чтение следующей строки из таблицы. Индикатор full table scan и неправильного использования индексов Handler_rollback Количество запросов ROLLBACK Handler_savepoint Количество запросов SAVEPOINT Handler_savepoint_rollback Количество запросов ROLLBACK до SAVEPOINT Handler_update Количество запросов на обновление строк. Handler_write Количество запросов на запись строки в таблицу.
  • 8. SHOW [FULL] PROCESSLIST • mysql> show full processlist; • +­­­­+­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ • | Id | User | Host            | db   | Command | Time | State      | Info                               | • +­­­­+­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ • |  3 | root | localhost       | test | Query   |    0 | init       | show full processlist              | • |  1 | root | localhost:51051 | test | Query   |    5 | User sleep | select * from t2 where sleep(10)=0 | • +­­­­+­­­­­­+­­­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ • 2 rows in set (0.00 sec) Full — вывод полного запроса MySQL thread ID (ид соединения) Время выполнения Тип операции База данных Состояние Что происходит. Например, выполняемый запрос. Хост Пользователь
  • 9. SHOW INDEX • mysql> show index from tind; • +­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­­+ • | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | • +­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­­+ • | tind  |          0 | PRIMARY  |            1 | id          | A         |           6 |     NULL | NULL   |      | BTREE      |         |               | • | tind  |          1 | f1       |            1 | f1          | A         |           6 |     NULL | NULL   | YES  | BTREE      |         | someone       | • | tind  |          1 | f2       |            1 | f2          | NULL      |           6 |     NULL | NULL   | YES  | FULLTEXT   |         |               | • +­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­­­­+ • 3 rows in set (0.01 sec) Название таблицы Тип индекса Пользовательский комментарий (при создании индекса) Как ключ упакован Сколько значений частично проиндексировано Дозволен ли NULL Дополнительная информация (например, disabled) Количество уникальных значений Как отсортированы значения. А — в порядке возрастания NULL — не отсортированы Название колонки Порядковый номер. Имеет значение для индекса по нескольким полям Название индекса Уникален ли индекс? 0 - уникален
  • 10. Optimizer switches Название Описание index_merge Включена ли оптимизация поиска по нескольким ключам index_merge_intersection Оптимизация пересечений: условие AND Пример: key_col1 < 10 AND key_col2 = 'foo' index_merge_union Оптимизация объединений: условие OR Пример: key_col1 = 'foo' OR (key_col2 =  'bar' AND key_col3 = 'baz') index_merge_sort_union Оптимизация объединений, при которых index_merge_union применён быть не может Пример: (key_col1 > 10 OR key_col2 = 'bar')  AND key_col3 = 'baz'
  • 11. Таблицы INFORMATION_SCHEMA.INNODB_% Название Описание INNODB_TRX Транзакции, которые выполняются в настоящий момент INNODB_LOCKS Блокировки, удерживаемые транзакциями в настоящий момент INNODB_LOCK_WAITS Блокировки, которых ждут транзакции в данный момент INNODB_CMP Информация о сжатых таблицах INNODB_CMP_RESET Информация о сжатых таблицах. Информация сбрасывается после запроса. Использовать для отслеживания изменений. INNODB_CMPMEM Информация о сжатых страницах INNODB_CMPMEM_RESET Информация о сжатых страницах. Информация сбрасывается после запроса. Использовать для отслеживания изменений.
  • 12. ENGINE INNODB STATUS Название Описание BACKGROUND THREAD Активность background thread SEMAPHORES Внутренние семафоры. Например, при CHECK TABLE TRANSACTIONS Текущие транзакции FILE I/O Операции ввода-вывода, все внутренние нити INSERT BUFFER AND ADAPTIVE HASH INDEX Использование insert буфера и adaptive hash index LOG Операции с InnoDB log файлами BUFFER POOL AND MEMORY Использование InnoDB buffer pool и памяти ROW OPERATIONS Строковые операции, статистика
  • 13. Буфера, влияющие на производительность Название Описание join_buffer_size Объединения и table scans. Выделяется для каждых двух таблиц в JOIN net_buffer_length Буфер для каждого соединения, содержит запросы и их результаты. query_prealloc_size Для обработки запроса. Чем длиннее запрос, тем больше должен быть этот буфер. read_buffer_size Для каждого последовательного сканирования таблицы read_rnd_buffer_size Буфер для сортировки результатов. Сказывается на производительности ORDER BY sort_buffer_size Буфер, выделяемый для каждой сортировки sql_buffer_result Если установлен, сервер сохраняет результат каждого запроса во временной таблице. Позволяет быстрее освободить блокировки. thread_cache_size Количество нитей, созданных для обработки соединений, которое может быть использовано повторно. thread_stack Размер стэка для каждой нити. Если слишком маленькое, сложные запросы и рекурсивные процедуры могут быть отклонены tmp_table_size Максимальный размер для внутренних служебных таблиц в памяти: по достижении этого размера конвертируются на диск query_cache_size Размер кэша запросов. Не рекомендуется устанавливать более 100 MB table_definition_cache Сколько определений таблиц хранить в кэше table_open_cache Сколько дескрипторов таблиц хранить в кэше
  • 14. SHOW GLOBAL STATUS: производительность Название Описание Aborted_clients, Aborted_connects Отключённые клиенты и соединения Binlog_[stmt_]cache_use, Binlog_[stmt_]cache_disk_use Активность использования Binlog cache Bytes_received, Bytes_sent Трафик Com_* Статистика по запросам и командам (INIT DB при соединении, ...) Created_tmp_[disk_]tables, Created_tmp_files Статистика по внутренним временным таблицам и файлам Handler_* См. раньше Innodb_* Статистика InnoD: buffer pool, lor, i/o операции, другое Key_blocks_* Статистика использования ключей Open_*, Opened_* Открытые файлы, таблицы и т.п. Opened — с начала работы. Если Open равно размеру соответствующего буфера, а Opened велико, подумайте над увеличением буфера Qcache_* Статистика использования Query cache Connections, Queries, Questions Количество соединений и запросов, Queries содержит запросы из хранимых процедур, Questions - нет Select_*, Sort_* Статистика для запросов SELECT и сортировок Table_locks_* Табличные блокировки Threads_* Статистика по соединениям
  • 15. Таблицы в Performance Schema Название Описание cond_instances Состояния с начала запуска сервера (напр., wait/synch/cond/sql/DEBUG_SYNC::cond) events_waits_current Какой блокировки ждёт каждая нить. events_waits_history Последние performance_schema_events_waits_history_size ожиданий events_waits_history_long Последние performance_schema_events_waits_history_long_size ожиданий events_waits_summary_by_instance Агрегатор ожиданий по инстанциям (напр., wait/synch/mutex/sql/LOCK_uuid_generator) events_waits_summary_by_thread_by_event_name Агрегатор ожиданий по нитям и названиям (напр., wait/synch/mutex/sql/PAGE::lock) events_waits_summary_global_by_event_name Глобальный агрегатор ожиданий по названиям,без привязки к нитям. file_instances Список однажды открытых файлов file_summary_by_event_name Агрегатор файловых операций по событиям ( wait/io/file/sql/map) file_summary_by_instance Агрегатор файловых операций по имени файла mutex_instances Список мутексов. С ненулевым LOCKED_BY_THREAD_ID - текущие. performance_timers Типы таймеров. rwlock_instances Блокировки ввода-вывода. setup_consumers Настройки: включён ли вывод в соответствующую таблицу. setup_instruments Настройки: какие события отслеживать. setup_timers Настройки: какой таймер используется. threads Все внутренние нити сервера (не путать с соединениями).
  • 16. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.