Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Принцип обновления статистики? / 4 сообщений из 4, страница 1 из 1
27.12.2004, 14:41
    #32846169
Принцип обновления статистики?
Кто может пояснить принцип обновления статистики. Ситуация такая:
Табличка начинает заполняться данными с начала месяца, строка 420 байт,
строк за месяц будет около 25 миллионов.

Опции установлены:
"default_statistics_target";"40"
"stats_block_level";"on"
"stats_command_string";"on"
"stats_reset_on_server_start";"on"
"stats_row_level";"on"
"stats_start_collector";"on"

Где-то с полмесяца все идет нормально! потом все уходит в синюю даль!
Ясно что статистика не обновляется, обновляю все ОК! На сл. день все
опять повторяется, запросы по первой половине нормально, по части, где
статистика не обновлялась - синяя даль!

Вопрос: почему при:
------------------------------------------------------------------------------------------
Начиная с версии 7.4, в дистрибутиве PostgreSQL поставляется программа pg_autovacuum, которая отслеживает изменения в таблицах и автоматически запускает команды VACUUM и/или ANALYZE для этих таблиц по достижении определённого предела.

Использование этой программы позволяет отказаться от настройки периодического выполнения команд VACUUM и ANALYZE. Более того, в случае использования pg_autovacuum ресурсы не тратятся впустую на обработку таблиц, которые практически не подвергались изменениям.

Для работы pg_autovacuum должен быть включён сборщик статистики (см. пункт 2.4.2) и включён параметр stats_row_level.
------------------------------------------------------------------------------------------
всех этих параметрах автообновление идет криво, или нужно
какой-то параметр подкрутить, чтобы обновление шло не на
15-20 дней а на весь месяц, т.е. на всю таблицу!
Есть же какой-то принцип автообновления? Спасибо!
...
Рейтинг: 0 / 0
27.12.2004, 15:19
    #32846290
Sad Spirit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принцип обновления статистики?
эээ... а ты сам autovacuum запустил, надеюсь?
...
Рейтинг: 0 / 0
28.12.2004, 10:50
    #32847234
Принцип обновления статистики?
Вот часть из *postgresql в /etc/rc.d/init.d:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        if [ $pid ] && /usr/bin/pg_ctl status -D $PGDATA > /dev/null  2 >& 1 
        then
                echo $"Postmaster already running."
        else
                #all systems go -- remove any stale lock files
                rm -f /tmp/.s.PGSQL.${PGPORT} > /dev/null
                echo -n "$PSQL_START"
                su -l postgres -c "/usr/bin/pg_ctl  -D $PGDATA -p /usr/bin/postmaster -o '-p ${PGPORT}' start  > /dev/null 2>&
                sleep 1
                pid=`pidof -s /usr/bin/postmaster`
                if [ $pid ]
                then
                        success "$PSQL_START"
                        touch /var/lock/subsys/${NAME}
                        echo $pid > /var/run/postmaster.${PGPORT}.pid
                        echo
                        su -l postgres -s /bin/sh -c "/usr/bin/pg_autovacuum -D -s  3000  -S  2 " < /dev/null
                else
                        failure "$PSQL_START"
                        echo
                fi
        fi
Все запускается (должно :-)) автоматически при старте сервера!
...
Рейтинг: 0 / 0
29.12.2004, 09:31
    #32848891
Принцип обновления статистики?
И все таки, у pg_autovakuum, есть параметры коммандной строки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-v vacuum base threshold
-V vacuum scaling factor
-a analyze base threshold
-A analyze scaling factor: see Vacuum and Analyze.
...
Numerous arguments have default values defined in pg_autovacuum.h.  Atthe time of writing they are:-d  1 -v  1000 -V  2 -a  500  (half of -v if not specified)-A  1    (half of -v if not specified)-s  300  ( 5  minutes)-S  2 
...
- If the number of (inserts + updates + deletes) > AnalyzeThreshold, then  only an analyze is performed.
- If the number of (deletes + updates) > VacuumThreshold, then a  vacuum analyze is performed.
VacuumThreshold is equal to:    vacuum_base_value + (vacuum_scaling_factor * "number of tuples in the table"
AnalyzeThreshold is equal to:    analyze_base_value + (analyze_scaling_factor * "number of tuples in the tablе"
...
Т.Е. исходя из подсчетов последнего абзаца имеем:
500+(1*число строк), т.е если в сутки вставляется примерно
300 000 строк, то это значит, что автообновление статистики
будет только на первый день заполнения таблицы, и больше никогда...
Тогда как заставить АВТОВАКУУМ выполнять обновление статистики?
Может ли коэффициент масштабирования - analyze_scaling_factor,
быть отрицательным?
Кто может добился автообновления, поделитесь пожалуйста, а то в конце
месяца обновление статистики, по текущим таблицам идет по ночам,
и на каждую нужно около 3 часов!!! Как бы это упорядочить штатным
средством?
Откликнитесь, кто решил или знает как, поделитесь...Спасибо!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Принцип обновления статистики? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]