SlideShare a Scribd company logo
Отладка производительности СУБД MySQL
За полчаса
29 ноября 2016
Света Смирнова
∙
Инженер тех. поддержки MySQL
∙ Автор
∙ MySQL Troubleshooting
∙ JSON UDF функции
∙ FILTER clause для MySQL
∙ Докладчик
∙ Percona Live, OOW, Fosdem,
DevConf, ...
Света Смирнова
2
Как рассказать за полчаса?
∙
Плохо написанные запросы
∙ SELECT * FROM many_columns_table
Отладка или настройка производительности?
4
∙
Плохо написанные запросы
∙
Таблицы со странной структурой
∙ Не нормализованы
∙ Десятки столбцов типа "Characteristic N"
Отладка или настройка производительности?
4
∙
Плохо написанные запросы
∙
Таблицы со странной структурой
∙
При отладке поздно улучшать дизайн
Отладка или настройка производительности?
4
∙
Плохо написанные запросы
∙
Таблицы со странной структурой
∙
При отладке поздно улучшать дизайн
∙
Причины использовать "плохие практики"
∙ Legacy приложение
∙ Де-нормализация для ускорения SELECT-ов
∙
Другие
Отладка или настройка производительности?
4
Connectors: C, JDBC, ODBC, Python, ...
Connection Pool: Authentication, Caches
SQL interface
Parser
Optimizer
Caches and Buffers:
Global
Engine-specific
Storage engines: InnoDB, TokuDB, ...
File system: Data, Index, logs, other files
∙
Коннекторы
∙
Оптимизатор
∙
Кэш и буферы
∙
Управление
∙
Табличные движки
∙ Файловая система
∙
Журналы
∙ Данные
Необходимое про архитектуру MySQL
5
Запрос
С чего начать?
6
Запрос
Блокировки
С чего начать?
7
Запрос
Блокировки
Оборудование
С чего начать?
8
Запрос
БлокировкиОборудование
Запрос
9
∙
Журналы вашего приложения
Как найти медленный запрос?
10
∙
Журналы вашего приложения
∙
General query log
Как найти медленный запрос?
10
∙
Журналы вашего приложения
∙
General query log
∙
Slow query log
Как найти медленный запрос?
10
∙
Журналы вашего приложения
∙
General query log
∙
Slow query log
∙
performance_schema.events_statements_*
Как найти медленный запрос?
10
∙
Журналы вашего приложения
∙
General query log
∙
Slow query log
∙
performance_schema.events_statements_*
∙
Scriptable Proxies
Как найти медленный запрос?
10
∙
Журналы вашего приложения
∙
General query log
∙
Slow query log
∙
performance_schema.events_statements_*
∙
Scriptable Proxies
∙ Audit Plugin
Как найти медленный запрос?
10
∙
Журналы вашего приложения
∙
General query log
∙
Slow query log
∙
performance_schema.events_statements_*
∙
Scriptable Proxies
∙ Audit Plugin
∙ Жалобы пользователей
Как найти медленный запрос?
10
Запрос отправлен
Connection Pool: Авторизация, Caches; SQL-интерфейс; Parser
Optimizer
Storage engines
Hardware
Схема выполнения запроса
11
mysql> explain extended select * from t1 join t2 where t1.int_key=1;
+----+-------------+-------+-------+---------------+---------+---------+-------+------+------+---------
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | f... | Extra
+----+-------------+-------+-------+---------------+---------+---------+-------+------+------+---------
| 1 | SIMPLE | t1 | ref | int_key,ik | int_key | 5 | const | 4 | 100. | NULL
| 1 | SIMPLE | t2 | index | NULL | pk | 9 | NULL | 6 | 100. | Using in
Using join
(Block Nest
+----+-------------+-------+-------+---------------+---------+---------+-------+------+------+---------
2 rows in set, 1 warning (0.00 sec)
Note (Code 1003): /* select#1 */ select ‘test‘.‘t1‘.‘pk‘ AS ‘pk‘,‘test‘.‘t1‘.‘int_key‘ AS ‘int_key‘,‘te
AS ‘pk‘,‘test‘.‘t2‘.‘int_key‘ AS ‘int_key‘ from ‘test‘.‘t1‘ join ‘test‘.‘t2‘ where (‘test‘.‘t1‘.‘int_ke
Номер запроса
Тип запроса
Таблицы, для которых выведена информация
Как данные выбираются
Возможные ключи
Использованный ключ
Длина ключа
Какие строки сравнивались с ключом
Сколько строк просмотрено
% отфильтрованных строк
rows x filtered / 100 — строки,
которые будут объединены с другой таблицей
Дополнительная информация
Таблица, для которой выведена информация
Сколько строк должно быть просмотрено
Здесь 4*6 = 24
Оптимизированный запрос
MySQL EXPLAIN: общее представление
12
∙
EXTENDED
Расширения EXPLAIN
13
∙
EXTENDED
∙
PARTITIONS
Расширения EXPLAIN
13
∙
EXTENDED
∙
PARTITIONS
∙
FORMAT=JSON
Расширения EXPLAIN
13
∙ I_S.OPTIMIZER_TRACE
Другие инструменты
14
∙ I_S.OPTIMIZER_TRACE
∙ Handler_%
Другие инструменты
14
∙ I_S.OPTIMIZER_TRACE
∙ Handler_%
∙ ANALYZE (Только в MariaDB)
Другие инструменты
14
∙ I_S.OPTIMIZER_TRACE
∙ Handler_%
∙ ANALYZE (Только в MariaDB)
∙
PROCESSLIST
Другие инструменты
14
∙ I_S.OPTIMIZER_TRACE
∙ Handler_%
∙ ANALYZE (Только в MariaDB)
∙
PROCESSLIST
∙ PERFORMANCE_SCHEMA и sys schema
∙ EVENTS_STAGES_*
∙
EVENTS_STATEMENTS_*
Другие инструменты
14
∙ I_S.OPTIMIZER_TRACE
∙ Handler_%
∙ ANALYZE (Только в MariaDB)
∙
PROCESSLIST
∙ PERFORMANCE_SCHEMA и sys schema
∙ EVENTS_STAGES_*
∙
EVENTS_STATEMENTS_*
∙ SHOW INDEX
Другие инструменты
14
∙
ANALYZE TABLE
Особенности MySQL
15
∙
ANALYZE TABLE
∙
optimizer_switch
Особенности MySQL
15
∙
ANALYZE TABLE
∙
optimizer_switch
∙
optimizer_prune_level
Особенности MySQL
15
∙
ANALYZE TABLE
∙
optimizer_switch
∙
optimizer_prune_level
∙
optimizer_search_depth
Особенности MySQL
15
∙
ANALYZE TABLE
∙
optimizer_switch
∙
optimizer_prune_level
∙
optimizer_search_depth
∙
Index hints: FORCE, USE, IGNORE INDEX
Особенности MySQL
15
∙
ANALYZE TABLE
∙
optimizer_switch
∙
optimizer_prune_level
∙
optimizer_search_depth
∙
Index hints: FORCE, USE, IGNORE INDEX
∙ Optimizer hints
Особенности MySQL
15
Запрос
Блокировки
Оборудование
Блокировки
16
∙ Блокировки метаданных (MDL)
Какие виды блокировок поддерживает MySQL?
17
∙ Блокировки метаданных (MDL)
∙ Табличные блокировки
Какие виды блокировок поддерживает MySQL?
17
∙ Блокировки метаданных (MDL)
∙ Табличные блокировки
∙ Устанавливаемые табличным движком
∙
Построчные
∙ Могут быть любыми или может не быть
вообще
Какие виды блокировок поддерживает MySQL?
17
Запрос отправлен
Уровень сервера: MDL и табличные блокировки
Уровень движка: построчные; любые другие, поддерживаемые движком
Уровень оборудования: мы можем ими управлять только косвенно
Запрос: когда устанавливаются блокировки
18
∙ Уровень сервера
∙ MDL: транзакционные
∙ Табличные: нет
∙ Уровень движка
∙ Табличные
∙ Построчные
∙ Любые поддерживаемые
Блокировки и транзакции
19
∙
MDL
∙
Какое соединение ждёт освобождения MDL?∙ SHOW PROCESSLIST - 5.5+
I_S.PROCESSLIST - 5.5+
P_S.THREADS - 5.7+
P_S.METADATA_LOCKS - 5.7+
Диагностика
20
∙
MDL
∙
Какое соединение ждёт освобождения MDL?
∙
Что держит MDL? - 5.7+
mysql> select processlist_id pid, object_type, lock_type, lock_status, source
-> from metadata_locks join threads on (owner_thread_id = thread_id)
-> where object_schema=’employees’ and object_name=’titles’;
+–––––+–––––––––––––+–––––––––––––––––––+–––––––––––––+–––––––––––––––––––+
| pid | object_type | lock_type | lock_status | source |
+–––––+–––––––––––––+–––––––––––––––––––+–––––––––––––+–––––––––––––––––––+
| 2 | TABLE | SHARED_READ | GRANTED | sql_parse.cc:5937 |
| 3 | TABLE | SHARED_UPGRADABLE | GRANTED | sql_parse.cc:5937 |
| 3 | TABLE | EXCLUSIVE | PENDING | mdl.cc:3889 |
+–––––+–––––––––––––+–––––––––––––––––––+–––––––––––––+–––––––––––––––––––+
3 rows in set (0,00 sec)
Диагностика
20
∙
MDL
∙
Табличные
∙ Что ждёт освобождения табличной
блокировки?
SHOW PROCESSLIST
I_S.PROCESSLIST - 5.1+
P_S.THREADS - 5.7 +
P_S.TABLE_HANDLES - 5.7+
Диагностика
20
∙
MDL
∙
Табличные
∙ Что ждёт освобождения табличной
блокировки?
∙ Что держит блокировку?
P_S.TABLE_HANDLES
SHOW ENGINE INNODB STATUS - Table scan и подобные операции
Диагностика
20
∙
MDL
∙
Табличные
∙
Построчные InnoDB
∙ Что ждёт освобождения блокировки?
∙
INNODB_LOCK_WAITS
InnoDB Monitor (SHOW ENGINE INNODB STATUS)
InnoDB Lock Monitor
Диагностика
20
∙
MDL
∙
Табличные
∙
Построчные InnoDB
∙ Что ждёт освобождения блокировки?
∙
Что держит построчную блокировку InnoDB?
∙ INNODB_LOCK_WAITS
InnoDB Monitor
InnoDB Lock Monitor
Диагностика
20
∙
MDL
∙
Табличные
∙
Построчные InnoDB
∙ Что ждёт освобождения блокировки?
∙
Что держит построчную блокировку InnoDB?
∙ Компактное представление
∙ I_S.INNODB_LOCKS
Нет информации о том что ждёт и что держит!
Диагностика
20
∙
MDL
∙
Табличные
∙
Построчные InnoDB
∙ Что ждёт освобождения блокировки?
∙
Что держит построчную блокировку InnoDB?
∙ Компактное представление
∙
Диагностика deadlock-ов
InnoDB Monitors
innodb_print_all_deadlocks - запись в error log
Диагностика
20
ЗапросБлокировки
Оборудование
Оборудование и настройки
21
∙
Нехватка ресурсов
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
∙ OOM killer убивает процесс mysqld
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
∙ OOM killer убивает процесс mysqld
∙ MySQL не использует имеющиеся ресурсы
∙
Сервер "зависает"
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
∙ OOM killer убивает процесс mysqld
∙ MySQL не использует имеющиеся ресурсы
∙
Сервер "зависает"
∙ Запросы выполняются медленно
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
∙ OOM killer убивает процесс mysqld
∙ MySQL не использует имеющиеся ресурсы
∙
Сервер "зависает"
∙ Запросы выполняются медленно
∙ Крэши
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
∙ OOM killer убивает процесс mysqld
∙ MySQL не использует имеющиеся ресурсы
∙
Сервер "зависает"
∙ Запросы выполняются медленно
∙ Крэши
∙ Вообще-то это хорошее и дорогое
оборудование!
Основные проблемы с оборудованием
22
∙
Нехватка ресурсов
∙
Сервер "зависает"
∙
Запросы выполняются медленно
∙ OOM killer убивает процесс mysqld
∙ MySQL не использует имеющиеся ресурсы
∙ Нагрузка в самом деле небольшая
Основные проблемы с оборудованием
22
∙ Память
∙ Процессор
∙ Диск
∙
Сеть
Какое оборудование использует MySQL?
23
∙ Глобальные буферы
∙ Выделяются при старте
∙
Никогда не освобождаются
Как сервер MySQL использует память?
24
∙ Глобальные буферы
∙ Буферы соединений
∙ Выделяются для каждого соединения
∙
Освобождаются при закрытии
Как сервер MySQL использует память?
24
∙ Глобальные буферы
∙ Буферы соединений
∙ Буферы, специфические для операций
∙
Выделяются под операцию
join_buffer_size - для каждой таблицы в JOIN
tmp_table_size - для каждой временной таблицы
...
∙ Освобождаются при завершении
Как сервер MySQL использует память?
24
∙ Глобальные буферы
∙ Буферы соединений
∙ Буферы, специфические для операций
∙
"Внутренние" буферы
∙ Пользователь не может контролировать
Как сервер MySQL использует память?
24
∙ Только в 5.7+!
∙ Глобальная статистика
mysql> select thread_id tid, user, current_allocated ca, total_allocated
-> from sys.memory_by_thread_by_current_bytes;
+–––––+–––––––––––––––––––––––––+–––––––––––––+–––––––––––––––––+
| tid | user | ca | total_allocated |
+–––––+–––––––––––––––––––––––––+–––––––––––––+–––––––––––––––––+
| 1 | sql/main | 2.53 GiB | 2.69 GiB |
| 150 | root@127.0.0.1 | 4.06 MiB | 32.17 MiB |
| 146 | sql/slave_sql | 1.31 MiB | 1.44 MiB |
| 145 | sql/slave_io | 1.08 MiB | 2.79 MiB |
...
| 60 | innodb/io_read_thread | 0 bytes | 384 bytes |
+–––––+–––––––––––––––––––––––––+–––––––––––––+–––––––––––––––––+
145 rows in set (2.65 sec)
Встроенная диагностика
25
∙ Только в 5.7+!
∙ Глобальная статистика
∙ Статистика по thread-ам
mysql> select * from sys.memory_by_thread_by_current_bytes
-> order by current_allocated descG
*************************** 1. row ***************************
thread_id: 152
user: lj@127.0.0.1
current_count_used: 325
current_allocated: 36.00 GiB
current_avg_alloc: 113.43 MiB
current_max_alloc: 36.00 GiB
total_allocated: 37.95 GiB
...
Встроенная диагностика
25
∙ Параллельные thread-ы
∙ Соединения
∙ InnoDB threads
Как MySQL использует процессор?
26
∙ Параллельные thread-ы
∙ Соединения
∙ InnoDB threads
∙
Ввод-вывод
Как MySQL использует процессор?
26
∙ P_S.THREADS table
mysql> select thread_id, processlist_id, thread_os_id, type, name from threads;
+–––––––––––+––––––––––––––––+––––––––––––––+––––––––––––+––––––––––––––––––––––––––––––––––+
| thread_id | processlist_id | thread_os_id | type | name |
+–––––––––––+––––––––––––––––+––––––––––––––+––––––––––––+––––––––––––––––––––––––––––––––––+
| 1 | NULL | 17983 | BACKGROUND | thread/sql/main |
| 2 | NULL | 17984 | BACKGROUND | thread/sql/thread_timer_notifier |
| 3 | NULL | 17985 | BACKGROUND | thread/innodb/io_ibuf_thread |
...
| 23 | 2 | 18009 | FOREGROUND | thread/sql/one_connection |
| 24 | 3 | 18011 | FOREGROUND | thread/sql/one_connection |
+–––––––––––+––––––––––––––––+––––––––––––––+––––––––––––+––––––––––––––––––––––––––––––––––+
Внутренняя диагностика CPU
27
∙ Данные в таблицах
Что пишется на диск?
28
∙ Данные в таблицах
∙ Файлы журналов
∙ Binary
∙ Движка
InnoDB Redo Log Files
∙ General, Audit
Что пишется на диск?
28
∙ Данные в таблицах
∙ Файлы журналов
∙ Binary
∙ Движка
InnoDB Redo Log Files
∙ General, Audit
∙ Временные таблицы, не помещающиеся в
память
Что пишется на диск?
28
∙ Временные таблицы и файлы
∙ Created_tmp_disk_tables
∙
Created_tmp_files
Диагностика IO: status-переменные
29
∙ Временные таблицы и файлы
∙ Данные
∙ Binlog_[stmt_]cache_disk_use
∙
Bytes_[received|sent]
∙ Handler_write
Диагностика IO: status-переменные
29
∙ Временные таблицы и файлы
∙ Данные
∙ Открытые файлы и таблицы
∙ Open[ed]_files
∙
Open[ed]_tables
∙
Open[ed]_table_definitions
Диагностика IO: status-переменные
29
∙ Временные таблицы и файлы
∙ Данные
∙ Открытые файлы и таблицы
∙
InnoDB ввод-вывод
∙ Innodb_..._fsyncs
∙ Innodb_..._reads
∙
Innodb_..._writes
∙ Innodb_..._written
Диагностика IO: status-переменные
29
∙ file_instances
mysql> select * from file_instances where OPEN_COUNT > 0G
*************************** 1. row ***************************
FILE_NAME: /home/sveta/build/mysql-5.7/mysql-test/var/mysqld.1/data/ibdata1
EVENT_NAME: wait/io/file/innodb/innodb_data_file
OPEN_COUNT: 3
*************************** 2. row ***************************
FILE_NAME: /home/sveta/build/mysql-5.7/mysql-test/var/mysqld.1/data/ib_logfile0
EVENT_NAME: wait/io/file/innodb/innodb_log_file
OPEN_COUNT: 2
*************************** 3. row ***************************
FILE_NAME: /home/sveta/build/mysql-5.7/mysql-test/var/mysqld.1/data/ib_logfile1
EVENT_NAME: wait/io/file/innodb/innodb_log_file
OPEN_COUNT: 2
...
Диагностика IO: Performance Schema
30
∙ file_instances
∙ table_handles
mysql> select OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME from table_handlesG
*************************** 1. row ***************************
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: employees
OBJECT_NAME: dept_emp
*************************** 2. row ***************************
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: employees
OBJECT_NAME: dept_emp
...
Диагностика IO: Performance Schema
30
∙ file_instances
∙ table_handles
∙ events_statements_*,
prepared_statements_instances
∙
CREATED_TMP_DISK_TABLES
Диагностика IO: Performance Schema
30
∙ Сообщения между клиентом и сервером
∙
Обычный клиент
Как MySQL использует сеть?
31
∙ Сообщения между клиентом и сервером
∙
Обычный клиент
∙ Приложение
Как MySQL использует сеть?
31
∙ Сообщения между клиентом и сервером
∙
Обычный клиент
∙ Приложение
∙ Replication IO thread
Как MySQL использует сеть?
31
∙ Сообщения между клиентом и сервером
∙
Обычный клиент
∙ Приложение
∙ Replication IO thread
∙ Трафик между нодами PXC
Как MySQL использует сеть?
31
∙ –log-warnings=2
∙ ∙ Не так много информации как хочется
∙
Обрывы соединений
Встроенная диагностика сети
32
∙ –log-warnings=2
∙ Status-переменные
∙
Aborted_clients
∙ Aborted_connects
Встроенная диагностика сети
32
∙ Таблицы accounts, users, hosts
mysql> select user, host, current_connections as cur,
-> total_connections as total from accounts;
+––––––+–––––––––––+–––––+–––––––+
| user | host | cur | total |
+––––––+–––––––––––+–––––+–––––––+
| foo | localhost | 0 | 3 |
| root | localhost | 1 | 3 |
| NULL | NULL | 14 | 17 |
+––––––+–––––––––––+–––––+–––––––+
3 rows in set (0.01 sec)
Диагностика в Performance Schema
33
∙ Таблицы accounts, users, hosts
∙ Connection attributes
mysql> SELECT ATTR_NAME, ATTR_VALUE FROM session_account_connect_attrs
-> WHERE processlist_id != @@pseudo_thread_id;
+–––––––––––––––––+–––––––––––––––––––––––––––––––––––––––––+
| ATTR_NAME | ATTR_VALUE |
+–––––––––––––––––+–––––––––––––––––––––––––––––––––––––––––+
| _os | Linux |
| _client_name | libmysql |
| _pid | 4729 |
| program_name | Troubleshooting webinars |
| _platform | x86_64 |
| session | Troubleshooting hardware resource usage |
| author | Sveta Smirnova |
| _client_version | 5.7.12 |
+–––––––––––––––––+–––––––––––––––––––––––––––––––––––––––––+
Диагностика в Performance Schema
33
∙ Таблицы accounts, users, hosts
∙ Connection attributes
∙ Host Cache
∙ Содержимое DNS кэша
∙
Ошибки: Name Server, соединений,
авторизации, max_connect_errors,
max_user_errors и т.д.
Диагностика в Performance Schema
33
∙ Глобальные
∙ Контролируют параметры, необходимые для
всего сервера
Размещение файлов: datadir и т.п.
Совместно используемые буфера
Другие
Системные переменные: сфера действия
34
∙ Глобальные
∙ Контролируют параметры, необходимые для
всего сервера
Размещение файлов: datadir и т.п.
Совместно используемые буфера
Другие
∙ Сессионные
∙
Контролируют параметры, имеющие
отношение к открытой сессии
Системные переменные: сфера действия
34
∙ Глобальные
∙ Контролируют параметры, необходимые для
всего сервера
Размещение файлов: datadir и т.п.
Совместно используемые буфера
Другие
∙ Сессионные
∙
Контролируют параметры, имеющие
отношение к открытой сессии
∙ MySQL option tables
Системные переменные: сфера действия
34
Итоги
∙
Тестируйте!
∙ Отладку можно начинать с любого места
∙ Медленные запросы
∙ Блокировки
∙
Настройки
∙ Оборудование
∙ Итерации!
Итоги
36
∙
Медленные запросы
∙ EXPLAIN Syntax
∙ EXPLAIN FORMAT=JSON is Cool!
∙
Дополнительные материалы к семинару
∙
Optimizer Hints
∙ Custom Hint Plugin
∙ Troubleshooting Slow Queries webinar
Больше информации
37
∙
Медленные запросы
∙
Блокировки
∙
InnoDB Locking Explained With Stick Figures
∙ InnoDB блокировки в официальном
руководстве
∙
Типы блокировок InnoDB
∙
Разбираемся с блокировками в MySQL Server
∙ Troubleshooting Locking Issues webinar
Больше информации
37
∙ Медленные запросы
∙ Блокировки
∙
Оборудование
∙ Linux Performance by Brendan D. Gregg
∙
Memory Summary tables in Performance Schema
∙ Troubleshooting hardware resource usage webinar
Больше информации
37
∙ Медленные запросы
∙ Блокировки
∙ Оборудование
∙ Настройки
∙ MySQL Option Tables
∙
List of variables introduced in Percona Server
∙ Galera Cluster System Variables
∙ Troubleshooting configuration issues webinar
Больше информации
37
∙ Медленные запросы
∙ Блокировки
∙ Оборудование
∙ Настройки
∙ Обо всём∙ Книги
MySQL Trouleshooting
High Performance MySQL
∙ Блоги
Planet MySQL
Percona Data Performance Blog
Больше информации
37
???
Место для ваших вопросов
38
http://www.slideshare.net/SvetaSmirnova
https://twitter.com/svetsmirnova
https://github.com/svetasmirnova
Спасибо!
39
DATABASE PERFORMANCE
MATTERS

More Related Content

What's hot

MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZEMySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
Norvald Ryeng
 
Replication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDReplication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTID
Mydbops
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육
Sangmo Kim
 
Intel® RDT Hands-on Lab
Intel® RDT Hands-on LabIntel® RDT Hands-on Lab
Intel® RDT Hands-on Lab
Michelle Holley
 
MySQL Timeout Variables Explained
MySQL Timeout Variables Explained MySQL Timeout Variables Explained
MySQL Timeout Variables Explained
Mydbops
 
MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)
NeoClova
 
Efficient Pagination Using MySQL
Efficient Pagination Using MySQLEfficient Pagination Using MySQL
Efficient Pagination Using MySQL
Evan Weaver
 
Backup para MySQL
Backup para MySQLBackup para MySQL
Backup para MySQL
Marcelo Altmann
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
NeoClova
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
NeoClova
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
Daniel T. Lee
 
Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018
Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018
Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018
Alexis Ducastel
 
X86opti 05 s5yata
X86opti 05 s5yataX86opti 05 s5yata
X86opti 05 s5yata
s5yata
 
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on KamailioAstricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Crocodile WebRTC SDK and Cloud Signalling Network
 
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleThe Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
Colin Charles
 
Dba oracle-v1
Dba oracle-v1Dba oracle-v1
Dba oracle-v1infcom
 
Dd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublinDd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublin
Ståle Deraas
 
EnterpriseDB's Best Practices for Postgres DBAs
EnterpriseDB's Best Practices for Postgres DBAsEnterpriseDB's Best Practices for Postgres DBAs
EnterpriseDB's Best Practices for Postgres DBAs
EDB
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
PgDay.Seoul
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
NAVER D2
 

What's hot (20)

MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZEMySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
 
Replication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTIDReplication Troubleshooting in Classic VS GTID
Replication Troubleshooting in Classic VS GTID
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육
 
Intel® RDT Hands-on Lab
Intel® RDT Hands-on LabIntel® RDT Hands-on Lab
Intel® RDT Hands-on Lab
 
MySQL Timeout Variables Explained
MySQL Timeout Variables Explained MySQL Timeout Variables Explained
MySQL Timeout Variables Explained
 
MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)MariaDB 10.5 binary install (바이너리 설치)
MariaDB 10.5 binary install (바이너리 설치)
 
