SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.02.2012 21:59:16

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

отчего может долго выполняться запрос типа SET NAMES?

Отчего так может быть, что запрос SET NAMES попадает в slow log?

Код:

Count         : 254.93k  (21.12%)
Time          : 972254.256041 s total, 3.813749 s avg, 100.022 ms to
24.837545 s max  (65.96%)
 95% of Time : 818461.720013 s total, 3.379462 s avg, 100.022 ms to
10.285959 s max
Lock Time (s) : 0 total, 0 avg, 0 to 0 max  (0.00%)
 95% of Lock : 0 total, 0 avg, 0 to 0 max
Rows sent     : 0 avg, 0 to 0 max  (0.00%)
Rows examined : 0 avg, 0 to 0 max  (0.00%)
...
Query abstract:
SET timestamp=N; SET names cp1251;

В качестве клиента выступает PHP с pconnect. Вот кусок статуса про соединения:

Код:

mysql>  SELECT @@max_connections;
+-------------------+
| @@max_connections |
+-------------------+
|              2000 |
+-------------------+
1 row in set (0.00 sec)

mysql> SHOW STATUS LIKE '%conn%';
+--------------------------+---------+
| Variable_name            | Value   |
+--------------------------+---------+
| Aborted_connects         | 0       |
| Connections              | 4889559 |
| Max_used_connections     | 693     |
| Ssl_client_connects      | 0       |
| Ssl_connect_renegotiates | 0       |
| Ssl_finished_connects    | 0       |
| Threads_connected        | 435     |
+--------------------------+---------+

Неактивен

 

#2 14.02.2012 22:58:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: отчего может долго выполняться запрос типа SET NAMES?

Если перейти на connect проблема исчезнет?

Неактивен

 

#3 15.02.2012 00:17:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: отчего может долго выполняться запрос типа SET NAMES?

Причина та же, что и для запроса

SELECT 1;
Бывает, что такой запрос выполняется несколько секунда.

Основных причины две - надо посмотреть show full processlist и load average, когда это происходит. load average можно посмотреть в истории atop.
I) если load average высокий (или нагрузка на диск в atop), значит система ждет ресурсы - обычно диск или какие-то еще ресурсы ядра
II) если нет, значит это VDS и
  а) на машине, на которой он размещен, кто-то другой нагрузил диск (это невозможно устранить)
  б) кончились ресурсы данного VDS (см. /proc/user_beancounters) - это можно устранить переходом на другой тариф

Неактивен

 

#4 15.02.2012 00:43:01

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: отчего может долго выполняться запрос типа SET NAMES?

rgbeast написал:

на машине, на которой он размещен, кто-то другой нагрузил диск (это невозможно устранить)

А зачем запросу SELECT 1 диск?

Неактивен

 

#5 15.02.2012 01:38:53

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: отчего может долго выполняться запрос типа SET NAMES?

LazY написал:

А зачем запросу SELECT 1 диск?

Например, чтобы записать его в лог медленных запросов smile

Каждый раз ситуация разная и разные блокировки играют роль, но диагностика одинаковая.

Неактивен

 

#6 15.02.2012 15:56:35

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: отчего может долго выполняться запрос типа SET NAMES?

Например, чтобы записать его в лог медленных запросов smile

Запись в лог медленных запросов - это уже следствие медленного выполнения.
Чтобы это произошло, сначала должно произойти медленное выполнение.
Интересно, как конкретно этот запрос может быть связан с диском (кроме гипотетической необходимости записи в различные логи).

Кстати. Запись в лог считается частью выполнения запроса?

Неактивен

 

#7 15.02.2012 17:04:42

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: отчего может долго выполняться запрос типа SET NAMES?

LazY написал:

Кстати. Запись в лог считается частью выполнения запроса?

Да. Это легко проверить через профайлинг.

Если проблемы с диском, то медленных запросов в логе до и больше. Или же это не так, т.е. set names выделяется?

Неактивен

 

#8 15.02.2012 17:09:22

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: отчего может долго выполняться запрос типа SET NAMES?

LazY написал:

Запись в лог медленных запросов - это уже следствие медленного выполнения.
Чтобы это произошло, сначала должно произойти медленное выполнение.
Интересно, как конкретно этот запрос может быть связан с диском (кроме гипотетической необходимости записи в различные логи).

Я не зря поставил смайл. Не обязательно диск - могут быть другие ресурсы (особенно в случае VDS), например кэш запросов, буферы, сетевые соединения, что-то еще.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson