Russian Qt Forum

Программирование => Базы данных => Тема начата: dd от Октябрь 01, 2011, 10:34



Название: PostgreSQL, удаленные строки и индексы
Отправлено: dd от Октябрь 01, 2011, 10:34
Доброго всем дня.
Столкнулся с проблемой. Стоит на фре постгрес 9.0.3.
Странные дела происходят.
Есть простая таблица с 3 полями, одно из которых - первичный ключ.
То есть индекс уже есть.
В таблицу раньше записывалось очень много строк.
Потом все стало тормозить, я все удалил из таблицы и больше не клал туда ничего.
Но видимо то ли индексы не удалились, то ли еще чего.
В общем запорс "delete from gps_current;" стал подвисать надолго.
Это при том, что ни одной строки в таблице нет.
Делаю запрос "EXPLAIN table gps_current;", вижу следующее:

database=# delete from gps_current;
--------- тут тормоза дикие ---------
database=#
database=# EXPLAIN table gps_current;
                               QUERY PLAN                               
------------------------------------------------------------------------
 Seq Scan on gps_current  (cost=0.00..397811.04 rows=17305904 width=76)
(1 row)

database=# drop table gps_current;

Откуда взялись эти 17 миллионов?
Таблица точно пуста. Видимо индексы не очистились после удаления.
Как быть?


Название: Re: PostgreSQL, удаленные строки и индексы
Отправлено: MoPDoBoPoT от Октябрь 01, 2011, 10:55
Сразу говорю, что с PostgreSQL я не знаком, поэтому только предположения.
Это либо глюк словлен, либо индекс не успел перестроиться (всё-таки не маленький). Можно попробовать пересобрать статистику или пересоздать индекс.


Название: Re: PostgreSQL, удаленные строки и индексы
Отправлено: dd от Октябрь 01, 2011, 11:02
По поводу не успел - отметается, таблица пуста месяца 2 уже.
Дроп ти пересоздание таблицы не выход.
Нужно знать причину и нормальное решение.


Название: Re: PostgreSQL, удаленные строки и индексы
Отправлено: andrew.k от Октябрь 02, 2011, 14:36
а vacuumdb не помогает?