You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: contrib/pg_pathman/README.rus.md
+15-11Lines changed: 15 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,7 @@
4
4
5
5
##Концепция pg_pathman
6
6
7
-
Секционирование -- это способ разбиения одной большой таблицы на множество меньших по размеру. Для каждой записи можно однозначно определить секцию, в которой она должна храниться посредством вычисления ключа. Традиционно выделяют три стратегии секционирования:
8
-
9
-
* HASH - данные равномерно распределяются по секциям в соответствии со значениями hash-функции, вычисленными по некоторому атрибуту;
10
-
* RANGE - данные распределяются по секциям, каждая из которых ответственна за заданный диапазон значений аттрибута;
11
-
* LIST - для каждой секции определяется набор конкретных значений атрибута.
12
-
7
+
Секционирование -- это способ разбиения одной большой таблицы на множество меньших по размеру. Для каждой записи можно однозначно определить секцию, в которой она должна храниться посредством вычисления ключа.
13
8
Секционирование в postgres основано на механизме наследования. Каждому наследнику задается условие CHECK CONSTRAINT. Например:
14
9
15
10
```
@@ -20,9 +15,7 @@ CREATE TABLE test_2 (CHECK ( id >= 200 AND id < 300 )) INHERITS (test);
20
15
21
16
Несмотря на гибкость, этот механизм обладает недостатками. Так при фильтрации данных оптимизатор вынужден перебирать все дочерние секции и сравнивать условие запроса с CHECK CONSTRAINT-ами секции, чтобы определить из каких секций ему следует загружать данные. При большом количестве секций это создает дополнительные накладные расходы, которые могут свести на нет выигрыш в производительности от применения секционирования.
22
17
23
-
Модуль`pg_pathman` предоставляет функции для создания и управления
24
-
секциями (см. следующий раздел) и механизм секционирования,
25
-
оптимизированный с учетом знания о структуре дочерних таблиц. Конфигурация сохраняется таблице`pathman_config`, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, атрибут и тип разбиения). В процессе инициализации модуля в разделяемую память сохраняется конфигурация дочерних таблиц в удобном для поиска формате. Получив запрос типа`SELECT` к секционированной таблице,`pg_pathman` анализирует дерево условий запроса и выделяет из него условия вида:
18
+
Модуль `pg_pathman` предоставляет функции для создания и управления секциями, а также механизм секционирования, оптимизированный с учетом знания о структуре дочерних таблиц. Конфигурация сохраняется таблице `pathman_config`, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, атрибут и тип разбиения). В процессе инициализации `pg_pathman` кеширует конфигурацию дочерних таблиц в формате, удобном для быстрого поиска. Получив запрос типа `SELECT` к секционированной таблице, `pg_pathman` анализирует дерево условий запроса и выделяет из него условия вида:
26
19
27
20
```
28
21
ПЕРЕМЕННАЯ ОПЕРАТОР КОНСТАНТА
@@ -32,9 +25,20 @@ CREATE TABLE test_2 (CHECK ( id >= 200 AND id < 300 )) INHERITS (test);
32
25
```
33
26
WHERE id = 150
34
27
```
35
-
Затем основываясь на стратегии секционирования и условиях запроса`pg_pathman` выбирает соответствующие секции и строит план.
28
+
Затем основываясь на стратегии секционирования и условиях запроса`pg_pathman` находит в кеше соответствующие секции и строит план.
29
+
30
+
В текущей версии`pg_pathman` поддерживает следующие типы секционирования:
31
+
32
+
* RANGE - разбивает таблицу на секции по диапазонам ключевого аттрибута; для оптимизации построения плана используется метод бинарного поиска.
33
+
* HASH - данные равномерно распределяются по секциям в соответствии со значениями hash-функции, вычисленными по заданному целочисленному атрибуту.
34
+
35
+
##Roadmap
36
+
37
+
* Оптимизация поиска секции для соединения (join) таблиц методом NestedLoop;
38
+
* LIST-секционирование;
39
+
* HASH-секционирование по ключевому аттрибуту с типом, отличным от INTEGER.
36
40
37
-
##Installation
41
+
##Установка
38
42
39
43
Для установки pg_pathman выполните в командной строке: