- PVSM.RU - https://www.pvsm.ru -
Вышел релиз PostgreSQL 10. Мы долго ждали появления новых фич. Мои коллеги ещё весной тестировали новую версию и отправляли баг-репорты: раз [1], два [2]. А я был очень рад обновлению и подготовил перевод Release Notes на русский язык. Давайте обсуждать.
E.1.1. Обзор (TLDR) [3]
E.1.2. Миграция на версию 10 [4]
E.1.3. Изменения [5]
E.1.3.1. Сервер [6]
E.1.3.1.1. Параллельные запросы [7]
E.1.3.1.2. Индексы [8]
E.1.3.1.3. Блокировки [9]
E.1.3.1.4. Оптимизатор [10]
E.1.3.1.5. Общая производительность [11]
E.1.3.1.6. Мониторинг [12]
E.1.3.1.6.1. Логгирование [13]
E.1.3.1.6.2. pg_stat_activity [14]
E.1.3.1.7. Проверка подлинности [15]
E.1.3.1.8. Конфигурация сервера [16]
E.1.3.1.9. Надёжность [17]
E.1.3.1.9.1. Журнал упреждающей записи (WAL) [18]
E.1.3.2. Репликация и восстановление [19]
E.1.3.3. Запросы [20]
E.1.3.4. Вспомогательные команды [21]
E.1.3.5. Типы данных [22]
E.1.3.6. Функции [23]
E.1.3.7. Серверные языки [24]
E.1.3.7.1. PL/Tcl [25]
E.1.3.8. Клиентские интерфейсы [26]
E.1.3.9. Клиентские приложения [27]
E.1.3.9.1. psql [28]
E.1.3.9.2. pgbench [29]
E.1.3.10. Серверные приложения [30]
E.1.3.10.1. pg_dump, pg_dumpall, pg_restore [31]
E.1.3.10.2. pg_basebackup [32]
E.1.3.10.3. pg_ctl [33]
E.1.3.11. Исходный код [34]
E.1.3.12. Дополнительные модули [35]
Основные улучшения в PostgreSQL 10:
Всё перечисленное подробно описано ниже.
Для перехода с любых предыдущих версий необходимо выполнить dump/restore, используя pg_dumpall [36], или воспользоваться pg_upgrade [37].
Версия 10 содержит ряд изменений, которые могут затронуть совместимость с предыдущими релизами. Вот эти изменения:
pg_xlog
в pg_wal
и переименование директории со статусами транзакций pg_clog
в pg_xact
(Michael Paquier).pg_switch_xlog()
станет pg_switch_wal()
, pg_receivexlog
станет pg_receivewal
;--xlogdir
станет --waldir
. Это делается для единообразия с переименованием pg_xlog
; в общем, термин “xlog” в дальнейшем не будет использоваться со стороны пользователя.lsn
вместо location
(David Rowley). Ранее возникали противоречия при использовании двух терминов.SELECT
(Andres Freund). Функции, возвращающие множества (Set-returning functions, SRF), теперь вычисляются до вычисления скалярных выражений в списке SELECT
, как будто они были помещены в выражение LATERAL FROM
. Это даёт более здравую семантику при использовании нескольких SRF. Если они возвращают разное количество строк, более короткие результаты будут расширены до самого длинного путём добавления NULL-значений. Ранее находился наименьший общий множитель размеров результатов SRF, и они циклично повторялись. Также вызов SRF теперь запрещен с конструкциями CASE
и COALESCE
. Более подробная информация содержится в разделе документации Section 37.4.8 [38].ALTER TABLE ... ADD PRIMARY KEY
устанавливает атрибут колонки NOT NULL
, это изменение также распространяется на унаследованные дочерние таблицы (Michael Paquier). BEFORE STATEMENT
- или AFTER STATEMENT
-триггеры вызывались более одного раза. Также если были statement-триггеры на таблице, затронутой ограничением внешнего ключа (таким, как ON DELETE CASCADE
), они могли вызваться более одного раза для внешнего SQL-выражения. Это противоречило стандарту, поэтому было изменено.pg_sequence
[39] (Peter Eisentraut). Новая таблица содержит в себе поля, которые могут быть изменены с помощью функции nextval()
, то есть last_value
, log_cnt
и is_called
. Остальные свойства последовательностей, такие как начальное значение и инкремент, сохранены в соответствующей строке каталога pg_sequence
. ALTER SEQUENCE
теперь полностью транзакционна, подразумевая блокировку последовательности до коммита. Функции nextval()
и setval()
остаются нетранзакционными.pg_sequence
. Новое системное представление pg_sequences
может быть также использовано для этих целей; оно предоставляет имена колонок, более совместимые с существующим кодом.pg_basebackup
[40] стримит WAL
, необходимый для восстановления бэкапа по умолчанию (Magnus Hagander). Это изменяет значение по умолчанию параметра -X/--xlog-method
команды pg_basebackup
в stream
. Значение none добавлено для воспроизведения старого поведения. Опция -x команды pg_basebackup
была удалена (используйте взамен -X fetch
).replication
в колонке базы данных. С этого релиза логическая репликация использует обычное вхождение имени базы данных или ключевого слова all
. Физическая репликация продолжает использовать ключевое слово replication
. Так как логическая репликация — новинка данного релиза, изменение затрагивает только пользователей сторонних плагинов для репликации.pg_ctl
[42] ожидают завершения по умолчанию (Peter Eisentraut). До этого момента некоторые действия pg_ctl
не ожидали завершения и требовали для этого использования параметра -w
.log_directory
[43] с pg_log
на log
(Andreas Karlsson). ssl_dh_params_file
[44] для указания файла с измененными параметрами Диффи-Хеллмана (Heikki Linnakangas). Это убирает захардкоженное недокументированное имя файла dh1024.pem
. Обратите внимание, dh1024.pem
более не проверяется по умолчанию; вы должны выставить значение опции для использования собственных параметров Диффи-Хеллмана.password_encryption
[45] более не поддерживает значения off
или plain
. Опция UNENCRYPTED
более не поддерживается в команде CREATE/ALTER USER ... PASSWORD
. Аналогично, опция --unencrypted
была удалена из команды createuser
. Незашифрованные пароли при миграции со старых версий будут сохранены зашифрованными в этом релизе. Значение по умолчанию для параметра password_encryption
всё ещё md5
.min_parallel_relation_size
, который оказался слишком общим.shared_preload_libraries
[48] и ему подобных не приводится к нижнему регистру, если оно не взято в кавычки (QL Zhuo). Эти настройки являются списком имён файлов, но до этого момента обрабатывались как идентификаторы SQL, которые обрабатываются по другим правилам.sql_inheritance
(Robert Haas). Изменение значения по умолчанию для этого параметра приводило к тому, что запросы к родительским таблицам не включали данные из дочерних таблиц. Стандарт SQL требует, чтобы они были включены, однако, это и так было по умолчанию с PostgreSQL 7.1.[[col1, col2], [col1, col2]]
; но теперь это интерпретируется как двумерный массив. Составные типы в массивах теперь должны быть записаны как кортежи Python, а не списки, чтобы устранить неоднозначность; это значит, что следует писать так: [(col1, col2), (col1, col2)]
.--disable-integer-datetimes
. Таймстампы с плавающей точкой имеют некоторые преимущества, но не использовались по умолчанию с PostgreSQL 8.3.contrib/tsearch2
(Robert Haas). Этот модуль предоставлял совместимость с версией полнотекстового поиска, поставляемого до версий 8.3.createlang
и droplang
(Peter Eisentraut). Они устарели в версии PostgreSQL 9.1. Вместо них используйте команды CREATE EXTENSION
и DROP EXTENSION
.Ниже приведена детальная информация об изменениях между PostgreSQL 10 и предыдущим мажорным релизом.
INET
and CIDR
SP-GiST-индексы (Emre Hasegeli).CREATE INDEX
[53] включает автосуммаризацию предыдущего диапазона BRIN-страниц, когда создаётся новый страничный диапазон.brin_summarize_range()
[54] обновляет суммаризацию BRIN-индекса для указанного диапазона и brin_desummarize_range()
для ее удаления. Это полезно для обновления суммаризации диапазона, который сейчас меньше из-за UPDATE-ов и DELETE-ов.ALTER TYPE ... ADD VALUE
в блоке транзакции, если это перечисление не было создано в нём. Теперь запрещены только ссылки на незафиксированные значения перечислений из других транзакций.effective_io_concurrency
[55] может быть выполнено с более легковесной блокировкой.max_pred_locks_per_relation
[56] и max_pred_locks_per_page
[57].CREATE STATISTICS
[58], ALTER STATISTICS
[59] и DROP STATISTICS
[60]. Эта возможность полезна при оценке использования памяти запросом и при комбинировании статистики из разных колонок.numeric
-типа, включая некоторые варианты SUM()
, AVG()
и STDDEV()
(Heikki Linnakangas).macaddr
(Brandur Leach).EXPLAIN
[61] (Ashutosh Bapat). По умолчанию время планирования и выполнения отображалось командой EXPLAIN ANALYZE
и не отображалось в других случаях. Новая опция команды EXPLAIN SUMMARY
позволяет явно управлять отображением.pg_monitor
, pg_read_all_settings
, pg_read_all_stats
и pg_stat_scan_tables
позволяют проще настраивать привилегии.REFRESH MATERIALIZED VIEW
[62] (Jim Mlodgenski).log_line_prefix
[63] с включением таймстампа с миллисекундами и PID в каждой строке вывода postmaster'а (Christoph Berg). В прошлом префикс был пустым.DEBUG1
.pg_stat_activity
(Michael Paquier, Robert Haas, Rushabh Lathia). Это изменение позволяет сообщать о многочисленных низкоуровневых блокировках, включая latch waits, чтение/запись fsync файлов, клиентские чтение/запись и синхронную репликацию.pg_stat_activity
(Kuntal Ghosh, Michael Paquier). Это упрощает мониторинг. Новая колонка backend_type
идентифицирует тип процесса.pg_stat_activity.wait_event_type LWLockTranche
и LWLockNamed
в LWLock
(Robert Haas). Это делает вывод более последовательным.md5
) метод передачи и хранения.boolean
на enum
(Michael Paquier). Это было необходимо для поддержки дополнительных опций хэширования паролей.pg_hba_file_rules
[69] для отображения содержимого pg_hba.conf
(Haribabu Kommi). Показывается содержимое файла, но не текущие активные настройки.pg_ctl reload
, SELECT pg_reload_conf()
или отправляя сигнал SIGHUP
. Однако перезагрузка конфигурации SSL не работает, если серверный ключ SSL требует пароль, так как нет возможности предложить ввод пароля. В этом случае будет применена первоначальная конфигурация.synchronous_standby_names
. Новое ключевое слово synchronous_standby_names ANY
позволяет ожидать любое количество стендбаев, вне зависимости от их порядка. Это называется кворумным коммитом.pg_hba.conf
[41] (Michael Paquier). Ранее строки с соединениями репликации в pg_hba.conf
были закомментированы по умолчанию. В частности, это полезно для pg_basebackup
[40].write_lag
, flush_lag
и replay_lag
.recovery.conf
[81] (Michael Paquier). До этого точка останова могла быть указана с помощью таймстампа или XID'а.pg_stop_backup()
[82], ждущий архивации всех WAL'ов (David Steele). Управляет этим поведением необязательный второй аргумент pg_stop_backup()
.XMLTABLE
[84], конвертирующая XML
-данные в список строк (Pavel Stehule, Álvaro Herrera). UPDATE ... SET (column_list) = row_constructor
(Tom Lane). row_constructor
может начинаться с ключевого слова ROW
; ранее оно опускалось. Также вхождение table_name.*
вместе с row_constructor
теперь раскрывается в несколько колонок, как и в других случаях применения row_constructors
.U+7FF
(Tom Lane). Ранее такие символы никогда не распознавались, как относящиеся к локалезависимым классам, таким как [[:alpha:]]
.AFTER
-триггеров [86], для записи измененных строк (Kevin Grittner, Thomas Munro). Таблицы переходов теперь доступны для триггеров, написаных на серверных языках программирования.REFERENCES
-привилегия только на целевой таблице (Tom Lane). Ранее REFERENCES
-привилегия требовалась на ссылающейся таблице. Похоже, это произошло из-за неправильного прочтения стандарта SQL. Поскольку создание ограничения внешнего ключа (или любого другого типа) требует права собственности на целевую таблицу, дополнительно требовать REFERENCES
-привилегию выглядит довольно бессмысленным.ALTER DEFAULT PRIVILEGES
.CREATE SEQUENCE AS
[89] чтобы создать последовательность, соответствующую целочисленному типу данных (Peter Eisentraut). Это упрощает создание последовательностей, соответствующих диапазону базовых колонок.COPY view FROM source
на представлениях с INSTEAD INSERT
-триггерами (Haribabu Kommi). Триггеры получают строки данных из COPY
.DROP FUNCTION
[90] с именем функции без аргументов, если такая функция одна. Это поведение требует стандарт SQL.DROP
(Peter Eisentraut).IF NOT EXISTS
в CREATE SERVER
[91], CREATE USER MAPPING
[92] и CREATE COLLATION
[93] (Anastasia Lubennikova, Peter Eisentraut). VACUUM VERBOSE
[94] сообщает о количестве пропущенных замороженных страниц и старейшем xmin (Masahiko Sawada, Simon Riggs). Эта информация также включена в вывод log_autovacuum_min_duration [95].VACUUM
-е (Claudio Freire, Álvaro Herrera). JSON
и JSONB
(Dmitry Dolgov). Функции ts_headline()
и to_tsvector()
могут использоваться с этими типами данных.macaddr
).SERIAL
, но более соответствуют стандарту SQL.anyarray
) как массивов в to_json()
и to_jsonb()
(Andrew Dunstan). Ранее колонки, объявленные как anyarray
(в частности, такие есть в представлении pg_stats
) преобразовывались в JSON
-строки, а не массивы.money
[100] на значения int8 (Peter Eisentraut). Ранее такие случаи приводили бы к преобразованию int8
-значений в float8
использовались money
-и-float8
операторы. Новое поведение позволяет избежать возможной потери точности. Но обратите внимание, что деление money
на int8
теперь усекает частное, как и в других случаях целочисленного деления, в то время как предыдущее поведение округлило бы результат.money
(Peter Eisentraut). regexp_match()
[101](Emre Hasegeli). Она похожа на regexp_matches()
, но возвращает результаты с первого совпадения, так что не нужно возвращать набор данных, делая её использование более простым в простых случаях.jsonb
, принимающего список ключей для удаления (Magnus Hagander).json_populate_record()
[103] и аналогичные обрабатывают массивы JSON рекурсивно (Nikita Glukhov). С этим изменением массивы SQL правильно конвертируются из массиово JSON, а также композитные типы правильно конвертируются из объектов JSON. Ранее подобное не работало, так как на вход array_in()
или record_in()
подавалось текстовое представление JSON-значения, этот синтаксис не соответствовал тому, что ожидала функция.txid_current_ifassigned()
[104] для возврата текущего идентификатора транзакции или значения NULL
, если идентификатор транзакции не был присвоен (Craig Ringer). Она отличается от txid_current()
[104], которая всегда возвращает идентификатор транзакции или присваивает его, если необходимо. Эта функция может выполняться только на стендбаях.txid_status()
[104] для проверки фиксации транзакции (Craig Ringer). Это полезно для проверки после резкого отключения, была ли совершена предыдущая транзакция, и вы просто не получили подтверждение.make_date()
[105] интерпретирует отрицательные годы, как годы до н. э. (Álvaro Herrera). to_timestamp()
и to_date()
не принимают выходящие за диапазон допустимых значений поля (Artur Zakirov). Например, ранее to_date('2009-06-40','YYYY-MM-DD')
принималось и возвращалось 2009-07-10
. Сейчас это приводит к ошибке.cursor()
и execute()
PL/Python быть вызванными как методы объектов (Peter Eisentraut). Это позволяет использовать более объектно-ориентированный стиль программирования.GET DIAGNOSTICS
в PL/pgSQL в массив элементов (Tom Lane). Ранее синтаксическое ограничение не позволяло целевой переменной быть элементом массива.target_session_attrs
.PQencryptPasswordConn()
[110], позволяющая создавать большее количество типов зашифрованных паролей на стороне клиента (Michael Paquier, Heikki Linnakangas). До этого момента MD5
-хэшированные пароли могли быть созданы с использованием PQencryptPassword() [111]. Новая функция может создавать SCRAM-SHA-256-
[41]шифрованные пароли.if
, elif
, else
и endif
. В первую очередь, это удобно для сценариев.gx
для запуска (g
) запроса в расширенном режиме (x
) (Christoph Berg).set
для специальной переменной теперь выполняется с ошибкой, если новое значение некорректно. Как особое исключение, set
с пустым или пропущенным значением для булевой специальной переменной выставляет эту переменную в значение on
; но теперь он получает это значение, а не пустую строку. unset
теперь явно выставляет в значение по умолчанию, которое является значением, полученным при запуске. В итоге управляющая переменная теперь всегда имеет отображаемое значение, которое отражает то, что на самом деле делает psql.d
(показать отношение) и dD
(показать домен), чтобы показать сортировку, значение null, и свойства по умолчанию в разных колонках (Peter Eisentraut)d
несоответствующих объектов выполнена более последовательно (Daniel Gustafsson). Сообщения выводятся в stderr, не в stdout, формулировка стала более последовательной.--log-prefix
для управления префиксом в логе (Masahiko Sawada).-M
, относящейся к другим опциям командной строки (Tom Lane).-Z/--compress
для указания уровня сжатия (Michael Paquier).--endpos
для указания конечной позиции (Craig Ringer). Это соответствует существующей опции --startpos
.--nosync
в --no-clean
и --no-sync
(Vik Fearing, Peter Eisentraut). Старые варианты всё ещё поддерживаются.-N/--exclude-schema
.--no-blobs
в pg_dump (Guillaume Lelarge). Это подавляет дамп больших объектов.--no-role-passwords
, чтобы исключить пароли ролей (Robins Tharakan, Simon Riggs). Это позволяет использовать pg_dumpall несуперпользователям, без этой опции он аварийно завершался от невозможности прочитать пароли.fsync()
для файлов, сгенерированных pg_dump и pg_dumpall (Michael Paquier). Это обеспечивает большую сохранность данных при внезапных завершениях программы, т.к. данные принудительно сохраняются на диск. Может быть выключено с помощью новой опции --no-sync
.--no-sync
для отключения fsync (Michael Paquier).--wait
) и no-wait (--no-wait
) (Vik Fearing).--options
) (Peter Eisentraut).pg_ctl start --wait
определяет готовность сервера по наблюдению за postmaster.pid
, не по попыткам соединиться (Tom Lane). postmaster изменен, чтобы отобразить готовность к приёму соединений в postmaster.pid, и pg_ctl теперь просматривает этот файл, чтобы понять, что запуск завершен. Этот метод более эффективный и надеждный, чем старый, и убирает из лога сообщения о попытках подключения во время старта.start
и promote
теперь возвращают 1, не 0, в таких случаях. Операция stop
всегда работала так.--with-icu
. По умолчанию используется системная библиотека параметров сортировки.DLLEXPORT
на Windows (Laurenz Albe). Если сторонний код использует декларацию extern
функции, он так же должен использовать отметку DLLEXPORT
для таких деклараций.SPI SPI_push()
, SPI_pop()
, SPI_push_conditional()
, SPI_pop_conditional()
и SPI_restore_connection()
как ненужные (Tom Lane). Их функциональность теперь выполняется автоматически. В настоящее время эти имена не содержат макросов, поэтому внешние модули не нуждаются в немедленном обновлении, но в конечном итоге такие вызовы должны быть удалены.SPI_palloc()
и аналогичные функции теперь требуют активного SPI-подключения; они не вырождаются в простые palloc()
, если его нет. Предыдущее поведение было не очень полезным и порождало риски неожиданных утечек памяти.clock_gettime()
, где это возможно, для измерений производительности (Tom Lane). gettimeofday()
используется там, где clock_gettime()
недоступен.--disable-strong-random
. Однако с этой опцией функции pgcrypto
, требующие стойкого генератора случайных чисел будут недоступны.WaitLatchOrSocket()
соединения на сокете на Windows (Andres Freund).tupconvert.c
более не конвертируют туплы, только встраивают в них композитный OID (Ashutosh Bapat, Tom Lane). В большинстве случаев о составных OID не заботятся, но если результирующий тупл должен использоваться как композитный Datum, необходимо выполнить определенные шаги, чтобы убедиться, что в него вставлен правильный OID.OID
в таблицах postgres_fdw (Etsuro Fujita). До этого колонки OID
всегда возвращали нули.UUID
(Paul Jungwirth).$N
вместо ?
в pg_stat_statements [127] (Lukas Fittl).infinite-
и NaN
-значений.pgstathashindex()
для просмотра статистики хэш-индексов (Ashutosh Sharma). GRANT
для выдачи привилегий на использование pgstattuple (Stephen Frost). Это позволяет администраторам дать права на запуск этих функций не суперпользователям.page_checksum()
, выводящая контрольную сумму страницы (Tomas Vondra).bt_page_items()
для вывода страничных записей из образа странцы (Tomas Vondra). Вот мои мысли о новых фичах.
Логическая репликация — очень мощный и гибкий инструмент. Очень хотелось бы иметь механизмы восстановления после аварий источника событий. А также увидеть опциональное хранение данных для логической репликации в отдельной структуре, а не в WALе.
Декларативное партицирование закладывает хороший фундамент для будущих улучшений в этой области. Есть надежда, что существующие проблемы уйдут в прошлое, и будет меньше головной боли с партициями.
Параллельная обработка запросов дает существенный прирост производительности во многих случаях.
Улучшенный мониторинг и администрирование: благодаря добавлению новых ролей упрощается процесс снятия метрик для мониторинга.
Какие фичи понравились вам больше всего? Когда планируете мигрировать?
Автор: pkorobeinikov
Источник [132]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/postgresql/265190
Ссылки в тексте:
[1] раз: https://www.postgresql.org/message-id/20170616195617.1422.31261%40wrigleys.postgresql.org
[2] два: https://www.postgresql.org/message-id/20170609160109.26502.14118%40wrigleys.postgresql.org
[3] E.1.1. Обзор (TLDR): #e11-obzor-tldr
[4] E.1.2. Миграция на версию 10: #e12-migraciya-na-versiyu-10
[5] E.1.3. Изменения: #e13izmeneniya
[6] E.1.3.1. Сервер: #e131server
[7] E.1.3.1.1. Параллельные запросы: #e1311parallelnye-zaprosy
[8] E.1.3.1.2. Индексы: #e1312indeksy
[9] E.1.3.1.3. Блокировки: #e1313blokirovki
[10] E.1.3.1.4. Оптимизатор: #e1314optimizator
[11] E.1.3.1.5. Общая производительность: #e1315obschaya-proizvoditelnost
[12] E.1.3.1.6. Мониторинг: #e1316monitoring
[13] E.1.3.1.6.1. Логгирование: #e13161loggirovanie
[14] E.1.3.1.6.2. pg_stat_activity: #e13162pg_stat_activityhttpswwwpostgresqlorgdocs10staticmonitoring-statshtmlpg-stat-activity-view
[15] E.1.3.1.7. Проверка подлинности: #e1317proverka-podlinnosti
[16] E.1.3.1.8. Конфигурация сервера: #e1318konfiguraciya-servera
[17] E.1.3.1.9. Надёжность: #e1319nadyozhnost
[18] E.1.3.1.9.1. Журнал упреждающей записи (WAL): #e13191zhurnal-uprezhdayuschey-zapisiwalhttpswwwpostgresqlorgdocs10staticwalhtml
[19] E.1.3.2. Репликация и восстановление: #e132replikaciya-i-vosstanovlenie
[20] E.1.3.3. Запросы: #e133zaprosy
[21] E.1.3.4. Вспомогательные команды: #e134vspomogatelnye-komandy
[22] E.1.3.5. Типы данных: #e135tipy-dannyh
[23] E.1.3.6. Функции: #e136funkcii
[24] E.1.3.7. Серверные языки: #e137servernye-yazyki
[25] E.1.3.7.1. PL/Tcl: #e1371pltclhttpswwwpostgresqlorgdocs10staticpltclhtml
[26] E.1.3.8. Клиентские интерфейсы: #e138klientskie-interfeysy
[27] E.1.3.9. Клиентские приложения: #e139klientskie-prilozheniya
[28] E.1.3.9.1. psql: #e1391psqlhttpswwwpostgresqlorgdocs10staticapp-psqlhtml
[29] E.1.3.9.2. pgbench: #e1392pgbenchhttpswwwpostgresqlorgdocs10staticpgbenchhtml
[30] E.1.3.10. Серверные приложения: #e1310servernye-prilozheniya
[31] E.1.3.10.1. pg_dump, pg_dumpall, pg_restore: #e13101pg_dumphttpswwwpostgresqlorgdocs10staticapp-pgdumphtmlpg_dumpallhttpswwwpostgresqlorgdocs10staticapp-pg-dumpallhtmlpg_restorehttpswwwpostgresqlorgdocs10staticapp-pgrestorehtml
[32] E.1.3.10.2. pg_basebackup: #e13102pg_basebackuphttpswwwpostgresqlorgdocs10staticapp-pgbasebackuphtml
[33] E.1.3.10.3. pg_ctl: #e13103pg_ctlhttpswwwpostgresqlorgdocs10staticapp-pg-ctlhtml
[34] E.1.3.11. Исходный код: #e1311ishodnyy-kod
[35] E.1.3.12. Дополнительные модули: #e1312dopolnitelnye-moduli
[36] pg_dumpall: https://www.postgresql.org/docs/10/static/app-pg-dumpall.html
[37] pg_upgrade: https://www.postgresql.org/docs/10/static/pgupgrade.html
[38] Section 37.4.8: https://www.postgresql.org/docs/10/static/xfunc-sql.html#xfunc-sql-functions-returning-set
[39] pg_sequence
: https://www.postgresql.org/docs/10/static/catalog-pg-sequence.html
[40] pg_basebackup
: https://www.postgresql.org/docs/10/static/app-pgbasebackup.html
[41] pg_hba.conf: https://www.postgresql.org/docs/10/static/auth-pg-hba-conf.html
[42] pg_ctl
: https://www.postgresql.org/docs/10/static/app-pg-ctl.html
[43] log_directory
: https://www.postgresql.org/docs/10/static/runtime-config-logging.html#guc-log-directory
[44] ssl_dh_params_file
: https://www.postgresql.org/docs/10/static/runtime-config-connection.html#guc-ssl-dh-params-file
[45] password_encryption
: https://www.postgresql.org/docs/10/static/runtime-config-connection.html#guc-password-encryption
[46] min_parallel_table_scan_size: https://www.postgresql.org/docs/10/static/runtime-config-query.html#guc-min-parallel-table-scan-size
[47] min_parallel_index_scan_size: https://www.postgresql.org/docs/10/static/runtime-config-query.html#guc-min-parallel-index-scan-size
[48] shared_preload_libraries
: https://www.postgresql.org/docs/10/static/runtime-config-client.html#guc-shared-preload-libraries
[49] pltcl.start_proc: https://www.postgresql.org/docs/10/static/pltcl-config.html#guc-pltcl-start-proc
[50] pltclu.start_proc: https://www.postgresql.org/docs/10/static/pltcl-config.html#guc-pltclu-start-proc
[51] max_parallel_workers: https://www.postgresql.org/docs/10/static/runtime-config-resource.html#guc-max-parallel-workers
[52] max_worker_processes: https://www.postgresql.org/docs/10/static/runtime-config-resource.html#guc-max-worker-processes
[53] CREATE INDEX
: https://www.postgresql.org/docs/10/static/sql-createindex.html
[54] brin_summarize_range()
: https://www.postgresql.org/docs/10/static/functions-admin.html#functions-admin-index-table
[55] effective_io_concurrency
: https://www.postgresql.org/docs/10/static/runtime-config-resource.html#guc-effective-io-concurrency
[56] max_pred_locks_per_relation
: https://www.postgresql.org/docs/10/static/runtime-config-locks.html#guc-max-pred-locks-per-relation
[57] max_pred_locks_per_page
: https://www.postgresql.org/docs/10/static/runtime-config-locks.html#guc-max-pred-locks-per-page
[58] CREATE STATISTICS
: https://www.postgresql.org/docs/10/static/sql-createstatistics.html
[59] ALTER STATISTICS
: https://www.postgresql.org/docs/10/static/sql-alterstatistics.html
[60] DROP STATISTICS
: https://www.postgresql.org/docs/10/static/sql-dropstatistics.html
[61] EXPLAIN
: https://www.postgresql.org/docs/10/static/sql-explain.html
[62] REFRESH MATERIALIZED VIEW
: https://www.postgresql.org/docs/10/static/sql-refreshmaterializedview.html
[63] log_line_prefix
: https://www.postgresql.org/docs/10/static/runtime-config-logging.html#guc-log-line-prefix
[64] pg_ls_logdir(): https://www.postgresql.org/docs/10/static/functions-admin.html#functions-admin-genfile-table
[65] pg_current_logfile(): https://www.postgresql.org/docs/10/static/functions-info.html#functions-info-session-table
[66] log_min_messages: https://www.postgresql.org/docs/10/static/runtime-config-logging.html#guc-log-min-messages
[67] client_min_messages: https://www.postgresql.org/docs/10/static/runtime-config-logging.html#guc-client-min-messages
[68] pg_stat_activity: https://www.postgresql.org/docs/10/static/monitoring-stats.html#pg-stat-activity-view
[69] pg_hba_file_rules
: https://www.postgresql.org/docs/10/static/view-pg-hba-file-rules.html
[70] bgwriter_lru_maxpages: https://www.postgresql.org/docs/10/static/runtime-config-resource.html#guc-bgwriter-lru-maxpages
[71] Журнал упреждающей записи (WAL): https://www.postgresql.org/docs/10/static/wal.html
[72] wal_consistency_checking: https://www.postgresql.org/docs/10/static/runtime-config-developer.html#guc-wal-consistency-checking
[73] archive_command: https://www.postgresql.org/docs/10/static/runtime-config-wal.html#guc-archive-command
[74] логически реплицировать: https://www.postgresql.org/docs/10/static/logical-replication.html
[75] synchronous_standby_names: https://www.postgresql.org/docs/10/static/runtime-config-replication.html#guc-synchronous-standby-names
[76] wal_level: https://www.postgresql.org/docs/10/static/runtime-config-wal.html#guc-wal-level
[77] max_wal_senders: https://www.postgresql.org/docs/10/static/runtime-config-replication.html#guc-max-wal-senders
[78] max_replication_slots: https://www.postgresql.org/docs/10/static/runtime-config-replication.html#guc-max-replication-slots
[79] hot_standby: https://www.postgresql.org/docs/10/static/runtime-config-replication.html#guc-hot-standby
[80] pg_stat_replication: https://www.postgresql.org/docs/10/static/monitoring-stats.html#monitoring-stats-views-table
[81] recovery.conf
: https://www.postgresql.org/docs/10/static/recovery-config.html
[82] pg_stop_backup()
: https://www.postgresql.org/docs/10/static/functions-admin.html
[83] временных слотов репликации: https://www.postgresql.org/docs/10/static/functions-admin.html#functions-replication-table
[84] XMLTABLE
: https://www.postgresql.org/docs/10/static/functions-xml.html#functions-xml-processing-xmltable
[85] синтаксис партицирования: https://www.postgresql.org/docs/10/static/sql-createtable.html#sql-createtable-partition
[86] триггеров: https://www.postgresql.org/docs/10/static/sql-createtrigger.html
[87] ограничительные политики безопасности: https://www.postgresql.org/docs/10/static/sql-createpolicy.html
[88] привилегии по умолчанию: https://www.postgresql.org/docs/10/static/sql-alterdefaultprivileges.html
[89] CREATE SEQUENCE AS
: https://www.postgresql.org/docs/10/static/sql-createsequence.html
[90] DROP FUNCTION
: https://www.postgresql.org/docs/10/static/sql-dropfunction.html
[91] CREATE SERVER
: https://www.postgresql.org/docs/10/static/sql-createserver.html
[92] CREATE USER MAPPING
: https://www.postgresql.org/docs/10/static/sql-createusermapping.html
[93] CREATE COLLATION
: https://www.postgresql.org/docs/10/static/sql-createcollation.html
[94] VACUUM VERBOSE
: https://www.postgresql.org/docs/10/static/sql-vacuum.html
[95] log_autovacuum_min_duration: https://www.postgresql.org/docs/10/static/runtime-config-autovacuum.html#guc-log-autovacuum-min-duration
[96] macaddr8: https://www.postgresql.org/docs/10/static/datatype-net-types.html#datatype-macaddr8
[97] столбцы идентификаторов: https://www.postgresql.org/docs/10/static/sql-createtable.html
[98] ENUM: https://www.postgresql.org/docs/10/static/datatype-enum.html
[99] ALTER TYPE… RENAME VALUE: https://www.postgresql.org/docs/10/static/sql-altertype.html
[100] money
: https://www.postgresql.org/docs/10/static/datatype-money.html
[101] regexp_match()
: https://www.postgresql.org/docs/10/static/functions-matching.html#functions-posix-regexp
[102] оператора удаления: https://www.postgresql.org/docs/10/static/functions-json.html#functions-jsonb-op-table
[103] json_populate_record()
: https://www.postgresql.org/docs/10/static/functions-json.html#functions-json-processing-table
[104] txid_current_ifassigned()
: https://www.postgresql.org/docs/10/static/functions-info.html#functions-txid-snapshot
[105] make_date()
: https://www.postgresql.org/docs/10/static/functions-formatting.html#functions-formatting-table
[106] PL/Tcl: https://www.postgresql.org/docs/10/static/pltcl.html
[107] множественные имена хостов: https://www.postgresql.org/docs/10/static/libpq-connect.html#libpq-connect-host
[108] читающий/пишуший хост: https://www.postgresql.org/docs/10/static/libpq-connect.html#libpq-connect-target-session-attrs
[109] имя файла с паролем: https://www.postgresql.org/docs/10/static/libpq-connect.html#libpq-connect-passfile
[110] PQencryptPasswordConn()
: https://www.postgresql.org/docs/10/static/libpq-misc.html#libpq-pqencryptpasswordconn
[111] PQencryptPassword(): https://www.postgresql.org/docs/10/static/libpq-misc.html#libpq-pqencryptpassword
[112] psql: https://www.postgresql.org/docs/10/static/app-psql.html
[113] pgbench: https://www.postgresql.org/docs/10/static/pgbench.html
[114] pg_receivewal: https://www.postgresql.org/docs/10/static/app-pgreceivewal.html
[115] pg_recvlogical: https://www.postgresql.org/docs/10/static/app-pgrecvlogical.html
[116] initdb: https://www.postgresql.org/docs/10/static/app-initdb.html
[117] pg_dump: https://www.postgresql.org/docs/10/static/app-pgdump.html
[118] pg_restore: https://www.postgresql.org/docs/10/static/app-pgrestore.html
[119] ICU: https://www.postgresql.org/docs/10/static/install-procedure.html#configure
[120] PG_FUNCTION_INFO_V1: https://www.postgresql.org/docs/10/static/xfunc-c.html
[121] процессу сборки: https://www.postgresql.org/docs/10/static/docguide-toolsets.html
[122] file_fdw: https://www.postgresql.org/docs/10/static/file-fdw.html
[123] postgres_fdw: https://www.postgresql.org/docs/10/static/postgres-fdw.html
[124] btree_gist: https://www.postgresql.org/docs/10/static/btree-gist.html
[125] btree_gin: https://www.postgresql.org/docs/10/static/btree-gin.html
[126] amcheck: https://www.postgresql.org/docs/10/static/amcheck.html
[127] pg_stat_statements: https://www.postgresql.org/docs/10/static/pgstatstatements.html
[128] cube: https://www.postgresql.org/docs/10/static/cube.html
[129] pg_buffercache: https://www.postgresql.org/docs/10/static/pgbuffercache.html
[130] pgstattuple: https://www.postgresql.org/docs/10/static/pgstattuple.html
[131] pageinspect: https://www.postgresql.org/docs/10/static/pageinspect.html
[132] Источник: https://habrahabr.ru/post/339520/
Нажмите здесь для печати.