Помогите разобраться в чём причина тормозов запроса

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Тёмный
проходил мимо

Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение Тёмный » 2013-06-13 8:14:08

Мужики, помогите разобраться.
Есть MySQL 5.5.29 на FreeBSD 8.3 amd64
Есть таблица

Код: Выделить всё

users_new (
   id primary key int unsigned auto_increment,
  checkStatus tiny int default 0 not null index,
  isMailChecked tiny int default 0 not null index,
  recDate int unsigned not null index
Простейшая таблица в которой все поля индексы и к тому же записей в таблице менее 500 (не тысяч).
Так вот в логе медленных запросов (я поставил порог 1 сек) показывает такой запрос:

Код: Выделить всё

UPDATE users_new SET users_new.checkStatus=1 WHERE users_new.isMailChecked=0 AND users_new.recDate<1371012751;
Также тормозит запрос из таблицы где 5 тыс. записей и идёт UPDATE sessDate=$time WHERE is=$id (т.е. вообще по первичному ключу)
При этом на этом сервере выполняются гораздо более сложные запросы постоянно, вложенные запросы с массой объединений и т.п.
Подскажите куда копнуть?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

PYO
сержант
Сообщения: 187
Зарегистрирован: 2011-08-18 12:46:45

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение PYO » 2013-06-13 9:36:37

Пользовать SSD диск.

Тёмный
проходил мимо

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение Тёмный » 2013-06-13 14:41:17

Использовать SSD диск для базы в 30мб с одновременным обслуживанием не более 10 пользователей?
У вас на работе похоже все проблемы решаются исключительно вливанием денег а не устранением проблем в конфигурации.

Аватара пользователя
Neus
капитан
Сообщения: 1982
Зарегистрирован: 2008-09-08 21:59:56

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение Neus » 2013-06-17 11:13:36

Тёмный писал(а):Использовать SSD диск для базы в 30мб с одновременным обслуживанием не более 10 пользователей?
Если ваша субд генерит больше запросов чем может обработать HDD и время отклика критично, то да - нужен SSD
Да и когда UPDATE была быстрой операцией то..
У вас на работе похоже все проблемы решаются исключительно вливанием денег а не устранением проблем в конфигурации.
:shock: да вся индустрия ПО так работает..

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение snorlov » 2013-06-17 11:19:23

Тёмный писал(а):Использовать SSD диск для базы в 30мб с одновременным обслуживанием не более 10 пользователей?
У вас на работе похоже все проблемы решаются исключительно вливанием денег а не устранением проблем в конфигурации.
Надо смотреть план запроса, кроме того, индексы надо выбирать с головой, а не как погодя, если у вас поле в таблице имеет значения 0 или 1, то индекс на это поле будет только тормозить, вполне возможно вам надо переставить поля в where и использовать < вместо =...

Тёмный
проходил мимо

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение Тёмный » 2013-07-02 12:40:15

Спасибо за наводки. Добавил индексов, порылся с EXPLAIN, решил тормоза.
А по поводу SSD в моём случае (200 тыс. строк в БД, 10 пользователей, 40 запросов в сек), ну реально ребята это сатаной по воробьям стрелять. Эффективно но накладно.

Тёмный
проходил мимо

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение Тёмный » 2013-07-02 12:44:46

snorlov писал(а):Надо смотреть план запроса, кроме того, индексы надо выбирать с головой, а не как погодя, если у вас поле в таблице имеет значения 0 или 1, то индекс на это поле будет только тормозить, вполне возможно вам надо переставить поля в where и использовать < вместо =...
А можно этот момент мне разъяснить? В смысле у меня полей-флагов с вариантами значений 0 или 1 много и я их индексами делаю, а ты говоришь это скорей вредно чем полезно.
Можешь кинуть ссылку чтобы почитать почему это вредно, только желательно не на всю документацию по MySQL :) Ну или так, на пальцах своими словами объясни пожалуйста.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение snorlov » 2013-07-02 13:09:47

Ну а чего тут обьяснять, индекс по существу дополнительная таблица, в случае малых значений, точнее малого изменения поля (2-а значения или к примеру 3-и) у тебя нет выигрыша к выборке, по существу вместо полного скана по таблице, ты делаешь почти полный скан по индексу, выбирая из него id и по этому id берешь данные из основной. Другое дело если индекс строишь по 2-м и более полям. Понятно также, что выборка по больше/меньше с вариантами 0/1 срабатывает быстрее чем равно. Ссылок к сожалению не дам, они у меня все старые, да и практически уже убраны поскольку этот вопрос очень хорошо обсасывался лет 10-ть назад, когда началось активное применение у нас sql-серверов...

Тёмный
проходил мимо

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение Тёмный » 2013-07-02 13:27:48

Спасибо за помощь и разъяснения!

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение FiL » 2013-07-02 15:22:11

Не совсем так. Вопрос не в количестве значений поля (0 /1 или много разных), а в количестве строк, удовлетворяющих запросу.
Если выборка вынимает половину всех строк из таблицы, то индекс бесполезен. А если выборка вынимает только 10% строк, то индекс полезен даже по флагу.
Вот, например, тут -
http://www.mysqlperformanceblog.com/200 ... re-column/

PYO
сержант
Сообщения: 187
Зарегистрирован: 2011-08-18 12:46:45

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение PYO » 2013-07-02 15:24:59

Тёмный писал(а):Спасибо за наводки. Добавил индексов, порылся с EXPLAIN, решил тормоза.
А по поводу SSD в моём случае (200 тыс. строк в БД, 10 пользователей, 40 запросов в сек), ну реально ребята это сатаной по воробьям стрелять. Эффективно но накладно.
Дык, какой вопрос - такой ответ. :unknown:

dml
рядовой
Сообщения: 38
Зарегистрирован: 2013-08-03 23:19:57

Re: Помогите разобраться в чём причина тормозов запроса

Непрочитанное сообщение dml » 2013-08-04 18:52:21

А что за железо то???