Re: Массивы: REFERENCES и выборки

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

In response to

Browse pgsql-ru-general by date

  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 и выборки