Чистка таблиц
От | Dmitry E. Oboukhov |
---|---|
Тема | Чистка таблиц |
Дата | |
Msg-id | 20120106230404.GE883@apache.rbscorp.ru обсуждение исходный текст |
Список | 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@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Вложения
В списке pgsql-ru-general по дате отправления: