Расширения PostgreSQL к БД Azure для PostgreSQL — гибкий сервер

Область применения: гибкий сервер Базы данных Azure для PostgreSQL

База данных Azure для PostgreSQL гибкий сервер предоставляет возможность расширения функциональности базы данных с помощью расширений. Расширения объединяют несколько связанных объектов SQL в одном пакете, который можно загрузить или удалить из базы данных с помощью команды. После загрузки в базу данных расширения работают как встроенные функции.

Как использовать расширения PostgreSQL

Перед установкой расширений на гибком сервере База данных Azure для PostgreSQL необходимо разрешить список этих расширений для использования.

В случае использования портала Azure выполните следующие действия:

  1. Выберите гибкий экземпляр сервера База данных Azure для PostgreSQL.
  2. На боковой панели выберите Параметры сервера.
  3. Найдите параметр azure.extensions.
  4. Выберите расширения, которые нужно разрешить. Снимок экрана: База данных Azure для PostgreSQL гибкий сервер — расширения разрешения для установки.

В случае использования Azure CLI:

Расширения списка разрешений можно разрешить с помощью команды набора параметров CLI.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value <extension name>,<extension name>

Использование шаблона ARM: пример показан ниже расширений allowlists dblink, dict_xsyn, pg_buffercache на сервере mypostgreserver

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "mypostgreserver",
            "type": "String"
        },
        "azure_extensions_set_value": {
            "defaultValue": " dblink,dict_xsyn,pg_buffercache",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
            "apiVersion": "2021-06-01",
            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
            "properties": {
                "value": "[parameters('azure_extensions_set_value')]",
                "source": "user-override"
            }
        }
    ]
}

shared_preload_libraries— это параметр конфигурации сервера, определяющий, какие библиотеки должны загружаться при запуске гибкого сервера База данных Azure для PostgreSQL. Все библиотеки, использующие общую память, должны загружаться с помощью этого параметра. Если расширение необходимо добавить в общие библиотеки предварительной загрузки, это действие можно сделать:

В случае использования портала Azure выполните следующие действия:

  1. Выберите гибкий экземпляр сервера База данных Azure для PostgreSQL.
  2. На боковой панели выберите Параметры сервера.
  3. Найдите параметр shared_preload_libraries.
  4. Выберите расширения, которые нужно добавить. Снимок экрана: параметр параметра База данных Azure для PostgreSQL -setting shared preload libraries для установки расширений.

В случае использования Azure CLI:

Параметр shared_preload_libraries можно задать с помощью команды CLI parameter set.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name shared_preload_libraries --value <extension name>,<extension name>

Когда расширения будут добавлены в список разрешений и загружены, их необходимо установить в базе данных для использования. Чтобы установить конкретное расширение, выполните команду CREATE EXTENSION. Эта команда загружает упакованные объекты в базу данных.

Примечание.

Сторонние расширения, предлагаемые в База данных Azure для PostgreSQL гибком сервере, открытый код лицензированным кодом. В настоящее время мы не предлагаем сторонние расширения или версии расширений с моделями корпоративного или частного лицензирования.

База данных Azure для PostgreSQL гибкий экземпляр сервера поддерживает подмножество ключевых расширений PostgreSQL, как показано ниже. Эти сведения также можно получить, выполнив SHOW azure.extensions;. Расширения, не перечисленные в этом документе, не поддерживаются на гибком сервере База данных Azure для PostgreSQL. Вы не можете создать или загрузить собственное расширение в База данных Azure для PostgreSQL гибком сервере.

Версии расширения

Следующие расширения доступны на гибком сервере База данных Azure для PostgreSQL:

Примечание.

Расширения в следующей таблице с ✔️ меткой требуют включения соответствующих библиотек в параметре shared_preload_libraries сервера.

