Skip site navigation (1) Skip section navigation (2)

Re: [pgsql-ru-general] Чистка таблиц

From: Dmitriy Igrishin <dmitigr(at)gmail(dot)com>
To: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: [pgsql-ru-general] Чистка таблиц
Date: 2012-01-07 10:47:03
Message-ID: CAAfz9KPN1fXAPW76RD4Qx86vPLdxBL_46wb=_BUzQRkhBfELvA@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-ru-general
С Рождеством !

7 января 2012 г. 3:04 пользователь Dmitry E. Oboukhov <unera(at)debian(dot)org>написал:

> Имеются таблицы
>
>  |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.
>
> Вопрос что можно сделать/посмотреть/переделать, чтобы можно было
> нормально чистить логи в такой таблице?
>
Можно попробовать принцип "разделяй и властвуй" -
воспользоваться разбиением дочерних таблиц (t2 и t4),
например, по диапазонам значений их внешних ключей
(t1 и t3), как рассказывается здесь:
http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html

-- 
// Dmitriy.

In response to

Responses

pgsql-ru-general by date

Next:From: Dmitry E. OboukhovDate: 2012-01-07 10:58:37
Subject: Re: Re: [pgsql-ru-general] Чистка таблиц
Previous:From: Dmitry E. OboukhovDate: 2012-01-06 23:09:16
Subject: Таблицы с взаимными связями

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group