Skip to content
This repository was archived by the owner on May 26, 2022. It is now read-only.

Commit 3971ab5

Browse files
authored
Merge pull request #35 from olshevskiy87/t3
fix typos in partitioning chapter, part 2
2 parents 7c60210 + 61f4993 commit 3971ab5

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

partitioning/pg_partman.tex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
\section{Pg\_partman}
22

3-
Поскольку реализация партиционирования реализована не полноценно в PostgreSQL (для управлением партициями и данных в них приходится писать функции, тригеры и правила), то существует расширение, которое автоматизирует полностью данный процесс. \href{https://github.com/keithf4/pg\_partman}{PG Partition Manager}, он же pg\_partman, это расширение для создания и управления партициями и партициями партиций (sub-partitoning) в PostgreSQL. Поддерживает партрицирование по времени (time-based) или по последованности (serial-based). Для партрицированию по диапазону значений (range) существует отдельное расширение \href{https://github.com/moat/range\_partitioning}{Range Partitioning (range\_partitioning)}.
3+
Поскольку реализация партиционирования реализована неполноценно в PostgreSQL (для управления партициями и данными в них приходится писать функции, тригеры и правила), то существует расширение, которое автоматизирует полностью данный процесс. \href{https://github.com/keithf4/pg\_partman}{PG Partition Manager}, он же pg\_partman, это расширение для создания и управления партициями и партициями партиций (sub-partitoning) в PostgreSQL. Поддерживает партицирование по времени (time-based) или по последованности (serial-based). Для партицирования по диапазону значений (range) существует отдельное расширение \href{https://github.com/moat/range\_partitioning}{Range Partitioning (range\_partitioning)}.
44

5-
Текущая реализация поддерживается только INSERT операции, которые перенаправляют данные в нужную партицию. UPDATE операции, которые будут перемещать данные из одной партиции в другую не поддерживаются. При попытке вставить данные, на которые нет партиции, pg\_partman перемещает их в <<мастер>> (родительскую) таблицу. Данный вариант предпочтительнее, чем создавать автоматически новые партиции, поскольку это может привести к созданию десятков или сотен не нужных дочерных таблиц из-за ошибки в самих данных. Функция \lstinline!check_parent! позволят проверить попадение подобных данных в родительскую таблицу и решить, что с ними требуется делать (удалить или использовать \lstinline!partition_data_time/partition_data_id! для создания и переноса этих данных в партиции).
5+
Текущая реализация поддерживает только INSERT операции, которые перенаправляют данные в нужную партицию. UPDATE операции, которые будут перемещать данные из одной партиции в другую, не поддерживаются. При попытке вставить данные, на которые нет партиции, pg\_partman перемещает их в <<мастер>> (родительскую) таблицу. Данный вариант предпочтительнее, чем создавать автоматически новые партиции, поскольку это может привести к созданию десятков или сотен ненужных дочерных таблиц из-за ошибки в самих данных. Функция \lstinline!check_parent! позволят проверить попадение подобных данных в родительскую таблицу и решить, что с ними требуется делать (удалить или использовать \lstinline!partition_data_time/partition_data_id! для создания и переноса этих данных в партиции).
66

77
Данное расширение использует большинство атрибутов родительской таблицы для создания партиций: индексы, внешние ключи (опционально), tablespace, constraints, privileges и ownership. Под такое условие попадают OID и UNLOGGED таблицы.
88

9-
Партициями партиций (sub-partitoning) поддерживаются разных уровней: time->time, id->id, time->id и id->time. Нет лимитов на создания таких партиций, но стоит помнить что большое число партиций влияет на производительность родительской таблицы. Если размер партиций станет слишком большим, то придется увеличивать \lstinline!max_locks_per_transaction! параметр для базы данных (64 по умолчанию).
9+
Партициями партиций (sub-partitoning) поддерживаются разных уровней: time->time, id->id, time->id и id->time. Нет лимитов на создание таких партиций, но стоит помнить, что большое число партиций влияет на производительность родительской таблицы. Если размер партиций станет слишком большим, то придется увеличивать \lstinline!max_locks_per_transaction! параметр для базы данных (64 по умолчанию).
1010

11-
В PostgreSQL 9.4 появилась возможность создания пользовательских фоновых воркеров и динамически загружать их во время работы базы. Благодаря этому в pg\_partman есть собственный фоновый воркер, задача которого запускать \lstinline!run_maintenance! функцию каждый заданный промежуток времени. Если у Вас версия PostgreSQL ниже 9.4, то придется воспользоватся внешним планировщиком для выполнения данной функции (например cron). Задача данной функции проверять и автоматически создавать партиции и опционально чистить старые.
11+
В PostgreSQL 9.4 появилась возможность создания пользовательских фоновых воркеров и динамически загружать их во время работы базы. Благодаря этому в pg\_partman есть собственный фоновый воркер, задача которого запускать \lstinline!run_maintenance! функцию каждый заданный промежуток времени. Если у Вас версия PostgreSQL ниже 9.4, то придется воспользоватся внешним планировщиком для выполнения данной функции (например cron). Задача данной функции - проверять и автоматически создавать партиции и опционально чистить старые.
1212

1313
\subsection{Пример использования}
1414

@@ -43,7 +43,7 @@ \subsection{Пример использования}
4343
\item \lstinline!pg_partman_bgw.interval!~--- количество секунд между вызовами \lstinline!run_maintenance! функции. По умолчанию 3600 (1 час);
4444
\item \lstinline!pg_partman_bgw.role!~--- роль для запуска \lstinline!run_maintenance! функции. По умолчанию postgres. Разрешена только одна роль;
4545
\item \lstinline!pg_partman_bgw.analyze!~--- запускать или нет \lstinline!ANALYZE! после создания партиций на родительскую таблицу. По умолчанию включено;
46-
\item \lstinline!pg_partman_bgw.jobmon!~--- разрешить или нет использовать \lstinline!pg_jobmon! расширение для мониторинга, что партрицирование работает без проблем. По умолчанию включено;
46+
\item \lstinline!pg_partman_bgw.jobmon!~--- разрешить или нет использовать \lstinline!pg_jobmon! расширение для мониторинга, что партицирование работает без проблем. По умолчанию включено;
4747
\end{itemize}
4848

4949
Далее подключаемся к базе данных и активируем расширение:

partitioning/pgslice.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ \section{Pgslice}
100100
COMMIT;
101101
\end{lstlisting}
102102

103-
Через \lstinline!--past! и \lstinline!--future! опции указывается количество партицей. Далее можно переместить данные в партиции:
103+
Через \lstinline!--past! и \lstinline!--future! опции указывается количество партиций. Далее можно переместить данные в партиции:
104104

105105
\begin{lstlisting}[language=Bash,label=lst:pgslice6,caption=Pgslice fill]
106106
$ pgslice fill users
@@ -112,7 +112,7 @@ \section{Pgslice}
112112

113113
Через \lstinline!--batch-size! и \lstinline!--sleep! опции можно управлять скоростью переноса данных.
114114

115-
После этого можно переключится на новую таблицу с партициями:
115+
После этого можно переключиться на новую таблицу с партициями:
116116

117117
\begin{lstlisting}[language=Bash,label=lst:pgslice7,caption=Pgslice swap]
118118
$ pgslice swap users

0 commit comments

Comments
 (0)