2015-01-27 2 views
0

Я запускаю несколько запросов обновления в базе данных, которые обновляют записи навалом и некоторые обновляют каждую строку. В определенные моменты я вижу, что очередь подключения MySQL становится полной, и больше не допускается подключение к MySQL. Это означает, что некоторые клиентские соединения заблокировали строки, в то время как другое соединение пытается обновить одну и ту же запись и ожидает, что блокировка будет удалена, и, таким образом, соединения нагроможятся.Блокировка и обновление строк в MySQL

Я не могу понять, какие запросы делают это, так как это происходит в секунду секунды, и я хочу увидеть либо show full processlist, либо какой-либо другой метод, что происходит в базе данных.

Действительно из идей здесь, кроме как обновить некоторую логику в приложении, которая требует много времени. На самом деле нужны некоторые указатели здесь :(

ответ

0

Начните с MySQL slow log. Установите пороговое значение на 1-2 секунды, а затем просмотрите файл. Чтобы записать все запросы, установите его в 0. Это похоже на то, что вы сможете для поиска запросов с большим временем блокировки:

# Time: ... 
# [email protected]: ... 
# Query_time: 160.552078 Lock_time: 0.038823 Rows_sent: 2318 Rows_examined: 2421376 
SELECT ... 
Смежные вопросы