From: | silly_sad <sad(at)bankir(dot)ru> |
---|---|
To: | Maxim Boguk <mboguk(at)masterhost(dot)ru>, pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: COUNT(*) дофига весит |
Date: | 2008-04-09 13:16:08 |
Message-ID: | 47FCC198.7020402@bankir.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Спасибо.
Попытаюсь ответить как можно точнее:
Maxim Boguk wrote:
> 1)Какая версия postgres?
8.2.6
> 2)Что стоит в настройках postgresql.conf для *_cost параметров?
# - Planner Cost Constants -
#seq_page_cost = 1.0 # measured on an arbitrary scale
#random_page_cost = 4.0 # same scale as above
#cpu_tuple_cost = 0.01 # same scale as above
#cpu_index_tuple_cost = 0.005 # same scale as above
#cpu_operator_cost = 0.0025 # same scale as above
#effective_cache_size = 1024MB
> 3)Если сделать 5 explain ANALYZE этого запроса подряд один за другим
> время будет постоянное или только первый запрос притормаживает?
Время выполнения постоянное между эксплэйнами
(но естественно зависит от загрузки сервера)
> 4)Что показывает SELECT pg_relation_size('accounts');
pg_relation_size
------------------
353107968
> 5)Насколько вообще сервер занят (load avg/нагрузка на диски)?
Total: 169 processes, 1706 lwps, load averages: 0.93, 1.11, 1.22
вот в текущий момент нагрузка на диск мизерная,
я запускаю больной запрос, запрос тормозит
iostat роста нагрузки на диск не показывает
> 6)Нету ли старых открытых транзакций (более 24х часов скажем)?
Была одна. (как могло влиять ?)
Закрыл. (что надо сделать чтобы это возымело эффект?)
>> Подскажите пожалуйста какие ошибки
>> (можетбыть в настройках постгреса)
>> могли привести вот к такому эффекту:
>>
>> personal=# explain ANALYZE SELECT count(*) from accounts;
>>
>> QUERY PLAN
>> -------------------------------------------------------------
>> Aggregate (cost=43126.25..43126.26 rows=1 width=0) (actual
>> time=975.628..975.628 rows=1 loops=1)
>> -> Seq Scan on accounts (cost=0.00..43121.80 rows=1780 width=0)
>> (actual time=0.122..974.565 rows=1782 loops=1)
>> Total runtime: 975.687 ms
>>
>>
>> personal=# SELECT count(*) from accounts;
>>
>> count
>> -------
>> 1782
>>
>>
>> Всего-то 1782 записи ! и такая огромная цена.
>> и реальное время выполнения тоже неприемлемое.
>>
>> vacuum analyze делается каждую ночь
>>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Maxim Boguk | 2008-04-09 14:31:37 | Re: COUNT(*) дофига весит |
Previous Message | silly_sad | 2008-04-09 11:30:27 | COUNT(*) дофига весит |