Efficient Pagination Using MySQL
Efficient Pagination Using MySQLEfficient Pagination Using MySQL
Efficient Pagination Using MySQL
 
Backup para MySQL
Backup para MySQLBackup para MySQL
Backup para MySQL
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018
Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018
Fonctionnalites et performances des cni pour Kubernetes - devops d-day 2018
 
X86opti 05 s5yata
X86opti 05 s5yataX86opti 05 s5yata
X86opti 05 s5yata
 
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on KamailioAstricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
 
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleThe Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
 
Dba oracle-v1
Dba oracle-v1Dba oracle-v1
Dba oracle-v1
 
Dd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublinDd and atomic ddl pl17 dublin
Dd and atomic ddl pl17 dublin
 
EnterpriseDB's Best Practices for Postgres DBAs
EnterpriseDB's Best Practices for Postgres DBAsEnterpriseDB's Best Practices for Postgres DBAs
EnterpriseDB's Best Practices for Postgres DBAs
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 

Viewers also liked

Резервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условияхРезервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условиях
Sveta Smirnova
 
Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Ontico
 
Open Source SQL databases enters millions queries per second era
Open Source SQL databases enters millions queries per second eraOpen Source SQL databases enters millions queries per second era
Open Source SQL databases enters millions queries per second era
Sveta Smirnova
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
Sveta Smirnova
 
