Re: COUNT(*) дофига весит

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 делается каждую ночь
>>
>
>

In response to

Responses

Browse pgsql-ru-general by date

  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(*) дофига весит