Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite6288ad

Browse files
committed
Merge branch 'pathman_pgpro9_5' into PGPRO9_5
2 parents1d2dd09 +1e0e9b5 commite6288ad

File tree

12 files changed

+805
-265
lines changed

12 files changed

+805
-265
lines changed

‎contrib/pg_pathman/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ include $(top_builddir)/src/Makefile.global
2323
include$(top_srcdir)/contrib/contrib-global.mk
2424
endif
2525

26-
$(EXTENSION)--$(EXTVERSION).sql:sql/init.sqlsql/hash.sqlsql/range.sql
26+
$(EXTENSION)--$(EXTVERSION).sql: init.sql hash.sql range.sql
2727
cat$^>$@
2828
EXTRA_REGRESS_OPTS=--temp-config=$(top_srcdir)/$(subdir)/conf.add
2929

‎contrib/pg_pathman/README.md

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ create_hash_partitions(
5454
attribute TEXT,
5555
partitions_count INTEGER)
5656
```
57-
Performs HASH partitioning for`relation` by integer key`attribute`. Creates`partitions_count` partitions and trigger on INSERT.Data doesn'tautomatically copied from parenttableto partitions. Use`partition_data()` function (see below) to migrate data.
57+
Performs HASH partitioning for`relation` by integer key`attribute`. Creates`partitions_count` partitions and trigger on INSERT.All the data will beautomatically copied fromtheparent to partitions.
5858

5959
```
6060
create_range_partitions(
@@ -63,29 +63,40 @@ create_range_partitions(
6363
start_value ANYELEMENT,
6464
interval ANYELEMENT,
6565
premake INTEGER)
66-
```
67-
Performs RANGE partitioning for`relation` by partitioning key`attribute`.`start_value` argument specifies initial value,`interval` sets the range of values in a single partition,`premake` is the number of premade partitions (the only one partition will be created if`premake` is 0).
68-
```
66+
6967
create_range_partitions(
7068
relation TEXT,
7169
attribute TEXT,
7270
start_value ANYELEMENT,
7371
interval INTERVAL,
7472
premake INTEGER)
7573
```
76-
Same as above but suitable for`DATE` and`TIMESTAMP` partitioning keys.
74+
Performs RANGE partitioning for`relation` by partitioning key`attribute`.`start_value` argument specifies initial value,`interval` sets the range of values in a single partition,`premake` is the number of premade partitions. All the data will be automatically copied from the parent to partitions.
7775

78-
###Utilities
7976
```
80-
partition_data(parent text)
77+
create_partitions_from_range(
78+
relation TEXT,
79+
attribute TEXT,
80+
start_value ANYELEMENT,
81+
end_value ANYELEMENT,
82+
interval ANYELEMENT)
83+
84+
create_partitions_from_range(
85+
relation TEXT,
86+
attribute TEXT,
87+
start_value ANYELEMENT,
88+
end_value ANYELEMENT,
89+
interval INTERVAL)
8190
```
82-
Copies data from parent table to its partitions.
91+
Performs RANGE-partitioning from specified range for`relation` by partitioning key`attribute`. Data will be copied to partitions as well.
92+
93+
###Utilities
8394
```
8495
create_hash_update_trigger(parent TEXT)
8596
```
8697
Creates the trigger on UPDATE for HASH partitions. The UPDATE trigger isn't created by default because of overhead. It is useful in cases when key attribute could be changed.
8798
```
88-
create_hash_update_trigger(parent TEXT)
99+
create_range_update_trigger(parent TEXT)
89100
```
90101
Same as above for RANGE sections.
91102

@@ -124,10 +135,7 @@ If partitions are supposed to have indexes, then they should be created for pare
124135
```
125136
SELECT create_hash_partitions('hash_rel', 'value', 100);
126137
```
127-
This will create new partitions but data will still be in the parent table. To move data to the corresponding partitions use partition_data() function:
128-
```
129-
SELECT partition_data('hash_rel');
130-
```
138+
This will create new partitions and move the data from parent to partitions.
131139
Here is an example of the query with filtering by partitioning key and its plan:
132140
```
133141
SELECT * FROM hash_rel WHERE value = 1234;
@@ -159,12 +167,9 @@ INSERT INTO range_rel (dt) SELECT g FROM generate_series('2010-01-01'::date, '20
159167
```
160168
Run create_range_partitions() function to create partitions so that each partition would contain data for one month:
161169
```
162-
SELECT create_range_partitions('range_rel', 'dt', '2010-01-01'::date, '1 month'::interval, 59);
163-
```
164-
It will create 60 partitions (one partition is created regardless of`premake` parameter). Now move data from the parent to partitions.
165-
```
166-
SELECT partition_data('range_rel');
170+
SELECT create_range_partitions('range_rel', 'dt', '2010-01-01'::date, '1 month'::interval, 60);
167171
```
172+
It will create 60 partitions and move the data from parent to partitions.
168173
To merge to adjacent partitions run merge_range_partitions() function:
169174
```
170175
SELECT merge_range_partitions('range_rel_1', 'range_rel_2');

‎contrib/pg_pathman/README.rus.md

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ create_hash_partitions(
5656
attribute TEXT,
5757
partitions_count INTEGER)
5858
```
59-
Выполняет HASH-секционирование таблицы`relation` по целочисленному полю`attribute`. Создает`partitions_count` дочерних секций, а также триггер на вставку. Данные из родительской таблицыне копируютсяавтоматически в дочерние. Миграцию данных можно выполнить с помощью функции`partition_data()` (см. ниже), либо вручную.
59+
Выполняет HASH-секционирование таблицы`relation` по целочисленному полю`attribute`. Создает`partitions_count` дочерних секций, а также триггер на вставку. Данные из родительской таблицыбудутавтоматическископированыв дочерние.
6060

6161
```
6262
create_range_partitions(
@@ -65,29 +65,40 @@ create_range_partitions(
6565
start_value ANYELEMENT,
6666
interval ANYELEMENT,
6767
premake INTEGER)
68-
```
69-
Выполняет RANGE-секционирование таблицы`relation` по полю`attribute`. Аргумент`start_value` задает начальное значение,`interval` -- диапазон значений внутри одной секции,`premake` -- количество заранее создаваемых секций (если 0, то будет создана единственная секция).
70-
```
68+
7169
create_range_partitions(
7270
relation TEXT,
7371
attribute TEXT,
7472
start_value ANYELEMENT,
7573
interval INTERVAL,
7674
premake INTEGER)
7775
```
78-
Аналогично предыдущей с тем лишь отличием, что данная функция предназначена для секционирования по полю типа`DATE` или`TIMESTAMP`.
76+
Выполняет RANGE-секционирование таблицы`relation` по полю`attribute`. Аргумент`start_value` задает начальное значение,`interval` -- диапазон значений внутри одной секции,`premake` -- количество заранее создаваемых секций. Данные из родительской таблицы будут автоматически скопированы в дочерние.
7977

80-
###Утилиты
8178
```
82-
partition_data(parent text)
79+
create_partitions_from_range(
80+
relation TEXT,
81+
attribute TEXT,
82+
start_value ANYELEMENT,
83+
end_value ANYELEMENT,
84+
interval ANYELEMENT)
85+
86+
create_partitions_from_range(
87+
relation TEXT,
88+
attribute TEXT,
89+
start_value ANYELEMENT,
90+
end_value ANYELEMENT,
91+
interval INTERVAL)
8392
```
84-
Копирует данные из родительской таблицы`parent` в дочерние секции.
93+
Выполняет RANGE-секционирование для заданного диапазона таблицы`relation` по полю`attribute`. Данные также будут скопированы в дочерние секции.
94+
95+
###Утилиты
8596
```
8697
create_hash_update_trigger(parent TEXT)
8798
```
8899
Создает триггер на UPDATE для HASH секций. По-умолчанию триггер на обновление данных не создается, т.к. это создает дополнительные накладные расходы. Триггер полезен только в том случае, когда меняется значение ключевого аттрибута.
89100
```
90-
create_hash_update_trigger(parent TEXT)
101+
create_range_update_trigger(parent TEXT)
91102
```
92103
Аналогично предыдущей, но для RANGE секций.
93104

@@ -126,10 +137,6 @@ INSERT INTO hash_rel (value) SELECT g FROM generate_series(1, 10000) as g;
126137
```
127138
SELECT create_hash_partitions('hash_rel', 'value', 100);
128139
```
129-
Перенесем данные из родительской таблицы в дочерние секции.
130-
```
131-
SELECT partition_data('hash_rel');
132-
```
133140
Пример построения плана для запроса с фильтрацией по ключевому полю:
134141
```
135142
SELECT * FROM hash_rel WHERE value = 1234;
@@ -162,13 +169,7 @@ INSERT INTO range_rel (dt) SELECT g FROM generate_series('2010-01-01'::date, '20
162169
```
163170
Разобьем таблицу на 60 секций так, чтобы каждая секция содержала данные за один месяц:
164171
```
165-
SELECT create_range_partitions('range_rel', 'dt', '2010-01-01'::date, '1 month'::interval, 59);
166-
```
167-
>Значение`premake` равно 59, а не 60, т.к. 1 секция создается независимо от значения`premake`
168-
169-
Перенесем данные из родительской таблицы в дочерние секции.
170-
```
171-
SELECT partition_data('range_rel');
172+
SELECT create_range_partitions('range_rel', 'dt', '2010-01-01'::date, '1 month'::interval, 60);
172173
```
173174
Объединим секции первые две секции:
174175
```

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp