Инструменты пользователя

Инструменты сайта


it:postgresql:partition

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
it:postgresql:partition [2022/12/20 10:29] – создано ura2404it:postgresql:partition [2023/04/04 08:42] (текущий) ura2404
Строка 3: Строка 3:
 >Секционируемые таблицы не поддерживают ограничения UNIQUE, PRIMARY KEY, EXCLUDE и FOREIGN KEY; однако вы можете определить эти ограничения в отдельных секциях. >Секционируемые таблицы не поддерживают ограничения UNIQUE, PRIMARY KEY, EXCLUDE и FOREIGN KEY; однако вы можете определить эти ограничения в отдельных секциях.
  
-[[https://ru.stackoverflow.com/questions/1168712/Секционирование-существующей-таблицы-postgresql]] {{it:postgresql:partition:sekcionirovanie_suschestvujuschej_tablicy_postgresql.mht|mht}} - Секционирование существующей таблицы PostgreSQL+[[https://ru.stackoverflow.com/questions/1168712/Секционирование-существующей-таблицы-postgresql]] {{it:postgresql:partition:sekcionirovanie_suschestvujuschej_tablicy_postgresql.mht|mht}} - Секционирование существующей таблицы PostgreSQL\\ 
 +[[https://habr.com/ru/company/skyeng/blog/583222/]]  
 +{{it:postgresql:partition:particirovanie_tablic_v_postgresql.mht|mht}} - Партицирование таблиц в PostgreSQL: чек-лист для старта / есть про партицирование через наследование\\ 
 + 
 + 
 +<code sql> 
 +/* 
 +-- новая таблица 
 +CREATE TABLE IF NOT EXISTS foo ( 
 + ts timestamp NULL 
 + ,c1 int4 NULL 
 + ,c2 text NULL 
 +)PARTITION BY RANGE (ts); 
 +  
 +CREATE TABLE IF NOT EXISTS foo_01 PARTITION OF foo ( 
 + primary key (c1) 
 +) FOR VALUES FROM (MINVALUE) TO ('2020-01-02'); 
 + 
 +CREATE TABLE IF NOT EXISTS foo_02 PARTITION OF foo ( 
 + primary key (c1) 
 +) FOR VALUES FROM ('2020-01-02') TO ('2020-01-03'); 
 + 
 +DELETE FROM foo; 
 +INSERT INTO foo SELECT '2020-01-01', i, md5(random()::text) FROM generate_series(1, 10) AS i; 
 +INSERT INTO foo SELECT '2020-01-02', i, md5(random()::text) FROM generate_series(11, 20) AS i; 
 +INSERT INTO foo SELECT '2000-01-01', i, md5(random()::text) FROM generate_series(100, 110) AS i; 
 + 
 + 
 +-- ----------------------------------------------------------------------------------------- 
 +-- существующая таблица 
 +CREATE TABLE IF NOT EXISTS foo2 ( 
 + ts timestamp NULL 
 + ,c1 int4 NULL primary key 
 + ,c2 text NULL 
 +); 
 +DELETE FROM foo2; 
 +INSERT INTO foo2 SELECT '2020-01-01', i, md5(random()::text) FROM generate_series(1, 10) AS i; 
 +INSERT INTO foo2 SELECT '2020-01-02', i, md5(random()::text) FROM generate_series(11, 20) AS i; 
 +INSERT INTO foo2 SELECT '2000-01-01', i, md5(random()::text) FROM generate_series(100, 110) AS i; 
 + 
 +CREATE TABLE IF NOT EXISTS foo22 ( 
 + ts timestamp NULL 
 + ,c1 int4 NULL 
 + ,c2 text NULL 
 +)PARTITION BY RANGE (ts); 
 + 
 +CREATE TABLE IF NOT EXISTS foo2_01 PARTITION OF foo22 ( 
 + primary key (c1) 
 +) FOR VALUES FROM (MINVALUE) TO ('2020-01-02'); 
 + 
 +CREATE TABLE IF NOT EXISTS foo2_02 PARTITION OF foo22 ( 
 + primary key (c1) 
 +) FOR VALUES FROM ('2020-01-02') TO ('2020-01-03'); 
 + 
 +alter table foo2 rename to _foo; 
 +alter table foo22 rename to foo2; 
 +--alter table foo2 attach partition _foo for values from (MINVALUE) to ('2020-01-02'); 
 +--alter table foo2 attach partition _foo for values from ('2020-01-02') to ('2020-01-03'); 
 + 
 +INSERT INTO foo2(ts,c1,c2) select ts,c1,c2 FROM _foo; 
 +DROP TABLE _foo; 
 +*/ 
 +-- ----------------------------------------------------------------------------------------- 
 +-- наследование 
 +CREATE TABLE IF NOT EXISTS foo3 ( 
 + ts timestamp NULL 
 + ,c1 int4 NULL 
 +)PARTITION BY RANGE (ts); 
 + 
 + 
 +CREATE TABLE IF NOT EXISTS foo31 ( 
 + c2 text NULL 
 +)INHERITS (foo3); 
 + 
 +DELETE FROM foo31; 
 +INSERT INTO foo31 SELECT '2020-01-01', i, md5(random()::text) FROM generate_series(1, 10) AS i; 
 +INSERT INTO foo31 SELECT '2020-01-02', i, md5(random()::text) FROM generate_series(11, 20) AS i; 
 +INSERT INTO foo31 SELECT '2000-01-01', i, md5(random()::text) FROM generate_series(100, 110) AS i; 
 + 
 +</code>
it/postgresql/partition.1671532188.txt.gz · Последнее изменение: 2022/12/20 10:29 — ura2404