Azure Database for PostgreSQL - フレキシブル サーバーの PostgreSQL 拡張機能

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

PostgreSQL では拡張機能を使用してデータベースの機能を拡張することができます。 拡張機能により、関連する複数の SQL オブジェクトを単一のパッケージにまとめて、単一のコマンドでデータベースに対する読み込みや削除を行うことができます。 データベースに読み込まれた後、拡張機能は組み込み機能と同じように機能します。

PostgreSQL 拡張機能の使用方法

Azure Database for PostgreSQL - フレキシブル サーバーに拡張機能をインストールする前に、使用するそれらの拡張機能を許可リストに追加する必要があります。

Azure portal を使用して以下を実行します。

  1. お使いの Azure Database for PostgreSQL - フレキシブル サーバーを選択します。
  2. サイドバーから、 [サーバー パラメーター] を選択します。
  3. azure.extensions パラメーターを検索します。
  4. 許可リストに追加する拡張機能を選択します。 Azure Database for PostgreSQL でインストールする許可リスト拡張機能を示すスクリーンショット

Azure CLI を使用:

CLI の parameter set コマンドを使用して、拡張機能を許可リストに追加できます。

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 テンプレートを使用: 以下に示す例では、サーバー mypostgreserver 上の dblink、dict_xsyn、pg_buffercache の拡張機能を許可リストに追加します。

{

    "$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 は、PostgreSQL の起動時に読み込むライブラリを決定するサーバー構成パラメーターです。 共有メモリを使用するライブラリは、このパラメーターを使用して読み込む必要があります。 拡張機能を共有プリロード ライブラリに追加する必要がある場合は、次の方法を実行することができます。

Azure portal を使用して以下を実行します。

  1. お使いの Azure Database for PostgreSQL - フレキシブル サーバーを選択します。
  2. サイドバーから、 [サーバー パラメーター] を選択します。
  3. shared_preload_libraries パラメーターを検索します。
  4. 追加する拡張機能を選択します。 Azure Database for PostgreSQL で拡張機能をインストールするための共有プリロード ライブラリのパラメーター設定を示すスクリーンショット。

Azure CLI を使用:

CLI の parameter set コマンドを使用して shared_preload_libraries を設定できます。

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 コマンドを実行する必要があります。 このコマンドで、パッケージ化されたオブジェクトがデータベースに読み込まれます。

Note

Azure Database for PostgreSQL - フレキシブル サーバーで提供されるサードパーティー拡張機能は、オープン ソースでライセンスされたコードです。 現時点では、プレミアムまたは独自のライセンス モデルを使用したサード パーティ拡張機能や拡張機能バージョンは Microsoft から提供されていません。

Azure Database for PostgreSQL でサポートされる主要な PostgreSQL 拡張機能のサブセットを次に示します。 この情報は、SHOW azure.extensions;を実行して確認することもできます。 このドキュメントに記載されていない拡張機能は、Azure Database for PostgreSQL - フレキシブル サーバーではサポートされていません。 Azure Database for PostgreSQL には、独自の拡張機能を作成することも読み込むこともできません。

Postgres 14 の拡張機能

Postgres バージョン 14 を搭載した Azure Database for PostgreSQL - フレキシブル サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 3.1.1 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 3.1.1 Address Standardizer US データセットの例
amcheck 1.2 関係の整合性を検証するための関数
bloom 1.0 bloom アクセス メソッド - シグネチャ ファイルに基づくインデックス
btree_gin 1.3 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.5 GiST で一般的なデータ型のインデックスを作成するためのサポート
citext 1.6 大文字と小文字を区別しない文字列のデータ型
cube 1.4 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
dict_xsyn 1.0 拡張されたシノニム処理のためのテキスト検索ディクショナリのテンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hypopg 1.3.1 仮定のインデックスのサポートを追加する拡張機能
hstore 1.7 (キー、値) ペアのセットを格納するためのデータ型
intagg 1.1 整数のアグリゲーターと列挙子 (廃止)
intarray 1.3 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.2 国際対応の製品番号規格のデータ型
lo 1.1 ラージ オブジェクトのメンテナンス
ltree 1.2 階層ツリー状の構造体のデータ型
orafce 3.18 Oracle データベースに不足している一部の関数を Postgres で実装
pageinspect 1.8 低レベルでデータベース ページの内容を検査する
pg_buffercache 1.3 共有バッファー キャッシュを確認する
pg_cron 1.4 PostgreSQL のジョブ スケジューラ
pg_freespacemap 1.2 空き領域マップ (FSM) を確認する
pg_partman 4.6.1 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.2 関係データをプレウォームする
pg_repack 1.4.7 テーブルとインデックスから肥大化を削除できます
pg_stat_statements 1.8 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.5 trigram に基づくテキストの類似性の測定とインデックス検索
pg_hint_plan 1.4 SQL コメントでいわゆる "ヒント" を使って PostgreSQL 実行プランを微調整できるようにします
pg_visibility 1.2 可視性マップ (VM) とページ レベルの可視性情報を調べる
pgaudit 1.6.2 監査機能を提供する
pgcrypto 1.3 暗号化関数
pglogical 2.3.2 論理ストリーミング レプリケーション
pgrouting 3.3.0 地理空間ルーティングを提供する地理空間データベース
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.5 タプルレベルの統計情報を表示する
pgvector 0.4.0 Postgres のオープンソース ベクトルの類似性検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 3.0.0 信頼できる Javascript 言語拡張機能
postgis 3.2.0 PostGIS ジオメトリ、地理
postgis_raster 3.2.0 PostGIS ラスター型と関数
postgis_sfcgal 3.2.0 PostGIS SFCGAL 関数
postgis_tiger_geocoder 3.2.0 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 3.2.0 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
sslinfo 1.2 SSL 証明書に関する情報
semver 0.32.0 セマンティック バージョンのデータ型
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 2.5.1 時系列と分析のためのオープンソースのリレーショナル データベース
tsm_system_rows 1.0 行数を制限として受け取る TABLESAMPLE メソッド
tsm_system_time 1.0 ミリ秒単位の時間を制限として受け取る TABLESAMPLE メソッド
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

Postgres 13 の拡張機能

Postgres バージョン 13 を搭載した Azure Database for PostgreSQL - フレキシブル サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 3.1.1 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 3.1.1 Address Standardizer US データセットの例
amcheck 1.2 関係の整合性を検証するための関数
bloom 1.0 bloom アクセス メソッド - シグネチャ ファイルに基づくインデックス
btree_gin 1.3 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.5 GiST で一般的なデータ型のインデックスを作成するためのサポート
citext 1.6 大文字と小文字を区別しない文字列のデータ型
cube 1.4 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
dict_xsyn 1.0 拡張されたシノニム処理のためのテキスト検索ディクショナリのテンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hypopg 1.3.1 仮定のインデックスのサポートを追加する拡張機能
hstore 1.7 (キー、値) ペアのセットを格納するためのデータ型
intagg 1.1 整数のアグリゲーターと列挙子 (廃止)
intarray 1.3 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.2 国際対応の製品番号規格のデータ型
lo 1.1 ラージ オブジェクトのメンテナンス
ltree 1.2 階層ツリー状の構造体のデータ型
orafce 3.18 Oracle データベースに不足している一部の関数を Postgres で実装
pageinspect 1.8 低レベルでデータベース ページの内容を検査する
pg_buffercache 1.3 共有バッファー キャッシュを確認する
pg_cron 1.4 PostgreSQL のジョブ スケジューラ
pg_freespacemap 1.2 空き領域マップ (FSM) を確認する
pg_partman 4.5.0 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.2 関係データをプレウォームする
pg_repack 1.4.7 テーブルとインデックスから肥大化を削除できます
pg_stat_statements 1.8 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.5 trigram に基づくテキストの類似性の測定とインデックス検索
pg_hint_plan 1.4 SQL コメントでいわゆる "ヒント" を使って PostgreSQL 実行プランを微調整できるようにします
pg_visibility 1.2 可視性マップ (VM) とページ レベルの可視性情報を調べる
pgaudit 1.5 監査機能を提供する
pgcrypto 1.3 暗号化関数
pglogical 2.3.2 論理ストリーミング レプリケーション
pgrouting 3.3.0 地理空間ルーティングを提供する地理空間データベース
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.5 タプルレベルの統計情報を表示する
pgvector 0.4.0 Postgres のオープンソース ベクトルの類似性検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 3.0.0 信頼できる Javascript 言語拡張機能
postgis 3.2.0 PostGIS ジオメトリ、地理
postgis_raster 3.2.0 PostGIS ラスター型と関数
postgis_sfcgal 3.2.0 PostGIS SFCGAL 関数
postgis_tiger_geocoder 3.2.0 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 3.2.0 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
sslinfo 1.2 SSL 証明書に関する情報
semver 0.32.0 セマンティック バージョンのデータ型
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 2.5.1 時系列と分析のためのオープンソースのリレーショナル データベース
tsm_system_rows 1.0 行数を制限として受け取る TABLESAMPLE メソッド
tsm_system_time 1.0 ミリ秒単位の時間を制限として受け取る TABLESAMPLE メソッド
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

Postgres 12 の拡張機能

Postgres バージョン 12 を搭載した Azure Database for PostgreSQL - フレキシブル サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 3.0.0 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 3.0.0 Address Standardizer US データセットの例
amcheck 1.2 関係の整合性を検証するための関数
bloom 1.0 bloom アクセス メソッド - シグネチャ ファイルに基づくインデックス
btree_gin 1.3 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.5 GiST で一般的なデータ型のインデックスを作成するためのサポート
citext 1.6 大文字と小文字を区別しない文字列のデータ型
cube 1.4 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
dict_xsyn 1.0 拡張されたシノニム処理のためのテキスト検索ディクショナリのテンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hstore 1.6 (キー、値) ペアのセットを格納するためのデータ型
hypopg 1.2 仮定のインデックスのサポートを追加する拡張機能
intagg 1.1 整数のアグリゲーターと列挙子 (廃止)
intarray 1.2 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.2 国際対応の製品番号規格のデータ型
lo 1.1 ラージ オブジェクトのメンテナンス
ltree 1.1 階層ツリー状の構造体のデータ型
orafce 3.18 Oracle データベースに不足している一部の関数を Postgres で実装
pageinspect 1.7 低レベルでデータベース ページの内容を検査する
pg_buffercache 1.3 共有バッファー キャッシュを確認する
pg_cron 1.4 PostgreSQL のジョブ スケジューラ
pg_freespacemap 1.2 空き領域マップ (FSM) を確認する
pg_partman 4.5.0 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.2 関係データをプレウォームする
pg_repack 1.4.7 テーブルとインデックスから肥大化を削除できます
pg_stat_statements 1.7 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.4 trigram に基づくテキストの類似性の測定とインデックス検索
pg_hint_plan 1.4 SQL コメントでいわゆる "ヒント" を使って PostgreSQL 実行プランを微調整できるようにします
pg_visibility 1.2 可視性マップ (VM) とページ レベルの可視性情報を調べる
pgaudit 1.4 監査機能を提供する
pgcrypto 1.3 暗号化関数
pglogical 2.3.2 論理ストリーミング レプリケーション
pgrouting 3.3.0 地理空間ルーティングを提供する地理空間データベース
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.5 タプルレベルの統計情報を表示する
pgvector 0.4.0 Postgres のオープンソース ベクトルの類似性検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 3.2.0 信頼できる Javascript 言語拡張機能
postgis 3.2.0 PostGIS ジオメトリ、地理
postgis_raster 3.2.0 PostGIS ラスター型と関数
postgis_sfcgal 3.2.0 PostGIS SFCGAL 関数
postgis_tiger_geocoder 3.2.0 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 3.2.0 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
sslinfo 1.2 SSL 証明書に関する情報
semver 0.32.0 セマンティック バージョンのデータ型
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 2.5.1 時系列と分析のためのオープンソースのリレーショナル データベース
tsm_system_rows 1.0 行数を制限として受け取る TABLESAMPLE メソッド
tsm_system_time 1.0 ミリ秒単位の時間を制限として受け取る TABLESAMPLE メソッド
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

Postgres 11 の拡張機能

Postgres バージョン 11 を搭載した Azure Database for PostgreSQL - フレキシブル サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 2.5.1 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 2.5.1 Address Standardizer US データセットの例
amcheck 1.1 関係の整合性を検証するための関数
bloom 1.0 bloom アクセス メソッド - シグネチャ ファイルに基づくインデックス
btree_gin 1.3 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.5 GiST で一般的なデータ型のインデックスを作成するためのサポート
citext 1.5 大文字と小文字を区別しない文字列のデータ型
cube 1.4 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
dict_xsyn 1.0 拡張されたシノニム処理のためのテキスト検索ディクショナリのテンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hstore 1.5 (キー、値) ペアのセットを格納するためのデータ型
hypopg 1.1.2 仮定のインデックスのサポートを追加する拡張機能
intagg 1.1 整数のアグリゲーターと列挙子 (廃止)
intarray 1.2 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.2 国際対応の製品番号規格のデータ型
lo 1.1 ラージ オブジェクトのメンテナンス
ltree 1.1 階層ツリー状の構造体のデータ型
orafce 3.18 Oracle データベースに不足している一部の関数を Postgres で実装
pageinspect 1.7 低レベルでデータベース ページの内容を検査する
pg_buffercache 1.3 共有バッファー キャッシュを確認する
pg_cron 1.4 PostgreSQL のジョブ スケジューラ
pg_freespacemap 1.2 空き領域マップ (FSM) を確認する
pg_partman 4.5.0 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.2 関係データをプレウォームする
pg_repack 1.4.7 テーブルとインデックスから肥大化を削除できます
pg_stat_statements 1.6 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.4 trigram に基づくテキストの類似性の測定とインデックス検索
pg_hint_plan 1.4 SQL コメントでいわゆる "ヒント" を使って PostgreSQL 実行プランを微調整できるようにします
pg_visibility 1.2 可視性マップ (VM) とページ レベルの可視性情報を調べる
pgaudit 1.3.1 監査機能を提供する
pgcrypto 1.3 暗号化関数
pglogical 2.3.2 論理ストリーミング レプリケーション
pgrouting 3.3.0 地理空間ルーティングを提供する地理空間データベース
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.5 タプルレベルの統計情報を表示する
pgvector 0.4.0 Postgres のオープンソース ベクトルの類似性検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 3.0.0 信頼できる Javascript 言語拡張機能
postgis 2.5.5 PostGIS ジオメトリ、地理、およびラスターの空間型と関数
postgis_sfcgal 2.5.5 PostGIS SFCGAL 関数
postgis_tiger_geocoder 2.5.5 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 2.5.5 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
sslinfo 1.2 SSL 証明書に関する情報
semver 0.32.0 セマンティック バージョンのデータ型
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 1.7.4 時系列と分析のためのオープンソースのリレーショナル データベース
tsm_system_rows 1.0 行数を制限として受け取る TABLESAMPLE メソッド
tsm_system_time 1.0 ミリ秒単位の時間を制限として受け取る TABLESAMPLE メソッド
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

dblink および postgres_fdw を使用して、1 つの PostgreSQL サーバーから別のサーバーに、または同一サーバー内の別のデータベースに接続できます。 フレキシブル サーバーは、任意の PostgreSQL サーバーへの受信接続と送信接続の両方をサポートします。 送信側サーバーでは、受信側サーバーへの送信接続を許可している必要があります。 同様に、受信側サーバーでは、送信側サーバーからの接続を許可している必要があります。

これらの 2 つの拡張機能を使用する予定がある場合は、VNet 統合でサーバーをデプロイすることをお勧めします。 既定では、VNET 統合によって、VNET 内のサーバー間の接続が許可されます。 VNet ネットワーク セキュリティ グループを使用してアクセスをカスタマイズすることもできます。

pg_prewarm

pg_prewarm 拡張機能により、リレーショナル データがキャッシュに読み込まれます。 キャッシュをプレウォームすると、再起動後に最初に実行したときのクエリの応答時間が向上します。 自動 prewarm 機能は、Azure Database for PostgreSQL - フレキシブル サーバーでは現在、使用できません。

pg_cron

pg_cron は、PostgreSQL のための cron ベースの簡単なジョブ スケジューラであり、拡張機能としてデータベース内で実行されます。 PostgreSQL データベース内でメンテナンス作業を定期的に実行する目的で pg_cron 拡張機能を使用できます。 たとえば、テーブルを定期的に消去したり、古いデータ ジョブを削除したりできます。

pg_cron では、複数のジョブを並行して実行できますが、一度に実行できるジョブのインスタンスは 1 つだけです。 2 回目の実行が初回の完了前になった場合、2 回目の実行がキューに入り、初回実行の完了直後に開始されます。 それによってジョブ実行が厳密に予定と同じ回数になり、同時に実行されることがありません。

次に例をいくつか示します。

土曜日午前 3:30 (GMT) に古いデータを削除するには

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

既定のデータベース 'postgres' で毎日午前 10 時 (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 拡張機能は、postgres データベース内のすべての Azure Database for PostgreSQL - フレキシブル サーバーの shared_preload_libraries に事前に読み込まれているため、セキュリティを損なうことなく、PostgreSQL DB インスタンス内の他のデータベースで実行するようにジョブをスケジュールできます。 ただし、セキュリティ上の理由から、引き続き pg_cron 拡張機能のリストを許可し、CREATE EXTENSION コマンドを使用してインストールする必要があります。

pg_cron バージョン 1.4 以降、cron.schedule_in_database 関数と cron.alter_job 関数を使用して、それぞれ特定のデータベースでジョブをスケジュールし、既存のスケジュールを更新できます。

次に例をいくつか示します。

データベース DBName で土曜日午前 3:30 (GMT) に古いデータを削除するには

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 Database for PostgreSQL - フレキシブル サーバーではサポートされていません。 上記の例では、省略可能なユーザー名パラメーターを省略しているか null に設定してこの関数を実行しています。これによって、azure_pg_admin ロール特権を持っている必要がある、ジョブをスケジュールするユーザーのコンテキストでジョブが実行されます。

既存のスケジュールのデータベース名を更新または変更するには

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

pg_stat_statements

pg_stat_statements 拡張機能を使用すると、データベースで実行されているすべてのクエリを表示できます。 これは、実稼働システムでのクエリ ワークロードのパフォーマンスがどのようになるかを理解するのに非常に役立ちます。

pg_stat_statements 拡張機能は、すべての Azure Database for PostgreSQL フレキシブル サーバーの shared_preload_libraries に事前に読み込まれます。これにより、SQL ステートメントの実行統計情報を追跡する手段が提供されます。 ただし、セキュリティ上の理由から、引き続き pg_stat_statements 拡張機能リストを許可し、CREATE EXTENSION コマンドを使用してインストールする必要があります。 ステートメントをコントロールする設定pg_stat_statements.trackは、拡張機能と既定値によってtopにカウントされ、クライアントが直接発行したすべてのステートメントがすべて追跡されます。 その他の 2 つの追跡レベルはnoneallです。 この設定は、サーバー パラメーターとして構成できます。

各 SQL ステートメントをログに記録する時はPg_stat_statements が提供するクエリの実行情報とサーバーのパフォーマンスに与える影響にトレードオフがあります。 pg_stat_statements 拡張機能を使用していない場合、pg_stat_statements.tracknoneに設定することをお勧めします。 一部のサード パーティ監視サービスがクエリ パフォーマンスの分析情報を実行するために Pg_stat_statements に依存することがありますので、そのようなケースに該当するかどうかを確認してください。

TimescaleDB

TimescaleDB は、PostgreSQL の拡張機能としてパッケージされた時系列データベースです。 TimescaleDB は、時間指向の分析関数、最適化を提供し、時系列ワークロードに合わせて PostgreSQL を拡大縮小します。 Timescale, Inc. の登録商標である TimescaleDB の詳細を参照します。 Azure Database for PostgreSQL には、TimescaleDB Apache-2 エディションが用意されています。

TimescaleDB をインストールする

TimescaleDB をインストールするには、許可リストに追加することに加えて、に示すようにサーバーの共有プリロード ライブラリに含める必要があります。 Postgres の shared_preload_libraries パラメーターへの変更を有効にするには、shared_preload_librariesが必要です。 Azure portal または Azure CLI を使用してパラメーターを変更できます。

Azure portal を使用して以下を実行します。

  1. Azure Database for PostgreSQL サーバーを選択します。

  2. サイドバーから、 [サーバー パラメーター] を選択します。

  3. shared_preload_libraries パラメーターを検索します。

  4. [TimescaleDB] を選択します。

  5. [保存] を選択して変更を保存します。 変更が保存されると通知を受け取ります。

  6. 通知後、サーバーを再起動してこれらの変更を適用します。

次に、Postgres データベースで TimescaleDB を有効にすることができます。 データベースに接続して、以下のコマンドを実行します。

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

ヒント

エラーが表示される場合は、shared_preload_libraries を保存した後にサーバーを再起動したことを確認します。

次に、一から TimescaleDB ハイパーテーブルを作成するか、PostgreSQL 内の既存の時系列データを移行することができます。

pg_dump と pg_restore を使用したタイムスケール データベースの復元

Pg_dump と pg_restore を使用してタイムスケールデータベースを復元するには、次の2つのヘルパープロシージャをデータベースで実行する必要があります: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();

タイムスケールが有効なデータベースを使った復元方法の詳細については、タイムスケールのドキュメントを参照してください

timescaledb-backup を使用したタイムスケール データベースの復元

上記のSELECT timescaledb_post_restore()手順の実行中、timescaledb.restoring フラグを更新するときに、アクセス許可の拒否エラーを受け取ることがあります。 これは、Cloud PaaS データベース サービスの ALTER DATABASE 権限が限られているためです。 この場合は、timescaledb-backup ツールを使用して、タイムスケール データベースをバックアップおよび復元する別の方法を実行できます。 Timescaledb-backup は、TimescaleDB データベースをダンプおよび復元するためのプログラムであり、よりシンプルで、エラーが発生しにくく、よりパフォーマンスが向上します。 これを行うには、次の手順を実行します

  1. ツールをインストールする (詳細はこちら)
  2. ターゲットの Azure Database for PostgreSQL サーバーとデータベースを作成する
  3. 上記のように、タイムスケール拡張機能を有効にする
  4. azure_pg_admin ロールを、ts-restore によって使用されるユーザーに付与する
  5. ts-restore を実行してデータベースを復元する

これらのユーティリティの詳細については、こちらを参照してください。

Note

timescale-backup ユーティリティを使用して Azure に復元する場合、柔軟性のない Azure Database For PostgresQL のデータベース ユーザー名は <user@db-name> 形式を使用する必要があるため、@%40 文字エンコードに置き換える必要があります。

pg_hint_plan

pg_hint_plan は、SQL コメントでいわゆる "ヒント" を使って PostgreSQL 実行プランを微調整できるようにします。次はその例です。

/*+ SeqScan(a) */

pg_hint_plan は、ターゲット SQL ステートメントで指定された特別な形式のコメント内のヒント フレーズを読み取ります。 特別な形式は、文字シーケンス "/*+" で始まり、"*/" で終わります。 ヒント フレーズは、ヒント名と、それに続くかっこで囲まれてスペースで区切られたパラメーターで構成されます。 各ヒント フレーズは、読みやすくするために改行で区切ることができます。 例:

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

上の例では、プランナーは、テーブル a に対する seq scan の結果を、テーブル b と hash join として組み合わせて使います。

pg_hint_plan をインストールするには、許可リストに追加することに加えて、に示すようにサーバーの共有プリロード ライブラリに含める必要があります。 Postgres の shared_preload_libraries パラメーターへの変更を有効にするには、shared_preload_librariesが必要です。 Azure portal または Azure CLI を使用してパラメーターを変更できます。

Azure portal を使用して以下を実行します。

  1. Azure Database for PostgreSQL サーバーを選択します。

  2. サイドバーから、 [サーバー パラメーター] を選択します。

  3. shared_preload_libraries パラメーターを検索します。

  4. [pg_hint_plan] を選択します。

  5. [保存] を選択して変更を保存します。 変更が保存されると通知を受け取ります。

  6. 通知後、サーバーを再起動してこれらの変更を適用します。

これで、Postgres データベースで pg_hint_plan を有効にできます。 データベースに接続して、以下のコマンドを実行します。

CREATE EXTENSION  pg_hint_plan ;

pg_buffercache

Pg_buffercache を使用して、shared_buffers の内容を調査できます。 この拡張機能を使用すると、特定の関係が (shared_buffers 内) にキャッシュされているかどうかを確認できます。 この拡張機能は、パフォーマンスの問題のトラブルシューティングに役立ちます (キャッシュ関連のパフォーマンスの問題)

これはコントリビューションの一部であり、この拡張機能は非常に簡単にインストールできます。

CREATE EXTENSION pg_buffercache;

次のステップ

使用する拡張機能が見つからない場合は、お知らせください。 フィードバック フォーラムで、既存のリクエストに投票することや、新しいフィードバック リクエストを作成することができます。