Имя расширения Description PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Используются для анализа адреса в составных элементы. Преимущественно используется для поддержки шага нормализации геокодирования адресов. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us пример набора данных для стандартизации адресов США 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Функции для проверки целостности связей 1,3 1,3 1,3 1.2 1.2 1,1
azure_ai Интеграция служб ИИ и машинного обучения Azure для PostgreSQL 1.0.0 1.1.0 1.0.0 1.0.0 1.0.0 Н/П
azure_storage Интеграция Azure для PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ Н/П
bloom Метод доступа Блум — индекс на основе файла подписи 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Поддержка индексирования распространенных типов данных в GIN 1,3 1,3 1,3 1,3 1,3 1,3
btree_gist Поддержка индексирования распространенных типов данных в GiST 1,7 1,7 1,6 1.5 1.5 1.5
citext Тип данных для строк символов без учета регистра 1,6 1,6 1,6 1,6 1,6 1.5
cube Тип данных для многомерных кубов 1.5 1.5 1.5 1.4 1.4 1.4
dblink Подключение в другие базы данных PostgreSQL из базы данных 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Шаблон словаря поиска текста для целых чисел 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Шаблон словаря поиска текста для расширенной обработки синонимов 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance Вычисление большого круга расстояний на поверхности Земли 1,1 1,1 1,1 1,1 1,1 1,1
fuzzystrmatch Определение сходства и расстояния между строками 1.2 1,1 1,1 1,1 1,1 1,1
hstore Тип данных для хранения пар (ключ, значение) 1.8 1.8 1.8 1,7 1,6 1.5
hypopg гипотетические индексы для PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Целочисленный агрегатор и перечислитель (устаревший) 1,1 1,1 1,1 1,1 1,1 1,1
intarray Функции, операторы и индексы поддерживают 1-D массивов целых чисел 1.5 1.5 1.5 1,3 1.2 1.2
isn Типы данных для международных стандартов нумерирования продуктов 1.2 1.2 1.2 1.2 1.2 1.2
lo Обслуживание больших объектов 1,1 1,1 1,1 1,1 1,1 1,1
login_hook Login_hook — перехватчик для выполнения login_hook.login() во время входа 1.5 1.4 1.4 1.4 1.4 1.4
ltree Тип данных для иерархических структур, таких как дерево 1.2 1.2 1.2 1.2 1,1 1,1
orafce Функции и операторы, эмулирующие подмножество функций и пакетов из Oracle RDBMS 4.4. 3.24 3,18 3,18 3,18 3,7
pageinspect Проверка содержимого страниц базы данных на низком уровне 1.12 1.11 1,9 1.8 1,7 1,7
pgaudit Предоставляет функции аудита 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache Проверка общего кэша буфера 1.4 1,3 1,3 1,3 1,3 1,3
pg_cron Планировщик заданий для PostgreSQL 1.5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Функции шифрования 1,3 1,3 1,3 1,3 1,3 1,3
pg_failover_slots (предварительная версия) Диспетчер слотов логических реплика tion для целей отработки отказа 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️
pg_freespacemap Проверка карты свободного пространства (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Позволяет настраивать планы выполнения PostgreSQL с помощью так называемых подсказок в комментариях SQL. 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Логическая репликация PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Расширение для управления секционированными таблицами по времени или идентификатору 4.7.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Предваренные данные о отношениях 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Реорганизация таблиц в базах данных PostgreSQL с минимальными блокировками 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Расширение PgRouting Н/П 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Отображение сведений о блокировке на уровне строк 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Средство для удаления неиспользуемого пространства из отношения. 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements Отслеживание статистики планирования и выполнения всех выполняемых инструкций SQL 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Отображение статистики на уровне кортежа 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Измерение сходства текста и поиск индексов на основе триграмм 1,6 1,6 1,6 1.5 1.4 1.4
pg_visibility Просмотр сведений о видимости (виртуальная машина) и сведений о видимости на уровне страницы 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql процедурный язык PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0
plv8 доверенный процедурный язык PL/JavaScript (версия 8) 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis Геометрия и географические пространственные типы и функции PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster растровые типы и функции PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal функции PostGIS SFCGAL 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder PostGIS Tiger для геокодирования и инвертированного геокодирования 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology пространственные типы и функции топологии PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Оболочка внешних данных для удаленных серверов PostgreSQL 1,1 1,1 1,1 1.0 1.0 1.0
semver Тип данных семантической версии 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable — регистрация и обработка переменных сеанса и констант 3,3 3,3 3,3 3,3 3,3 3,3
sslinfo Сведения о SSL-сертификатах 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Функции, которые управляют целыми таблицами, включая перекрестную таблицу 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Оболочка внешних данных для запроса базы данных TDS (Sybase или Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb включает масштабируемые вставки и сложные запросы для данных временных рядов 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows метод TABLESAMPLE, который принимает число строк в качестве ограничения 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time метод TABLESAMPLE, который принимает время в миллисекундах в качестве ограничения 1.0 1.0 1.0 1.0 1.0 1.0
unaccent Словарь поиска текста, который удаляет акценты 1,1 1,1 1,1 1,1 1,1 1,1
uuid-ossp Создает идентификаторы UUID. 1,1 1,1 1,1 1,1 1,1 1,1
vector Методы доступа к векторным данным и ivfflat и hnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 0.5.1

Обновление расширений PostgreSQL

Обновление расширений базы данных на месте разрешено с помощью простой команды. Эта функция позволяет клиентам автоматически обновлять сторонние расширения до последних версий, сохраняя текущие и безопасные системы без ручной работы.

Обновление расширений

Чтобы обновить установленное расширение до последней доступной версии, поддерживаемой Azure, используйте следующую команду SQL:

ALTER EXTENSION <extension-name> UPDATE;

Эта команда упрощает управление расширениями базы данных, позволяя пользователям вручную обновляться до последней версии, утвержденной Azure, повышая совместимость и безопасность.

Ограничения

Хотя обновление расширений является простым, существуют некоторые ограничения:

  • Выбор конкретной версии: команда не поддерживает обновление до промежуточных версий расширения. Он всегда обновляется до последней доступной версии.
  • Понижение: Azure в настоящее время не поддерживает понижение уровня расширения до предыдущей версии с помощью аналогичной команды. Если требуется понижение, может потребоваться вмешательство вручную или помощь в поддержке.

Просмотр установленных расширений

Чтобы вывести список расширений, установленных в настоящее время в базе данных, используйте следующую команду SQL:

SELECT * FROM pg_extension;

Доступные версии расширения

Чтобы проверка, какие версии расширения доступны для текущей установки базы данных, выполните следующую команду:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

Эти команды предоставляют необходимые аналитические сведения о конфигурациях расширений базы данных, помогая эффективно и безопасно поддерживать системы. Включив простые обновления в последние версии расширений, База данных Azure для PostgreSQL продолжает поддерживать надежное, безопасное и эффективное управление приложениями базы данных.

dblink и postgres_fdw позволяют подключаться из одного База данных Azure для PostgreSQL гибкого экземпляра сервера к другому или к другой базе данных на том же сервере. База данных Azure для PostgreSQL гибкий сервер поддерживает как входящие, так и исходящие подключения к любому серверу PostgreSQL. Отправляющий сервер должен разрешать исходящие подключения к принимающему серверу. Аналогично, принимающий сервер должен разрешать подключения с отправляющего сервера.

Мы рекомендуем развернуть серверы с интеграцией виртуальной сети, если планируется использовать эти два расширения. По умолчанию интеграция виртуальной сети позволяет подключаться между серверами в виртуальной сети. Вы также можете использовать группы безопасности сети виртуальной сети для настройки доступа.

pg_prewarm

Расширение pg_prewarm загружает реляционные данные в кэш. Предварительная подготовка кэшей означает, что запросы быстрее отвечают при первом запуске после перезагрузки. Функция автоматической предварительной подготовки в настоящее время недоступна на гибком сервере База данных Azure для PostgreSQL.

pg_cron

pg_cron — это простой планировщик заданий на основе cron для PostgreSQL, который работает в базе данных как расширение. Расширение pg_cron можно использовать для выполнения запланированных задач обслуживания в базе данных PostgreSQL. Например, можно запустить периодическую очистку таблицы или удалить старые задания данных.

pg_cron может выполнять несколько заданий параллельно, но в каждый момент времени выполняется не более одного экземпляра задания. Если второй запуск должен начаться до завершения первого, второй запуск помещается в очередь и запускается сразу после завершения первого выполнения. Это гарантирует, что задания выполняются ровно столько раз, сколько запланировано, и не выполняются одновременно с собой.

Некоторые примеры:

Удаление старых данных в субботу в 3:30 утра (GMT).

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Для запуска вакуума каждый день в базе данных postgresпо умолчанию в 10:00 утра (GMT).

SELECT cron.schedule('0 10 * * *', 'VACUUM');

Чтобы отменить отмену всех задач из pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

Просмотр всех заданий, запланированных в данный момент.pg_cron

SELECT * FROM cron.job;

Чтобы запускать вакуум каждый день в 10:00 (GMT) в базе данных testcron в azure_pg_admin учетной записи роли.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

Примечание.

pg_cron расширение предварительно загружено shared_preload_libraries для каждого База данных Azure для PostgreSQL гибкого экземпляра сервера внутри базы данных postgres, чтобы обеспечить возможность планирования заданий для выполнения в других базах данных в База данных Azure для PostgreSQL гибком экземпляре базы данных сервера без ущерба для безопасности. Однако по соображениям безопасности необходимо разрешить расширение спискаpg_cron и установить его с помощью команды CREATE EXTENSION .

Начиная с pg_cron версии 1.4 можно использовать cron.schedule_in_database и cron.alter_job функции для планирования задания в определенной базе данных и обновления существующего расписания соответственно.

Некоторые примеры:

Удаление старых данных в субботу в 3:30 утра (GMT) в базе данных DBName.

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Примечание.

cron_schedule_in_database функция позволяет использовать имя пользователя как необязательный параметр. Для задания имени пользователя значение, отличное от NULL, требуется привилегия суперпользователя PostgreSQL и не поддерживается в База данных Azure для PostgreSQL гибком сервере. В предыдущих примерах показано, как выполнить эту функцию с необязательным параметром имени пользователя или задать значение NULL, которое запускает задание в контексте планирования задания, которое должно иметь права azure_pg_admin роли.

Обновление или изменение имени базы данных для существующего расписания

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots (предварительная версия)

Расширение слотов отработки отказа PG улучшает База данных Azure для PostgreSQL гибкий сервер при работе с логическими реплика серверами с поддержкой высокой доступности. Он эффективно решает проблему в стандартном обработчике PostgreSQL, который не сохраняет логические слоты реплика tion после отработки отказа. Поддержание этих слотов крайне важно, чтобы предотвратить приостановку реплика или несоответствия данных во время изменений роли сервера-источника, обеспечивая непрерывность работы и целостность данных.

Расширение упрощает процесс отработки отказа, управляя необходимым переносом, очисткой и синхронизацией слотов реплика tion, что обеспечивает простой переход во время изменений роли сервера. Расширение поддерживается для PostgreSQL версии 11–16.

Дополнительные сведения и способы использования расширения слотов отработки отказа PG можно найти на странице GitHub.

Включение pg_failover_slots

Чтобы включить расширение слотов отработки отказа PG для База данных Azure для PostgreSQL гибкого экземпляра сервера, необходимо изменить конфигурацию сервера, включив расширение в общие библиотеки предварительной загрузки сервера и настройка определенного параметра сервера. Вот как это делается:

  1. Добавьте pg_failover_slots в общие библиотеки предварительной загрузки сервера, обновив shared_preload_libraries параметр.
  2. Измените параметр hot_standby_feedbackonсервера на .

Любые изменения в параметре shared_preload_libraries требуют, чтобы перезапуск сервера вступил в силу.

На портале Azure сделайте следующее:

  1. Войдите в портал Azure и перейдите на страницу База данных Azure для PostgreSQL гибкого экземпляра сервера.
  2. В меню слева выберите параметры сервера.
  3. shared_preload_libraries Найдите параметр в списке и измените его значение, чтобы включитьpg_failover_slots.
  4. Выполните поиск параметра и задайте для нее hot_standby_feedback значение on.
  5. Нажмите кнопку "Сохранить", чтобы сохранить изменения. Теперь у вас будет возможность сохранить и перезапустить. Выберите это, чтобы убедиться, что изменения вступили в силу, так как для изменения shared_preload_libraries требуется перезапуск сервера.

Выбрав "Сохранить и перезапустить", сервер автоматически перезагрузится, применив внесенные изменения. После возврата сервера расширение слотов отработки отказа PG включено и работает на основном База данных Azure для PostgreSQL гибком экземпляре сервера, готовом к обработке логических слотов реплика tion во время отработки отказа.

pg_stat_statements

Расширение pg_stat_statements предоставляет представление всех запросов, выполняемых в базе данных. Это полезно, чтобы понять, как выглядит производительность рабочей нагрузки запроса в рабочей системе.

Расширение pg_stat_statements предварительно загружено на shared_preload_libraries каждый База данных Azure для PostgreSQL гибкий экземпляр сервера, чтобы обеспечить возможность отслеживания статистики выполнения инструкций SQL. Однако по соображениям безопасности вам по-прежнему необходимо разрешить расширение pg_stat_statements спискаразрешений и установить его с помощью команды CREATE EXTENSION. Параметр pg_stat_statements.track, который управляет тем, какие инструкции учитываются расширением, по умолчанию имеет значение top. Это означает, что все инструкции, выпущенные непосредственно клиентами, отслеживаются. Два других уровня отслеживания: none и all. Это значение настраивается как параметр сервера.

Существует компромисс между информацией о выполнении запроса, предоставляемой pg_stat_statements, и воздействием на производительность сервера при регистрации каждой инструкции SQL. Если вы не используете pg_stat_statements расширение, рекомендуется задать значение pg_stat_statements.tracknone. Некоторые сторонние службы мониторинга могут полагаться на pg_stat_statements доставку аналитических сведений о производительности запросов, поэтому убедитесь, что это так для вас или нет.

TimescaleDB

TimescaleDB — это база данных временных рядов, которая упакована в качестве расширения для PostgreSQL. TimescaleDB обеспечивает ориентированные на время аналитические функции, оптимизации и масштабирует Postgres для рабочих нагрузок временных рядов. Дополнительные сведения о TimescaleDB, зарегистрированном торговом знаке Timescale, Inc. База данных Azure для PostgreSQL гибким сервером, предоставляет выпуск TimescaleDB Apache-2.

Установка TimescaleDB

Чтобы установить TimescaleDB, кроме того, чтобы разрешить перечисление, как показано выше, необходимо включить его в общие библиотеки предварительной загрузки сервера. Чтобы изменение параметра shared_preload_libraries вступило в силу, перезапустите сервер. Параметры можно изменить с помощью портала Azure или Azure CLI. В случае использования портала Azure выполните следующие действия:

  1. Выберите гибкий экземпляр сервера База данных Azure для PostgreSQL.

  2. На боковой панели выберите Параметры сервера.

  3. Найдите параметр shared_preload_libraries.

  4. Выберите TimescaleDB.

  5. Нажмите кнопку Сохранить, чтобы сохранить изменения. После сохранения изменений вы получите уведомление.

  6. После получения уведомления перезапустите сервер, чтобы применить эти изменения.

Теперь вы можете включить TimescaleDB в гибкой базе данных сервера База данных Azure для PostgreSQL. Подключитесь к базе данных заданий и выполните следующую команду:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Совет

Если появится сообщение об ошибке, подтвердите перезапуск сервера после сохранения shared_preload_libraries.

Теперь можно создать гипертаблицу TimescaleDB с нуля или перенести существующие данные временных рядов в PostgreSQL.

Восстановление базы данных шкалы времени с помощью pg_dump и pg_restore

Чтобы восстановить базу данных timescale с помощью pg_dump и pg_restore, необходимо выполнить две вспомогательные процедуры в целевой базе данных: timescaledb_pre_restore() и timescaledb_post restore().

Сначала подготовьте целевую базу данных:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Теперь вы можете запустить pg_dump в исходной базе данных, а затем выполнить pg_restore. После восстановления выполните в восстановленной базе данных следующую команду:

SELECT timescaledb_post_restore();

Дополнительные сведения о методе восстановления с включенной базой данных Timescale см . в документации по шкале времени.

Восстановление базы данных timescale с помощью timescaledb-backup

При выполнении процедуры SELECT timescaledb_post_restore() , указанной выше, могут быть отклонены разрешения на обновление флага timescaledb.restoring. Это связано с ограниченным разрешением ALTER DATABASE в облачных службах баз данных PaaS. В этом случае можно выполнить альтернативный метод с помощью timescaledb-backup средства для резервного копирования и восстановления базы данных Timescale. Timescaledb-backup — это программа, позволяющая упростить создание дампа и восстановление базы данных TimescaleDB, сделать эти процедуры менее подверженными ошибкам и повысить их производительность.
Для этого необходимо выполнить следующие действия.

  1. Установите инструменты, как описано здесь
  2. Создание целевого База данных Azure для PostgreSQL гибкого экземпляра сервера и базы данных
  3. Включите расширение шкалы времени, как показано выше
  4. Предоставление azure_pg_admin роли пользователю, который будет использоваться ts-restore
  5. Выполните команду ts-restore для восстановления базы данных

Дополнительные сведения об этих служебных программах см. здесь.

Примечание.

При использовании timescale-backup служебных программ для восстановления в Azure, так как имена пользователей базы данных для База данных Azure для PostgreSQL одного сервера должны использовать <user@db-name> формат, необходимо заменить @%40 кодировкой символов.

pg_hint_plan

pg_hint_plan позволяет настраивать планы выполнения PostgreSQL с помощью так называемых "подсказок" в комментариях SQL, например:

/*+ SeqScan(a) */

pg_hint_plan считывает фразы с указанием в комментариях специальной формы, заданной с помощью целевой инструкции SQL. Специальная форма начинается по последовательности символов "/*+" и заканчивается "*/". Фразы подсказки состоят из имени подсказки и следующих параметров, заключенных в скобки и разделенных пробелами. Новые строки для удобочитаемости могут разделять каждую фразу с указанием.

Пример:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

Приведенный выше пример приводит к тому, что планировщик будет использовать результаты seq scan таблицы a в сочетании с таблицей b как a hash join.

Чтобы установить pg_hint_plan, кроме того, чтобы разрешить перечисление, как показано выше, необходимо включить его в общие библиотеки предварительной загрузки сервера. Чтобы изменение параметра shared_preload_libraries вступило в силу, перезапустите сервер. Параметры можно изменить с помощью портала Azure или Azure CLI. В случае использования портала Azure выполните следующие действия:

  1. Выберите гибкий экземпляр сервера База данных Azure для PostgreSQL.

  2. На боковой панели выберите Параметры сервера.

  3. Найдите параметр shared_preload_libraries.

  4. Выберите pg_hint_plan.

  5. Нажмите кнопку Сохранить, чтобы сохранить изменения. После сохранения изменений вы получите уведомление.

  6. После получения уведомления перезапустите сервер, чтобы применить эти изменения.

Теперь вы можете включить pg_hint_plan гибкой базы данных сервера База данных Azure для PostgreSQL. Подключитесь к базе данных заданий и выполните следующую команду:

CREATE EXTENSION pg_hint_plan;

pg_buffercache

Pg_buffercache можно использовать для изучения содержимого shared_buffers. С помощью этого расширения можно определить, кэшируется ли определенное отношение (в shared_buffers). Это расширение поможет устранить проблемы с производительностью (кэширование связанных проблем с производительностью).

Это часть contrib, и это легко установить это расширение.

CREATE EXTENSION pg_buffercache;

Расширения и обновление основных версий

База данных Azure для PostgreSQL гибкий сервер представил функцию обновления основной версии на месте, которая выполняет обновление База данных Azure для PostgreSQL гибкого экземпляра сервера с щелчком мыши. Обновление основной версии на месте упрощает процесс обновления гибкого сервера База данных Azure для PostgreSQL, минимизируя нарушение доступа пользователей и приложений к серверу. Обновление основной версии на месте не поддерживает определенные расширения, и существуют некоторые ограничения для обновления определенных расширений. Расширения Timescaledb, pgaudit, dblink, orafce и postgres_fdw не поддерживаются для всех База данных Azure для PostgreSQL гибких версий сервера при использовании функции обновления основной версии на месте.