Skip to content

Commit 1e9a2d1

Browse files
committed
pathman: documentation update (russian)
1 parent b89c95d commit 1e9a2d1

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

contrib/pg_pathman/README.rus.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@
44

55
## Концепция pg_pathman
66

7-
Секционирование -- это способ разбиения одной большой таблицы на множество меньших по размеру. Для каждой записи можно однозначно определить секцию, в которой она должна храниться посредством вычисления ключа. Традиционно выделяют три стратегии секционирования:
8-
9-
* HASH - данные равномерно распределяются по секциям в соответствии со значениями hash-функции, вычисленными по некоторому атрибуту;
10-
* RANGE - данные распределяются по секциям, каждая из которых ответственна за заданный диапазон значений аттрибута;
11-
* LIST - для каждой секции определяется набор конкретных значений атрибута.
12-
7+
Секционирование -- это способ разбиения одной большой таблицы на множество меньших по размеру. Для каждой записи можно однозначно определить секцию, в которой она должна храниться посредством вычисления ключа.
138
Секционирование в postgres основано на механизме наследования. Каждому наследнику задается условие CHECK CONSTRAINT. Например:
149

1510
```
@@ -20,9 +15,7 @@ CREATE TABLE test_2 (CHECK ( id >= 200 AND id < 300 )) INHERITS (test);
2015

2116
Несмотря на гибкость, этот механизм обладает недостатками. Так при фильтрации данных оптимизатор вынужден перебирать все дочерние секции и сравнивать условие запроса с CHECK CONSTRAINT-ами секции, чтобы определить из каких секций ему следует загружать данные. При большом количестве секций это создает дополнительные накладные расходы, которые могут свести на нет выигрыш в производительности от применения секционирования.
2217

23-
Модуль `pg_pathman` предоставляет функции для создания и управления
24-
секциями (см. следующий раздел) и механизм секционирования,
25-
оптимизированный с учетом знания о структуре дочерних таблиц. Конфигурация сохраняется таблице `pathman_config`, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, атрибут и тип разбиения). В процессе инициализации модуля в разделяемую память сохраняется конфигурация дочерних таблиц в удобном для поиска формате. Получив запрос типа `SELECT` к секционированной таблице, `pg_pathman` анализирует дерево условий запроса и выделяет из него условия вида:
18+
Модуль `pg_pathman` предоставляет функции для создания и управления секциями, а также механизм секционирования, оптимизированный с учетом знания о структуре дочерних таблиц. Конфигурация сохраняется таблице `pathman_config`, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, атрибут и тип разбиения). В процессе инициализации `pg_pathman` кеширует конфигурацию дочерних таблиц в формате, удобном для быстрого поиска. Получив запрос типа `SELECT` к секционированной таблице, `pg_pathman` анализирует дерево условий запроса и выделяет из него условия вида:
2619

2720
```
2821
ПЕРЕМЕННАЯ ОПЕРАТОР КОНСТАНТА
@@ -32,9 +25,20 @@ CREATE TABLE test_2 (CHECK ( id >= 200 AND id < 300 )) INHERITS (test);
3225
```
3326
WHERE id = 150
3427
```
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.
3640

37-
## Installation
41+
## Установка
3842

3943
Для установки pg_pathman выполните в командной строке:
4044
```

0 commit comments

Comments
 (0)