From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | Виктор Вислобоков <corochoone(at)gmail(dot)com> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Массивы: REFERENCES и выборки |
Date: | 2012-12-16 18:05:05 |
Message-ID: | 20121216180505.GB3446@vdsl.uvw.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
> Ну почитайте, возможно наведёт на мысли
> http://postgresql.ru.net/manual/ddl-partitioning.html
ну да примерно так мы и партицируем.
вот пример точки:
Схема | Имя | Тип | Владелец | Размер | Описание
--------+-------------------+--------------------+----------+------------+--------------
public | points | таблица | points | 8192 bytes | Точки от GPS
public | points_2011_10_12 | таблица | points | 16 kB |
public | points_2011_10_13 | таблица | points | 240 kB |
public | points_2011_10_14 | таблица | points | 144 kB |
public | points_2011_10_15 | таблица | points | 80 kB |
public | points_2011_10_16 | таблица | points | 104 kB |
public | points_2011_10_17 | таблица | points | 80 kB |
public | points_2011_10_18 | таблица | points | 80 kB |
public | points_2011_10_19 | таблица | points | 184 kB |
public | points_2011_10_20 | таблица | points | 1944 kB |
public | points_2011_10_21 | таблица | points | 3256 kB |
...
public | points_2012_12_10 | таблица | points | 115 MB |
public | points_2012_12_11 | таблица | points | 151 MB |
public | points_2012_12_12 | таблица | points | 164 MB |
public | points_2012_12_13 | таблица | points | 164 MB |
public | points_2012_12_14 | таблица | points | 177 MB |
public | points_2012_12_15 | таблица | points | 176 MB |
public | points_2012_12_16 | таблица | points | 93 MB |
все таблички пишутся по дню, имеют собственные индексы итп итд
обращение к общей points позволяет вообще все точки вытащить за весь
период их сбора.
вопрос тут в том что бывает что чисто исторически уже написано много
кода который делает INSERT в родительскую таблицу, тогда мы
партицируем методом переноса данных из основной в архивную
WITH "del" AS (DELETE ... RETURNING)
INSERT INTO "archive_2012_21_21" SELECT "del";
кроме VACUUM вроде никаких различий между методами :)
> FOREIGN не догма, надо разбираться для чего оно нужно, тем более что
> функциональность FOREIGN KEY долгое время поддерживалась в PostgreSQL
> с помощью триггеров, значит и вам никто не мешает написать триггеры,
> работающие с разбиениями так, как это нужно вам. Главное, что
> разбиения позволяют существенно оптимизировать скорость выполнения
> запросов.
триггеры вещь довольно неудобная в плане того что просто в консольке
сразу не видно что на что ограничивается и куда относится.
а так да триггеры можно юзать
--
. ''`. 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 | Sergey Konoplev | 2012-12-16 23:55:16 | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Массивы: REFERENCES и выборки |
Previous Message | Виктор Вислобоков | 2012-12-16 17:49:37 | Re: [pgsql-ru-general] Массивы: REFERENCES и выборки |