[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с большим количеством запросов
Страницы: 1, 2, 3, 4
chee
Выполняю один простейший запрос на обновление записи в БД, все проходит быстро. Начинаю выполнять 90 штук друг за другом, выходит около 30 секунд. В чем может быть проблема?

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
curious
отсутствие индексов + большой объем данных, как одна из причин
chee
curious, 300 записей в таблице.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
curious
может срабатывает тригер на событие update
Valick
Цитата (chee @ 7.12.2015 - 14:26)
Начинаю выполнять 90 штук друг за другом

это называется "в цикле", характерный признак говнокода biggrin.gif

_____________
Стимулятор ~yoomoney - 41001303250491
depp
запросы покажите. вполне вероятно, то, что вы делаете - можно выполнить одним запросом. если ключи правильно расставлены.
Valick
Цитата (depp @ 7.12.2015 - 14:53)
вполне вероятно, то, что вы делаете - можно выполнить одним запросом

99.9% в пользу одного (двух) запроса(ов)

_____________
Стимулятор ~yoomoney - 41001303250491
chee
Valick
depp
может к делу, а? Это атомарные запросы, нельзя их выполнить как один, конкретно в приложении. Или валите из темы или отвечайте по делу.

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

$timestart = microtime(true);
$sql = "SELECT id FROM opportunities AS o WHERE o.date_entered > '2015-12-07 06:00:00' AND o.deleted = 0";
$rows = dbGetArray($sql);
foreach ($rows as $row) {
$sql = "UPDATE opportunities AS o SET o.deleted = 0 WHERE o.id = " . dbQuote($row['id']);
dbExecute($sql);
}
echo microtime(true) - $timestart;


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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Valick
Цитата (chee @ 7.12.2015 - 14:56)
Или валите из темы или отвечайте по делу.

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

_____________
Стимулятор ~yoomoney - 41001303250491
chee
Valick, ты при**еешь переписывать SugarCRM 7 на один запрос, я это гарантирую, инфа сотка.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Valick
chee, ты показал кусок кода с запросом и + херова туча запросов в цикле, а я говорю что тут один запрос, нахер мне SugarCRM ?


_____________
Стимулятор ~yoomoney - 41001303250491
curious
в данном конкретно случае
update where in ( ids )
chee
Valick, потому что это пример по типу того, что происходит в реальном приложении. А реальное приложение это SugarCRM 7. Еще вопросы будут?

curious, в данном конкретном случае эта тема для тебя закрыта.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Valick
chee, можно глупый вопрос? Ты зачем тему создавал?


_____________
Стимулятор ~yoomoney - 41001303250491
kaww
chee
1. Возможно, что таблица сломалась и ее надо починить.
2. При каждом update mysql перестраивает индексы, что сказывается на времени выполнения запроса. Для innodb можно все update запросы запихнуть в транзакцию, тогда индекс обновится для всех запросов одновременно после комита. Для myisam не знаю, вероятно, можно юзать lock table. Еще вариант - это when then.
Быстрый ответ:

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