Странный глюк в таблице c полем bytea

Добрый день.
Долгое бьюсь над непонятной проблемой и никак не могу решить.
Есть с таблица table1 с полями:
id int8
i int8
s_date timestamp
raw_data bytea
В таблице есть индекс:
CREATE UNIQUE INDEX "table1_main_idx" ON "public"."table1" USING btree ("id", "i")
Таблица обновляется функцией

CREATE OR REPLACE FUNCTION "public"."insert_raw_packet"(in_id int8, in_raw bytea)
  RETURNS "pg_catalog"."bool" AS $BODY$BEGIN
	UPDATE table1 SET i = i - 1 WHERE "id"=in_id;
	DELETE FROM table1 WHERE "id"=in_id AND i<0;
	INSERT INTO table1 ("id", "i", "raw_data") VALUES (in_id, 10, in_raw);
	RETURN true;
END 
$BODY$
  LANGUAGE 'plpgsql' VOLATILE COST 100
;

То есть в таблице хранятся последние 10 пакетов bytea по каждому id. В таблице сейчас находится всего около 35000 записей. Все работает хорошо, но время от времени вставки туда становятся очень долгими(порядка 1500мс), и соответственно очередь вставок лавинообразно начинает расти в приложении которое собственно туда вставляет(вставки идут в пределах одного коннекта).
Когда проблема появляется vacuum full analyze таблицы ничего не дает, reindex тоже, но стоит перезапустить postgres - проблема исчезает на какое то время, потом снова появляется.
Вызов функции обновления таблицы происходит с интенсивностью около 80 раз в секунду.
Из этой таблицы производится чтение на стороне php, путем запроса вида:
SELECT * FROM table1 WHERE id=24 ORDER BY i ASC
В логах ничего не нашел - только сообщения о долгих запросах.
Подскажите в чем может быть дело, или хотя бы куда копать или как найти причину проблемы, плиз.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

К сожалению, ничего

К сожалению, ничего конкретного посоветовать не могу.
Попробуйте с WAL поиграться в плане интевалов checkpoint и (возможно) перехода на асинхронный commit:
http://postgresql.ru.net/manual/wal.html
Также советую проработать главу о мониторинге активности СУБД:
http://postgresql.ru.net/manual/monitoring.html

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023