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

Поиск
Список
Период
Сортировка
От silly_sad
Тема Re: COUNT(*) дофига весит
Дата
Msg-id 47FCC198.7020402@bankir.ru
обсуждение исходный текст
Ответ на COUNT(*) дофига весит  (silly_sad <sad@bankir.ru>)
Ответы Re: COUNT(*) дофига весит  (Maxim Boguk <mboguk@masterhost.ru>)
Список 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 делается каждую ночь
>>
>
>


В списке pgsql-ru-general по дате отправления:

Предыдущее
От: silly_sad
Дата:
Сообщение: COUNT(*) дофига весит
Следующее
От: Maxim Boguk
Дата:
Сообщение: Re: COUNT(*) дофига весит