|
как ускорить update?
|
|||
---|---|---|---|
#18+
есть вот такой update Код: plaintext
Код: plaintext 1. 2. 3. 4. 5.
беда в том, что total runtime имеет свойство увеличиваться до 7-8 секунд! update очень интенсивный. есть рецепны как уменьшить время выполнения? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 10:00 |
|
как ускорить update?
|
|||
---|---|---|---|
#18+
В твоем случае архитектурно все идеально (индекс в запрос включен). Поэтому единственное что возможно, это регулярно делать VACUUM FULL ANALYZE. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 11:58 |
|
как ускорить update?
|
|||
---|---|---|---|
#18+
Может быть изменить приложение, вместо сотни апдейтов "set qt_traf_cur=qt_traf_cur-1" выполнять один "set qt_traf_cur=qt_traf_cur-100"? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 12:03 |
|
как ускорить update?
|
|||
---|---|---|---|
#18+
to LeXa NalBat дело в том, что в реальности выражение выглядит как "update quotas set qt_traf_cur=qt_traf_cur-? where pk_qt=?", и только в момент выполнения ? заменяются на реальные величины. кэширование в приложении реализовано. to Hordi "регулярно" это насколько часто? у меня крон скрипт раз в сутки (ночью) запускается. нужно чаще? как выполнение этой операции в разгар рабочего дня повлияет на реактивность субд? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 13:26 |
|
как ускорить update?
|
|||
---|---|---|---|
#18+
нашел ответы здесь. спасибо Genady ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 14:54 |
|
как ускорить update?
|
|||
---|---|---|---|
#18+
Если к твоей таблице quotas происходит огромное число параллельных обращений, то может помочь техника замены UPDATE на INSERT. Естественно, это потребует переписание всех остальных запросов к этой таблице. Рассмотрим на другом примере - система счетчиков обращений к сайтам (число посещений/просмотров, хостов по каждому сайту). Напр, запрос UPDATE sitestat SET visits = visits + 1 WHERE site_id = $site_id заменить на INSERT INTO sitestat_v2 (site_id, visits) VALUES ($site_id, 1) Соотв-но, запрос получения стат-ки по какому-либо сайту будет выглядеть как SELECT SUM(visits) FROM sitestat_v2 WHERE site_id=$site_id . Поверьте, на очень волатильных таблицах таблицах этот запрос будет выполняться практически столько же, сколько и SELECT visits FROM sitestat WHERE ... так как UPDATE в PostgreSQL - суть тот же INSERT, только еще плюс неявный DELETE (вспоминайте про MVCC...). Но, повторяю, экономия будет только если мы имеем большое число параллельных обращений к таблице. Производительность повышается за счет уменьшения числа ожиданий/локировок. Естественно, ночью или в другое время, когда нагрузка снижается при этой технике нужно запускать скрипт, который бы агрегировал статистику по каждому сайту. В результате на каждый сайт останется по 1 записи. После этого скрипта запускай VACUUM [FULL]. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2004, 15:01 |
|
|
start [/forum/topic.php?fid=53&msg=32535949&tid=2007843]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 458ms |
0 / 0 |