@mysql_ru

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

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

я с этой хренью уже разбирался, но, видимо, не до конца

Alexey
20.02.2018
12:04:59
мне нужно отловить один почти любой селект (там подавляющее кол-во - подходящие) и посмотреть, что там в параметрах
ну включить general log на минутку. ну накапает там с десяток мегабайт логов, делов-то

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

Anton
20.02.2018
12:05:13
@KawaiDesu если длинные запросы ловить, то настроенный slow.log ничё так помогает

тем более он включается/выключается моментально и может прямо в таблицу писать запросы больше n секунд

2 гига база, 62 гига сервер, 16 ядер
@KawaiDesu оперативы сколько?

Олег
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
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_log_queries_not_using_indexes
там хитрее, всего индексов 4 (вопрос к разрабам), но нужный и ультрабыстрый - один

Alexey
20.02.2018
12:11:26
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_log_queries_not_using_indexes
а в перконе можно вместе с самим запросом в slow log писать ещё всякое интересное вплоть до EXPLAIN

Олег
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

Anton
20.02.2018
12:36:53
@alexey_kopytov кстати, а чего sys могла неграмотно развернуться?

представления есть, функций, которые используют представления - болт

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:54:15
Верно, текушие данные на быстрые диски, вчерашние на медленное хранилище
я бы делал так: 1. создаём пустую таблицу на том же устройстве. 2. обмениваем нужную партицию и пустую таблицу, как написано здесь: https://dev.mysql.com/doc/refman/5.7/en/partitioning-management-exchange.html

это будет быстро, потому что всё на одном устройства

3. переносим отдельную таблицу с данными на нужное устройство с помощью FLUSH TABLES FOR EXPORT, например. или на другой сервер, не важно

4. удаляем пустую партицию в исходной таблице

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

Google
Alexey
20.02.2018
13:00:02
т.е. в архиве будет много таблиц вместо партиций?
не обязательно. можно тем же методом (exchange partition) подшивать их в одну архивную таблицу

Александр
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

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

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

Страница 140 из 142