Перейти к содержимому
Калькуляторы

Устаревание индексов в Postgresql?

Есть постгрескл таблица с кучей данных.

Таблица массово наполняется и массово удаляются записи.

Создан индекс:

CREATE INDEX trends_uint_1 on trends_uint (itemid,clock);

 

Выборка из базы делается запросом:

'SELECT itemid,'.$calc_field.' AS i,'.
                                               'SUM(num) AS count,AVG(value_avg)*1.2 AS avg,MIN(value_min) AS min,'.
                                               'MAX(value_max)*1.2 AS max,MAX(clock) AS clock'.
                                       ' FROM trends_uint '.
                                       ' WHERE itemid='.$this->items[$i]['itemid'].
                                               ' AND clock>='.$from_time.
                                               ' AND clock<='.$to_time.
                                       ' GROUP BY itemid,'.$calc_field

Как можно заметить - это табла заббикса.

Так вот, когда только создал индекс, запросы на выборку к базе летали.

С течением времени по мере вставки и удаления новых и старых записей, начались тормоза в вебинтерфейсе.

Заново удалил и создал индекс, снова выборка летает.

Возможно ли что индексы устаревают для таблицы?

Изменено пользователем Macro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сделал так:

autovacuum = on                 # Enable autovacuum subprocess?  'on'
                                       # requires track_counts to also be on.
log_autovacuum_min_duration = -1        # -1 disables, 0 logs all actions and
                                       # their durations, > 0 logs only
                                       # actions running at least this number
                                       # of milliseconds.
autovacuum_max_workers = 3              # max number of autovacuum subprocesses
autovacuum_naptime = 1min               # time between autovacuum runs
autovacuum_vacuum_threshold = 500       # min number of row updates before
                                       # vacuum
autovacuum_analyze_threshold = 500      # min number of row updates before

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

точно именно в базе проблемы? проверьте ваш селект через explain. можно еще реиндексирование сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вакуум фул еще стоит сделать..

 

ну вы ещё БД пересоздать посоветуйте. vacuum full считается небезопасной операцией и не рекомендуется к использованию. и вообще оно от версии зависит. http://wiki.postgresql.org/wiki/VACUUM_FULL

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

точно селект.

из консоли делаю и жду вывод.

Сейчас индексы уже пересоздал, буду наблюдать.

Всем спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.