[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с большим количеством запросов
Страницы: 1, 2, 3, 4
depp
Цитата (twin @ 8.12.2015 - 15:45)
Я могу реально показать, где это не только нормально, но без этого вообще невозможно.

интересно. покажи.
twin
Цитата (depp @ 8.12.2015 - 11:51)
интересно. покажи.

Это касается высоконагруженных систем. К примеру у меня есть таблица, довольно большая, несколько гигов, которая обновляется по крону несколько раз в сутки. К этой же таблице постоянно идет куча запросов на выборку.

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

А когда делаешь обновление пачками в цикле, особенно с паузой, то очередь моментом рассасывается. И все довольны.

Так что нельзя говорить ничего однозначно. Иногда логика не столь очевидна, как кажется на первый взгляд.

Мне нравится загадка: кого проще победить в драке, бегуна или боксера? 99% отвечают - бегуна. Хотя это совершенно не верно. Ибо если бегун слабее - его хрен догонишь. А если сильнее - хрен убежишь. С боксером хоть какой то шанс есть. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
bestxp, мне тоже не нравится принцип "работает - не трогай", я бы там переписал если бы это того стоило, но там написано все не плохо. Ну и что, что для удаление 95 записей требуется 750 запросов к БД, они же мелкие и это разовая операция которая происходит раз в день, а то и в неделю, плюс это простые запросы, которые не нагружают сервер. А самая главная причина, в том что источник этих запросов является ORM'ка на основе Active Record, на сохранении/удаление записей какой-то сущности там есть логика, и при массовом обновлении эта логика должна выполняться. Очень много аспектов в пользу того что это не надо переписывать и очень мало что бы переписать.

Вот можешь посмотреть, что обычно происходит при массовом (ссылка как битая вставляется, потому так)

//https://github.com/sugarcrm/sugarcrm_dev/blob/c2eae17995b3938665e1e797860067f12aec60a3/include/MassUpdate.php#L158

это для SugarCRM 6, в 7 версии немного покрасивее, но принцип тот же.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Oyeme
Цитата
Так вот, когда делаешь один большой запрос на обновление, таблица лочится, так как только одно считывание в оперативку - уже достаточно накладная операция (только не говорите про InnoDB, а то и меня сейчас в говнокодерстве обвините неразобравшись).


При MyISAM таблица будет locked.


Цитата
уже достаточно накладная операция

Звучит как "Машина есть , а хожу пешком,потому что бензин дорогой"
Обычно это решается посылкой пакетов друг за другов пачками.
YVSIK
Цитата (AllesKlar @ 8.12.2015 - 15:11)

Может магнитные бури?...

нет это не магнитные
это очевидное хамство узаконенное уже тут
и Пс ух как к этому причастен
у него через пост подобные агрызания
вот народ его понял и начал в его дуже с ним говорить
так что ничего удивительного

ну я пошел user posted image

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
twin
Цитата (Oyeme @ 8.12.2015 - 13:15)
При MyISAM таблица будет locked.

Да. И что? В чем связь?

Цитата (Oyeme @ 8.12.2015 - 13:15)
Звучит как "Машина есть , а хожу пешком,потому что бензин дорогой"
Обычно это решается посылкой пакетов друг за другов пачками.
Какие пачки? Куда посылать? Какой бензин... Что за бред?

Вообще интересно наблюдать, как люди реагируют на вопросы)) Это называется "слышал звон, да не знаю, где он".

Может я пропустил что-то интересное, но тогда объясни, каким образом происходит модификация таблицы.

На сколько мне известно, прежде чем перезаписать файл, нужно сначала считать данные в оперативку. На уровне MySQL пока, я про PHP ничего не говорил. И именно это и есть накладные расходы при большом количестве данных. И это занимает время.

Да, InnoDB лочит таблицу на уровне строк. Но если данных изменяется много (что и предлагается любителями одного огромного запроса), то лочится много строк. А если такая залоченная строка требуется в запросе на выборку, он ставится в очередь и ждет, пока первый запрос её не отпустит.

Так как плотность запросов большая, то и "ожидающих" скапливается достаточно много. Какие пакеты, какой бензин...



_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.