
Alexey
20.02.2018
12:03:06
ещё варианты? 300+ rps
ну 300+ rps это в общем совсем немного, если там + не сильно большой :) но не очень понятно, что требуется. смотреть полный текст всех prepared statements? какого-то конкретного? если да, какого именно?

Олег
20.02.2018
12:03:30

Anton
20.02.2018
12:04:14

Google

Олег
20.02.2018
12:04:34
есть подозрения, что не используется индекс из-за неверного типа в одной из переменных
я с этой хренью уже разбирался, но, видимо, не до конца

Alexey
20.02.2018
12:04:59

Олег
20.02.2018
12:05:07
и ядра эти уходят в потолок в час-пик :(

Anton
20.02.2018
12:05:13
@KawaiDesu если длинные запросы ловить, то настроенный slow.log ничё так помогает
тем более он включается/выключается моментально и может прямо в таблицу писать запросы больше n секунд

Олег
20.02.2018
12:07:55
оверкилл, на самом деле

Anton
20.02.2018
12:08:07
херассе
2 гига база... 62 оперативы
т.е. она всё в буфер пуле?))))

Google

Anton
20.02.2018
12:08:43
тогда у тебя либо очень тяжелые отчёты, либо что-то ещё косячит, ну нельзя так проц убить парой сотен чтений

Олег
20.02.2018
12:08:45
она "два раза" в буффер пуле (он 4)

Alexey
20.02.2018
12:08:54

Олег
20.02.2018
12:08:54
там пол миллиона записей

Alexey
20.02.2018
12:09:27
а как такое провернуть?
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_log_queries_not_using_indexes

Anton
20.02.2018
12:09:41
@KawaiDesu слоу лог будет самым просты вариантом. Включил в таблицу - вытянул пару сотен тяжелых - выключил, оптимизировал.
дальше включил и ищешь ещё))))

Олег
20.02.2018
12:11:25

Alexey
20.02.2018
12:11:26

Олег
20.02.2018
12:11:45
если передали ненароком int вместо string, то индекс не подцепится, но будут задействованы другие
то есть индекс как бы есть, но не тот

Alexey
20.02.2018
12:12:11
а разница во времени выполнения какая?

Anton
20.02.2018
12:12:51
Видимо большая. Логи можно включить не в пиковую нагрузку. Если есть массовая проблема - ты её и не в пик выловишь

Alexey
20.02.2018
12:14:37
я бы включил general query log на короткое время. а потом чем-нибудь его прошерстил. возможно pt-query-digest-ом, чтобы велосипед не изобретать
или audit log, но я навскидку не помню, получает audit plugin текст параметра в PS или нет

Anton
20.02.2018
12:15:30
@alexey_kopytov в дженерал не будет времени
А так можно будет фильтрануть
"pt-query-digest" - это да, крутая вещь))))

Олег
20.02.2018
12:16:32

Google

Anton
20.02.2018
12:16:41
выполнения запроса

Олег
20.02.2018
12:16:55

Anton
20.02.2018
12:17:08
Slow в твоём варианте перспективнее, сможешь отфильтровать только тяжёлые

Олег
20.02.2018
12:17:25
2018-02-20T12:07:45.674900Z 42 Prepare SELECT...
2018-02-20T12:07:45.675094Z 42 Execute SELECT...
2018-02-20T12:07:45.675715Z 42 Close stmt
2018-02-20T12:07:45.676129Z 42 Quit

Anton
20.02.2018
12:17:40
Это general

Олег
20.02.2018
12:17:45
да
не перспективнее, они по факту отрабатывают за 0.00, когда руками пускаешь

Anton
20.02.2018
12:17:56
времени нет выполнения

Олег
20.02.2018
12:18:09
проблемы лезут, если один из параметров случайно int, а не string

Anton
20.02.2018
12:18:11
А в процесслисте - нет

Олег
20.02.2018
12:18:15
но сейчас в логе проблемных нет

Anton
20.02.2018
12:18:15
ну вот
В дженерал и не будет

Олег
20.02.2018
12:18:24
лучше бы были
о, нашёл

Anton
20.02.2018
12:18:43
Как работает слоу:
Он СНАЧАЛА выполняет запрос, а дальше если время его выполнения большое - логирует
И пишет время выполнения

Олег
20.02.2018
12:26:46
general_log подошёл, спасибо
ссаные тряпки выданы

Alexey
20.02.2018
12:35:08
а всё еще проще оказалось

Google

Alexey
20.02.2018
12:35:34
performance_schema.threads пишет полный текст запроса даже для prepared statements
или основанная на ней sys.processlist

Олег
20.02.2018
12:36:29

Anton
20.02.2018
12:36:53
@alexey_kopytov кстати, а чего sys могла неграмотно развернуться?
представления есть, функций, которые используют представления - болт

Alexey
20.02.2018
12:39:00

Anton
20.02.2018
12:39:37
Может просто у кого-то бекап кода взять?))))

Alexey
20.02.2018
12:41:51
так зачем бэкап, наверняка sql где-то лежит
должен быть в /usr/share/mysql/mysql_sys_schema.sql

Александр
20.02.2018
12:43:50
Есть секционированная таблица размером в 200 ГБ, в минуту вставляется 2млн строк. В планах увеличение времени хранения. Вопрос: как можно перемещеть данные на медленное хранилище?

Anton
20.02.2018
12:44:01
понял, сейчас попрошу компетентные органы пошерстить. А то распределение ролей, мать его, к сервакам только как MYSQL-клиент хожу и никак иначе

Alexey
20.02.2018
12:52:02

Александр
20.02.2018
12:53:04

Alexey
20.02.2018
12:54:15
это будет быстро, потому что всё на одном устройства
3. переносим отдельную таблицу с данными на нужное устройство с помощью FLUSH TABLES FOR EXPORT, например. или на другой сервер, не важно
4. удаляем пустую партицию в исходной таблице

Александр
20.02.2018
12:57:09
т.е. в архиве будет много таблиц вместо партиций?

Google

Alexey
20.02.2018
13:00:02

Александр
20.02.2018
13:01:00

Farid Muharram
21.02.2018
07:03:13
Ikuti tautan ini untuk bergabung ke grup WhatsApp saya: https://chat.whatsapp.com/Fl6na9Bfw3L5n70oclUNmF

Олег
21.02.2018
07:03:55

Dmitry
21.02.2018
07:41:12
Подскажите. При поиске максимального элемента mysql использует индекс? Например я ищу последний элемент по полю типа timestamp и сейчас судя по explain база индекс по timestamp не использует

Dedy
21.02.2018
07:45:55
/spam@spam_kill_robot
/spam@spam_kill_robot

lost
21.02.2018
07:48:52

Сергей
21.02.2018
08:21:10

Vlad
21.02.2018
10:51:11
Ребят, всем привет! Как лучше поступить, если есть таблица на 2кк, из нее надо выдернуть подходящие строки по регексу, объем по итогу - примерно 0,5кк. Через HeidiSQL пару часов выполнялся запрос, потом при попытке импорта выбивало ошибку