From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Чистка таблиц |
Date: | 2012-01-06 23:04:04 |
Message-ID: | 20120106230404.GE883@apache.rbscorp.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Имеются таблицы
|t1_id|...|
|t2_id|t1_id|...|
|t3_id|...|
|t4_id|t1_id|t3_id|...|
То есть таблички с форейгнами.
Объявлены столбики связей так:
t1_id INTEGE REFERENCES t1 (t1_id) ON DELETE CASCADE ON UPDATE
CASCADE;
в одной из таблиц ON DELETE SET NULL;
Ну и значит в таблице
t1 ~ 2.5 млн записей
t2 ~ 0.5 млн записей
t3 - 10 записей
t4 ~ 1 млн записей
теперь удаляем
DELETE FROM t1 WHERE id = 2919364;
запрос выполняется немерянное количество времени.
План показывает примерно такой:
QUERY PLAN
----------------------------------------------------------------------------------------
Delete on t1 (cost=0.00..8.59 rows=1 width=6)
-> Index Scan using t1_pkey on t1 (cost=0.00..8.59 rows=1 width=6)
Index Cond: (id = 2919364)
(3 rows)
Памяти на инстансе мало. да. 1Гиг всего. Таблицы занимают примерно 2.5 Гиг.
Получается что добавление записей в эти таблицы (это таблицы с логами)
работает без задержек. А удаление записей - примерно одна в три
минуты. Причем удаление по PRIMARY KEY.
Вопрос что можно сделать/посмотреть/переделать, чтобы можно было
нормально чистить логи в такой таблице?
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2012-01-06 23:09:16 | Таблицы с взаимными связями |
Previous Message | Mihail Nasedkin | 2011-12-22 09:02:43 | Re: [pgsql-ru-general] проблема с последовательностями и pg_dump |