SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 20.03.2012 16:14:03

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Долгие UPDATE запросы

Есть простой запрос:

UPDATE
   `users`
SET
   `last_activity` = 111111
WHERE
   `id` = 1


И вот такой запрос выполняется жутко долго (около 5 секунд).

Запросы на выборку происходят быстро.


Заметили проблему недавно, когда каждый раз страница грузилась долго. Проблема оказалось в запросе который выше (вместо единичек другие цифры).  Убрав запрос на обновление, все заработало быстро.

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

Неактивен

 

#2 20.03.2012 16:27:49

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

Re: Долгие UPDATE запросы

а) Что показывает show global variables like 'low_priority_updates'; ?

б) лучше last_activity вынести из таблицы users, которая часто используется на чтение, чтобы эффективно работали кэши и буферы.

Неактивен

 

#3 20.03.2012 16:31:33

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

Запрос "show global variables like 'low_priority_updates';" показывает:
low_priority_updates - OFF

Отредактированно walik (20.03.2012 16:32:40)

Неактивен

 

#4 20.03.2012 16:35:44

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

Re: Долгие UPDATE запросы

UPDATE всегда выполняется медленно, даже если выполнить руками?
Что показывает SHOW FULL PROCESSLIST в момент медленного выполнения?
Проверьте производительность диска, протестируйте его по smart и проверьте свободное место на диске.

Неактивен

 

#5 20.03.2012 16:49:42

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

ID   | User |           Host              |  db  | Command | Time | State | Info
160 | main | **.**.**.***:42190 | main | Sleep      |  188  |         |
172 | main | **.**.**.***:43896 | main | Query     |    0   |         |SHOW FULL PROCESSLIST
361 | main | **.**.**.***:48388 | main | Sleep      |  189  |         |
498 | main |        localhost           | main | Sleep     |    2   |         |
499 | main |        localhost           | main | Query     |   2   |  end   | UPDATE `users` SET `last_chat_activity` = '1332246906' WHERE (id = "11")

Иногда бывает запрос выполняется быстро 0.15

Отредактированно walik (20.03.2012 16:55:14)

Неактивен

 

#6 20.03.2012 16:52:54

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

Re: Долгие UPDATE запросы

А что говорит EXPLAIN на этот запрос?

EXPLAIN UPDATE `users` SET `last_chat_activity` = '1332246906' WHERE (id = "11")

Неактивен

 

#7 20.03.2012 16:56:55

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

Выдает syntax error. EXPLAIN вроде бы только на SELECT можно юзать ?

Неактивен

 

#8 20.03.2012 17:01:02

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

Re: Долгие UPDATE запросы

Упс, прошу прощения,

EXPLAIN SELECT `last_chat_activity` FROM `users` WHERE (id = "11")


smile

Неактивен

 

#9 20.03.2012 17:05:28

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

id | select_type | table |  type  | possible_keys |    key      | key_len  |  ref    |  rows  |  extra
1 |    SIMPLE     | users | const | PRIMARY,id    | PRIMARY  |     4      | const |    1    |

Насчет диска, написали хостеру, посмотрим что ответит))
smile

Отредактированно walik (20.03.2012 17:15:51)

Неактивен

 

#10 20.03.2012 17:19:01

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

Re: Долгие UPDATE запросы

walik написал:

Насчет диска, написали хостеру, посмотрим что ответит))
smile

С этого надо было начинать. Какой хостинг?  Если виртуальный, то может быть какая-то особая версия MySQL и она нагружена кем-то другим.

Неактивен

 

#11 20.03.2012 17:23:23

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

Хостинг VPS.
MySQL версия - 5.0.92

Сам хостинг не тормозит, вообще практически не нагружается.

Отредактированно walik (20.03.2012 17:25:58)

Неактивен

 

#12 20.03.2012 17:32:30

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

Re: Долгие UPDATE запросы

Какая ОС? Какой тип таблицы, MyISAM? Сколько свободной памяти?

Если Innodb доступен, попробуйте сделать

ALTER TABLE `users` ENGINE=Innodb;

Неактивен

 

#13 20.03.2012 17:36:06

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

ОС - Centos
Тип таблицы уже InnoDB

Эмм, извиняюсь, свободной памяти чего ?

Неактивен

 

#14 20.03.2012 17:44:49

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

Re: Долгие UPDATE запросы

Вот, что странно - state запроса UPDATE 'end', то есть он висит в стадии завершения транзакции.
Подобная проблема описана у Зайцева: http://www.mysqlperformanceblog.com/200 … gressions/
Его рекомендация:

innodb_flush_log_at_trx_commit=2

Неактивен

 

#15 20.03.2012 18:38:05

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

После всяких изменений и настроек, ситуация чуть чуть улучшилась smile  получается, что он в начале несколько раз выполняется быстро, потом медленно. (до этого почти всегда медленно было)
Такое чувство как будто скорость выполнения запроса зависит от фазы луны smile 

rgbeast написал:

UPDATE всегда выполняется медленно, даже если выполнить руками?

Если ручками вбивать запрос (через Navicat к примеру я делаю),  то запрос выполняется всегда быстро smile

Отредактированно walik (20.03.2012 18:38:47)

Неактивен

 

#16 20.03.2012 18:43:48

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

Re: Долгие UPDATE запросы

Может быть есть какие-то еще нагружающие запросы.

Если чувство, что зависит от фазы луны, то скорее всего это нагрузка диска другими VPS на том же физическом сервере.

Неактивен

 

#17 20.03.2012 20:27:01

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

Хех, проблема вроде бы как решена, напарник покопался хорошо в настройках и вроде стало намного лучше smile

Спасибо вам за помощь, премного благодарен.

Неактивен

 

#18 21.03.2012 11:13:56

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Долгие UPDATE запросы

walik, ну так расскажите что напарник накопал ? smile

Неактивен

 

#19 21.03.2012 13:14:51

walik
Участник
Зарегистрирован: 05.10.2011
Сообщений: 17

Re: Долгие UPDATE запросы

Мы когда хостеру писали о проблеме, нам ответили что нужно менять настройки MySQL. Он навряд ли сможет сказать в точности что и где менял,  так как мы не особо профи в MySQL, и все что меняли, брали инфу из инета. Поэтому мы немножко без понятия что именно поспособствовало улучшению ситуации))

Неактивен

 

Board footer

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