WiredTiger In-Memory vs WiredTiger B-Tree
WiredTiger In-Memory vs WiredTiger B-TreeWiredTiger In-Memory vs WiredTiger B-Tree
WiredTiger In-Memory vs WiredTiger B-Tree
Sveta Smirnova
 
Жизнь, удивительные приключения и смерть бага MySQL
Жизнь, удивительные приключения и смерть бага MySQLЖизнь, удивительные приключения и смерть бага MySQL
Жизнь, удивительные приключения и смерть бага MySQL
Sveta Smirnova
 
Preparse Query Rewrite Plugins
Preparse Query Rewrite PluginsPreparse Query Rewrite Plugins
Preparse Query Rewrite Plugins
Sveta Smirnova
 
Why Use EXPLAIN FORMAT=JSON?
 Why Use EXPLAIN FORMAT=JSON?  Why Use EXPLAIN FORMAT=JSON?
Why Use EXPLAIN FORMAT=JSON?
Sveta Smirnova
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in action
Sveta Smirnova
 
MySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAsMySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAs
Sveta Smirnova
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data Analysis
Sveta Smirnova
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
Sveta Smirnova
 

Viewers also liked (12)

Резервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условияхРезервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условиях
 
Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)
 
Open Source SQL databases enters millions queries per second era
Open Source SQL databases enters millions queries per second eraOpen Source SQL databases enters millions queries per second era
Open Source SQL databases enters millions queries per second era
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
WiredTiger In-Memory vs WiredTiger B-Tree
WiredTiger In-Memory vs WiredTiger B-TreeWiredTiger In-Memory vs WiredTiger B-Tree
WiredTiger In-Memory vs WiredTiger B-Tree
 
Жизнь, удивительные приключения и смерть бага MySQL
Жизнь, удивительные приключения и смерть бага MySQLЖизнь, удивительные приключения и смерть бага MySQL
Жизнь, удивительные приключения и смерть бага MySQL
 
Preparse Query Rewrite Plugins
Preparse Query Rewrite PluginsPreparse Query Rewrite Plugins
Preparse Query Rewrite Plugins
 
Why Use EXPLAIN FORMAT=JSON?
 Why Use EXPLAIN FORMAT=JSON?  Why Use EXPLAIN FORMAT=JSON?
Why Use EXPLAIN FORMAT=JSON?
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in action
 
MySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAsMySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAs
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data Analysis
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 

Similar to Отладка производительности СУБД MySQL

Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Ontico
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
DevDay
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
Sveta Smirnova
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Tanya Denisyuk
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Sveta Smirnova
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Alexandre Kalendarev
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
IT-Portfolio
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Badoo Development
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.
Sergey Petrunya
 
Обработка дедлоков в MySql
Обработка дедлоков в MySqlОбработка дедлоков в MySql
Обработка дедлоков в MySqlspariev
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
Alexey Ermakov
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)
Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)
Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)
Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Devconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresDevconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresSergey Petrunya
 

Similar to Отладка производительности СУБД MySQL (20)

Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.
 
Обработка дедлоков в MySql
Обработка дедлоков в MySqlОбработка дедлоков в MySql
Обработка дедлоков в MySql
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)
Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)
Контроль качества высоконагруженных систем / Андрей Дроздов (Avito)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Devconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresDevconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-features
 

More from Sveta Smirnova

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
Sveta Smirnova
 
Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and Monitoring
Sveta 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 Have
Sveta Smirnova
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for Developers
Sveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
Sveta 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 Business
Sveta 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]s
Sveta Smirnova
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOps
Sveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
Sveta 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 Cluster
Sveta 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 tears
Sveta 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 Galera
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
 
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
Sveta 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
 
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
 

More from Sveta Smirnova (20)

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
 
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 ...
 
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?
 

Отладка производительности СУБД MySQL

  • 1. Отладка производительности СУБД MySQL За полчаса 29 ноября 2016 Света Смирнова
  • 2. ∙ Инженер тех. поддержки MySQL ∙ Автор ∙ MySQL Troubleshooting ∙ JSON UDF функции ∙ FILTER clause для MySQL ∙ Докладчик ∙ Percona Live, OOW, Fosdem, DevConf, ... Света Смирнова 2
  • 4. ∙ Плохо написанные запросы ∙ SELECT * FROM many_columns_table Отладка или настройка производительности? 4
  • 5. ∙ Плохо написанные запросы ∙ Таблицы со странной структурой ∙ Не нормализованы ∙ Десятки столбцов типа "Characteristic N" Отладка или настройка производительности? 4
  • 6. ∙ Плохо написанные запросы ∙ Таблицы со странной структурой ∙ При отладке поздно улучшать дизайн Отладка или настройка производительности? 4
  • 7. ∙ Плохо написанные запросы ∙ Таблицы со странной структурой ∙ При отладке поздно улучшать дизайн ∙ Причины использовать "плохие практики" ∙ Legacy приложение ∙ Де-нормализация для ускорения SELECT-ов ∙ Другие Отладка или настройка производительности? 4
  • 8. Connectors: C, JDBC, ODBC, Python, ... Connection Pool: Authentication, Caches SQL interface Parser Optimizer Caches and Buffers: Global Engine-specific Storage engines: InnoDB, TokuDB, ... File system: Data, Index, logs, other files ∙ Коннекторы ∙ Оптимизатор ∙ Кэш и буферы ∙ Управление ∙ Табличные движки ∙ Файловая система ∙ Журналы ∙ Данные Необходимое про архитектуру MySQL 5
  • 13. ∙ Журналы вашего приложения Как найти медленный запрос? 10
  • 14. ∙ Журналы вашего приложения ∙ General query log Как найти медленный запрос? 10
  • 15. ∙ Журналы вашего приложения ∙ General query log ∙ Slow query log Как найти медленный запрос? 10
  • 16. ∙ Журналы вашего приложения ∙ General query log ∙ Slow query log ∙ performance_schema.events_statements_* Как найти медленный запрос? 10
  • 17. ∙ Журналы вашего приложения ∙ General query log ∙ Slow query log ∙ performance_schema.events_statements_* ∙ Scriptable Proxies Как найти медленный запрос? 10
  • 18. ∙ Журналы вашего приложения ∙ General query log ∙ Slow query log ∙ performance_schema.events_statements_* ∙ Scriptable Proxies ∙ Audit Plugin Как найти медленный запрос? 10
  • 19. ∙ Журналы вашего приложения ∙ General query log ∙ Slow query log ∙ performance_schema.events_statements_* ∙ Scriptable Proxies ∙ Audit Plugin ∙ Жалобы пользователей Как найти медленный запрос? 10
  • 20. Запрос отправлен Connection Pool: Авторизация, Caches; SQL-интерфейс; Parser Optimizer Storage engines Hardware Схема выполнения запроса 11
  • 21. mysql> explain extended select * from t1 join t2 where t1.int_key=1; +----+-------------+-------+-------+---------------+---------+---------+-------+------+------+--------- | id | select_type | table | type | possible_keys | key | key_len | ref | rows | f... | Extra +----+-------------+-------+-------+---------------+---------+---------+-------+------+------+--------- | 1 | SIMPLE | t1 | ref | int_key,ik | int_key | 5 | const | 4 | 100. | NULL | 1 | SIMPLE | t2 | index | NULL | pk | 9 | NULL | 6 | 100. | Using in Using join (Block Nest +----+-------------+-------+-------+---------------+---------+---------+-------+------+------+--------- 2 rows in set, 1 warning (0.00 sec) Note (Code 1003): /* select#1 */ select ‘test‘.‘t1‘.‘pk‘ AS ‘pk‘,‘test‘.‘t1‘.‘int_key‘ AS ‘int_key‘,‘te AS ‘pk‘,‘test‘.‘t2‘.‘int_key‘ AS ‘int_key‘ from ‘test‘.‘t1‘ join ‘test‘.‘t2‘ where (‘test‘.‘t1‘.‘int_ke Номер запроса Тип запроса Таблицы, для которых выведена информация Как данные выбираются Возможные ключи Использованный ключ Длина ключа Какие строки сравнивались с ключом Сколько строк просмотрено % отфильтрованных строк rows x filtered / 100 — строки, которые будут объединены с другой таблицей Дополнительная информация Таблица, для которой выведена информация Сколько строк должно быть просмотрено Здесь 4*6 = 24 Оптимизированный запрос MySQL EXPLAIN: общее представление 12
  • 27. ∙ I_S.OPTIMIZER_TRACE ∙ Handler_% ∙ ANALYZE (Только в MariaDB) Другие инструменты 14
  • 28. ∙ I_S.OPTIMIZER_TRACE ∙ Handler_% ∙ ANALYZE (Только в MariaDB) ∙ PROCESSLIST Другие инструменты 14
  • 29. ∙ I_S.OPTIMIZER_TRACE ∙ Handler_% ∙ ANALYZE (Только в MariaDB) ∙ PROCESSLIST ∙ PERFORMANCE_SCHEMA и sys schema ∙ EVENTS_STAGES_* ∙ EVENTS_STATEMENTS_* Другие инструменты 14
  • 30. ∙ I_S.OPTIMIZER_TRACE ∙ Handler_% ∙ ANALYZE (Только в MariaDB) ∙ PROCESSLIST ∙ PERFORMANCE_SCHEMA и sys schema ∙ EVENTS_STAGES_* ∙ EVENTS_STATEMENTS_* ∙ SHOW INDEX Другие инструменты 14
  • 36. ∙ ANALYZE TABLE ∙ optimizer_switch ∙ optimizer_prune_level ∙ optimizer_search_depth ∙ Index hints: FORCE, USE, IGNORE INDEX ∙ Optimizer hints Особенности MySQL 15
  • 38. ∙ Блокировки метаданных (MDL) Какие виды блокировок поддерживает MySQL? 17
  • 39. ∙ Блокировки метаданных (MDL) ∙ Табличные блокировки Какие виды блокировок поддерживает MySQL? 17
  • 40. ∙ Блокировки метаданных (MDL) ∙ Табличные блокировки ∙ Устанавливаемые табличным движком ∙ Построчные ∙ Могут быть любыми или может не быть вообще Какие виды блокировок поддерживает MySQL? 17
  • 41. Запрос отправлен Уровень сервера: MDL и табличные блокировки Уровень движка: построчные; любые другие, поддерживаемые движком Уровень оборудования: мы можем ими управлять только косвенно Запрос: когда устанавливаются блокировки 18
  • 42. ∙ Уровень сервера ∙ MDL: транзакционные ∙ Табличные: нет ∙ Уровень движка ∙ Табличные ∙ Построчные ∙ Любые поддерживаемые Блокировки и транзакции 19
  • 43. ∙ MDL ∙ Какое соединение ждёт освобождения MDL?∙ SHOW PROCESSLIST - 5.5+ I_S.PROCESSLIST - 5.5+ P_S.THREADS - 5.7+ P_S.METADATA_LOCKS - 5.7+ Диагностика 20
  • 44. ∙ MDL ∙ Какое соединение ждёт освобождения MDL? ∙ Что держит MDL? - 5.7+ mysql> select processlist_id pid, object_type, lock_type, lock_status, source -> from metadata_locks join threads on (owner_thread_id = thread_id) -> where object_schema=’employees’ and object_name=’titles’; +–––––+–––––––––––––+–––––––––––––––––––+–––––––––––––+–––––––––––––––––––+ | pid | object_type | lock_type | lock_status | source | +–––––+–––––––––––––+–––––––––––––––––––+–––––––––––––+–––––––––––––––––––+ | 2 | TABLE | SHARED_READ | GRANTED | sql_parse.cc:5937 | | 3 | TABLE | SHARED_UPGRADABLE | GRANTED | sql_parse.cc:5937 | | 3 | TABLE | EXCLUSIVE | PENDING | mdl.cc:3889 | +–––––+–––––––––––––+–––––––––––––––––––+–––––––––––––+–––––––––––––––––––+ 3 rows in set (0,00 sec) Диагностика 20
  • 45. ∙ MDL ∙ Табличные ∙ Что ждёт освобождения табличной блокировки? SHOW PROCESSLIST I_S.PROCESSLIST - 5.1+ P_S.THREADS - 5.7 + P_S.TABLE_HANDLES - 5.7+ Диагностика 20
  • 46. ∙ MDL ∙ Табличные ∙ Что ждёт освобождения табличной блокировки? ∙ Что держит блокировку? P_S.TABLE_HANDLES SHOW ENGINE INNODB STATUS - Table scan и подобные операции Диагностика 20
  • 47. ∙ MDL ∙ Табличные ∙ Построчные InnoDB ∙ Что ждёт освобождения блокировки? ∙ INNODB_LOCK_WAITS InnoDB Monitor (SHOW ENGINE INNODB STATUS) InnoDB Lock Monitor Диагностика 20
  • 48. ∙ MDL ∙ Табличные ∙ Построчные InnoDB ∙ Что ждёт освобождения блокировки? ∙ Что держит построчную блокировку InnoDB? ∙ INNODB_LOCK_WAITS InnoDB Monitor InnoDB Lock Monitor Диагностика 20
  • 49. ∙ MDL ∙ Табличные ∙ Построчные InnoDB ∙ Что ждёт освобождения блокировки? ∙ Что держит построчную блокировку InnoDB? ∙ Компактное представление ∙ I_S.INNODB_LOCKS Нет информации о том что ждёт и что держит! Диагностика 20
  • 50. ∙ MDL ∙ Табличные ∙ Построчные InnoDB ∙ Что ждёт освобождения блокировки? ∙ Что держит построчную блокировку InnoDB? ∙ Компактное представление ∙ Диагностика deadlock-ов InnoDB Monitors innodb_print_all_deadlocks - запись в error log Диагностика 20
  • 54. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно Основные проблемы с оборудованием 22
  • 55. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ OOM killer убивает процесс mysqld Основные проблемы с оборудованием 22
  • 56. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ OOM killer убивает процесс mysqld ∙ MySQL не использует имеющиеся ресурсы ∙ Сервер "зависает" Основные проблемы с оборудованием 22
  • 57. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ OOM killer убивает процесс mysqld ∙ MySQL не использует имеющиеся ресурсы ∙ Сервер "зависает" ∙ Запросы выполняются медленно Основные проблемы с оборудованием 22
  • 58. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ OOM killer убивает процесс mysqld ∙ MySQL не использует имеющиеся ресурсы ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ Крэши Основные проблемы с оборудованием 22
  • 59. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ OOM killer убивает процесс mysqld ∙ MySQL не использует имеющиеся ресурсы ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ Крэши ∙ Вообще-то это хорошее и дорогое оборудование! Основные проблемы с оборудованием 22
  • 60. ∙ Нехватка ресурсов ∙ Сервер "зависает" ∙ Запросы выполняются медленно ∙ OOM killer убивает процесс mysqld ∙ MySQL не использует имеющиеся ресурсы ∙ Нагрузка в самом деле небольшая Основные проблемы с оборудованием 22
  • 61. ∙ Память ∙ Процессор ∙ Диск ∙ Сеть Какое оборудование использует MySQL? 23
  • 62. ∙ Глобальные буферы ∙ Выделяются при старте ∙ Никогда не освобождаются Как сервер MySQL использует память? 24
  • 63. ∙ Глобальные буферы ∙ Буферы соединений ∙ Выделяются для каждого соединения ∙ Освобождаются при закрытии Как сервер MySQL использует память? 24
  • 64. ∙ Глобальные буферы ∙ Буферы соединений ∙ Буферы, специфические для операций ∙ Выделяются под операцию join_buffer_size - для каждой таблицы в JOIN tmp_table_size - для каждой временной таблицы ... ∙ Освобождаются при завершении Как сервер MySQL использует память? 24
  • 65. ∙ Глобальные буферы ∙ Буферы соединений ∙ Буферы, специфические для операций ∙ "Внутренние" буферы ∙ Пользователь не может контролировать Как сервер MySQL использует память? 24
  • 66. ∙ Только в 5.7+! ∙ Глобальная статистика mysql> select thread_id tid, user, current_allocated ca, total_allocated -> from sys.memory_by_thread_by_current_bytes; +–––––+–––––––––––––––––––––––––+–––––––––––––+–––––––––––––––––+ | tid | user | ca | total_allocated | +–––––+–––––––––––––––––––––––––+–––––––––––––+–––––––––––––––––+ | 1 | sql/main | 2.53 GiB | 2.69 GiB | | 150 | root@127.0.0.1 | 4.06 MiB | 32.17 MiB | | 146 | sql/slave_sql | 1.31 MiB | 1.44 MiB | | 145 | sql/slave_io | 1.08 MiB | 2.79 MiB | ... | 60 | innodb/io_read_thread | 0 bytes | 384 bytes | +–––––+–––––––––––––––––––––––––+–––––––––––––+–––––––––––––––––+ 145 rows in set (2.65 sec) Встроенная диагностика 25
  • 67. ∙ Только в 5.7+! ∙ Глобальная статистика ∙ Статистика по thread-ам mysql> select * from sys.memory_by_thread_by_current_bytes -> order by current_allocated descG *************************** 1. row *************************** thread_id: 152 user: lj@127.0.0.1 current_count_used: 325 current_allocated: 36.00 GiB current_avg_alloc: 113.43 MiB current_max_alloc: 36.00 GiB total_allocated: 37.95 GiB ... Встроенная диагностика 25
  • 68. ∙ Параллельные thread-ы ∙ Соединения ∙ InnoDB threads Как MySQL использует процессор? 26
  • 69. ∙ Параллельные thread-ы ∙ Соединения ∙ InnoDB threads ∙ Ввод-вывод Как MySQL использует процессор? 26
  • 70. ∙ P_S.THREADS table mysql> select thread_id, processlist_id, thread_os_id, type, name from threads; +–––––––––––+––––––––––––––––+––––––––––––––+––––––––––––+––––––––––––––––––––––––––––––––––+ | thread_id | processlist_id | thread_os_id | type | name | +–––––––––––+––––––––––––––––+––––––––––––––+––––––––––––+––––––––––––––––––––––––––––––––––+ | 1 | NULL | 17983 | BACKGROUND | thread/sql/main | | 2 | NULL | 17984 | BACKGROUND | thread/sql/thread_timer_notifier | | 3 | NULL | 17985 | BACKGROUND | thread/innodb/io_ibuf_thread | ... | 23 | 2 | 18009 | FOREGROUND | thread/sql/one_connection | | 24 | 3 | 18011 | FOREGROUND | thread/sql/one_connection | +–––––––––––+––––––––––––––––+––––––––––––––+––––––––––––+––––––––––––––––––––––––––––––––––+ Внутренняя диагностика CPU 27
  • 71. ∙ Данные в таблицах Что пишется на диск? 28
  • 72. ∙ Данные в таблицах ∙ Файлы журналов ∙ Binary ∙ Движка InnoDB Redo Log Files ∙ General, Audit Что пишется на диск? 28
  • 73. ∙ Данные в таблицах ∙ Файлы журналов ∙ Binary ∙ Движка InnoDB Redo Log Files ∙ General, Audit ∙ Временные таблицы, не помещающиеся в память Что пишется на диск? 28
  • 74. ∙ Временные таблицы и файлы ∙ Created_tmp_disk_tables ∙ Created_tmp_files Диагностика IO: status-переменные 29
  • 75. ∙ Временные таблицы и файлы ∙ Данные ∙ Binlog_[stmt_]cache_disk_use ∙ Bytes_[received|sent] ∙ Handler_write Диагностика IO: status-переменные 29
  • 76. ∙ Временные таблицы и файлы ∙ Данные ∙ Открытые файлы и таблицы ∙ Open[ed]_files ∙ Open[ed]_tables ∙ Open[ed]_table_definitions Диагностика IO: status-переменные 29
  • 77. ∙ Временные таблицы и файлы ∙ Данные ∙ Открытые файлы и таблицы ∙ InnoDB ввод-вывод ∙ Innodb_..._fsyncs ∙ Innodb_..._reads ∙ Innodb_..._writes ∙ Innodb_..._written Диагностика IO: status-переменные 29
  • 78. ∙ file_instances mysql> select * from file_instances where OPEN_COUNT > 0G *************************** 1. row *************************** FILE_NAME: /home/sveta/build/mysql-5.7/mysql-test/var/mysqld.1/data/ibdata1 EVENT_NAME: wait/io/file/innodb/innodb_data_file OPEN_COUNT: 3 *************************** 2. row *************************** FILE_NAME: /home/sveta/build/mysql-5.7/mysql-test/var/mysqld.1/data/ib_logfile0 EVENT_NAME: wait/io/file/innodb/innodb_log_file OPEN_COUNT: 2 *************************** 3. row *************************** FILE_NAME: /home/sveta/build/mysql-5.7/mysql-test/var/mysqld.1/data/ib_logfile1 EVENT_NAME: wait/io/file/innodb/innodb_log_file OPEN_COUNT: 2 ... Диагностика IO: Performance Schema 30
  • 79. ∙ file_instances ∙ table_handles mysql> select OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME from table_handlesG *************************** 1. row *************************** OBJECT_TYPE: TABLE OBJECT_SCHEMA: employees OBJECT_NAME: dept_emp *************************** 2. row *************************** OBJECT_TYPE: TABLE OBJECT_SCHEMA: employees OBJECT_NAME: dept_emp ... Диагностика IO: Performance Schema 30
  • 80. ∙ file_instances ∙ table_handles ∙ events_statements_*, prepared_statements_instances ∙ CREATED_TMP_DISK_TABLES Диагностика IO: Performance Schema 30
  • 81. ∙ Сообщения между клиентом и сервером ∙ Обычный клиент Как MySQL использует сеть? 31
  • 82. ∙ Сообщения между клиентом и сервером ∙ Обычный клиент ∙ Приложение Как MySQL использует сеть? 31
  • 83. ∙ Сообщения между клиентом и сервером ∙ Обычный клиент ∙ Приложение ∙ Replication IO thread Как MySQL использует сеть? 31
  • 84. ∙ Сообщения между клиентом и сервером ∙ Обычный клиент ∙ Приложение ∙ Replication IO thread ∙ Трафик между нодами PXC Как MySQL использует сеть? 31
  • 85. ∙ –log-warnings=2 ∙ ∙ Не так много информации как хочется ∙ Обрывы соединений Встроенная диагностика сети 32
  • 86. ∙ –log-warnings=2 ∙ Status-переменные ∙ Aborted_clients ∙ Aborted_connects Встроенная диагностика сети 32
  • 87. ∙ Таблицы accounts, users, hosts mysql> select user, host, current_connections as cur, -> total_connections as total from accounts; +––––––+–––––––––––+–––––+–––––––+ | user | host | cur | total | +––––––+–––––––––––+–––––+–––––––+ | foo | localhost | 0 | 3 | | root | localhost | 1 | 3 | | NULL | NULL | 14 | 17 | +––––––+–––––––––––+–––––+–––––––+ 3 rows in set (0.01 sec) Диагностика в Performance Schema 33
  • 88. ∙ Таблицы accounts, users, hosts ∙ Connection attributes mysql> SELECT ATTR_NAME, ATTR_VALUE FROM session_account_connect_attrs -> WHERE processlist_id != @@pseudo_thread_id; +–––––––––––––––––+–––––––––––––––––––––––––––––––––––––––––+ | ATTR_NAME | ATTR_VALUE | +–––––––––––––––––+–––––––––––––––––––––––––––––––––––––––––+ | _os | Linux | | _client_name | libmysql | | _pid | 4729 | | program_name | Troubleshooting webinars | | _platform | x86_64 | | session | Troubleshooting hardware resource usage | | author | Sveta Smirnova | | _client_version | 5.7.12 | +–––––––––––––––––+–––––––––––––––––––––––––––––––––––––––––+ Диагностика в Performance Schema 33
  • 89. ∙ Таблицы accounts, users, hosts ∙ Connection attributes ∙ Host Cache ∙ Содержимое DNS кэша ∙ Ошибки: Name Server, соединений, авторизации, max_connect_errors, max_user_errors и т.д. Диагностика в Performance Schema 33
  • 90. ∙ Глобальные ∙ Контролируют параметры, необходимые для всего сервера Размещение файлов: datadir и т.п. Совместно используемые буфера Другие Системные переменные: сфера действия 34
  • 91. ∙ Глобальные ∙ Контролируют параметры, необходимые для всего сервера Размещение файлов: datadir и т.п. Совместно используемые буфера Другие ∙ Сессионные ∙ Контролируют параметры, имеющие отношение к открытой сессии Системные переменные: сфера действия 34
  • 92. ∙ Глобальные ∙ Контролируют параметры, необходимые для всего сервера Размещение файлов: datadir и т.п. Совместно используемые буфера Другие ∙ Сессионные ∙ Контролируют параметры, имеющие отношение к открытой сессии ∙ MySQL option tables Системные переменные: сфера действия 34
  • 94. ∙ Тестируйте! ∙ Отладку можно начинать с любого места ∙ Медленные запросы ∙ Блокировки ∙ Настройки ∙ Оборудование ∙ Итерации! Итоги 36
  • 95. ∙ Медленные запросы ∙ EXPLAIN Syntax ∙ EXPLAIN FORMAT=JSON is Cool! ∙ Дополнительные материалы к семинару ∙ Optimizer Hints ∙ Custom Hint Plugin ∙ Troubleshooting Slow Queries webinar Больше информации 37
  • 96. ∙ Медленные запросы ∙ Блокировки ∙ InnoDB Locking Explained With Stick Figures ∙ InnoDB блокировки в официальном руководстве ∙ Типы блокировок InnoDB ∙ Разбираемся с блокировками в MySQL Server ∙ Troubleshooting Locking Issues webinar Больше информации 37
  • 97. ∙ Медленные запросы ∙ Блокировки ∙ Оборудование ∙ Linux Performance by Brendan D. Gregg ∙ Memory Summary tables in Performance Schema ∙ Troubleshooting hardware resource usage webinar Больше информации 37
  • 98. ∙ Медленные запросы ∙ Блокировки ∙ Оборудование ∙ Настройки ∙ MySQL Option Tables ∙ List of variables introduced in Percona Server ∙ Galera Cluster System Variables ∙ Troubleshooting configuration issues webinar Больше информации 37
  • 99. ∙ Медленные запросы ∙ Блокировки ∙ Оборудование ∙ Настройки ∙ Обо всём∙ Книги MySQL Trouleshooting High Performance MySQL ∙ Блоги Planet MySQL Percona Data Performance Blog Больше информации 37
  • 100. ??? Место для ваших вопросов 38