監視とメトリクス
Managed Postgres インスタンスのメトリクスにアクセスするにはどうすればよいですか?
詳細なクエリ分析を行うための Query Performance Insights は近日提供予定です。
バックアップと復旧
どのようなバックアップ オプションを利用できますか?
インフラストラクチャと自動化
Managed Postgres で Terraform は利用できますか?
拡張機能と設定
サポートされている拡張機能を教えてください。
PostgreSQL の設定パラメータはカスタマイズできますか?
接続プーリング
なぜ PgBouncer 経由で prepared statement does not exist エラーが表示されるのですか?
PREPARE (または拡張クエリの Parse) を実行した特定のバックエンドにひも付いている サーバー側のプリペアドステートメント は機能しません。対応する Execute が別のバックエンドに送られると、次のようなエラーが発生します。
- 特にバックフィル時や高並行な書き込み時に、
prepared statement does not existエラーが断続的に発生する - insert が「何も起きずに失敗した」ように見える — ステートメントでエラーが発生し、ドライバーが再試行した結果、Batch が部分的にしか適用されなかったり、破棄されたりすることがある
- 戻り値の型が誤っている (たとえば、
BIGINTカラムがfloat64のビットパターンとしてデコードされる) — これは、クライアント側でキャッシュされたプランが、対応するParseが一度も送信されていないバックエンドに対して、古い型/フォーマットコードを再利用したときに発生する
| ドライバー | 設定 |
|---|---|
| pgx (Go) | statement_cache_capacity=0 and default_query_exec_mode=exec (or simple_protocol) |
| psycopg3 (Python) | prepare_threshold=None |
| asyncpg (Python) | statement_cache_size=0 |
| JDBC (Java) | prepareThreshold=0 |
| node-postgres / pg (Node.js) | query() に name を渡さない (名前付きクエリはサーバー側でプリペアド化される) |
PgBouncer の “max_client_conn” 設定は何を意味し、Postgres の max_connections とどう関係しますか?
- Postgres
max_connectionsは、PostgreSQL 自体への バックエンド 接続数の上限です。こちらはコストの高い数値で、各バックエンドがメモリとプロセススロットを消費します。 - PgBouncer
max_client_connは、同時にプーラーへ開ける クライアント 接続数の上限です。PgBouncer は、多数のクライアント接続を、はるかに少ない数のバックエンド接続に多重化します。
default_pool_size) に達している可能性のほうがはるかに高いです。
データベースの機能
複数のデータベースとスキーマを作成できますか?
ロールベースのアクセス制御 (RBAC) はサポートされていますか?
Console との統合を含む強化された RBAC 機能は、今年中に提供される予定です。
アップグレード
PostgreSQL のバージョンアップグレードはどのように行われますか?
移行
Managed Postgres への移行にはどのようなツールを利用できますか?
- pg_dump と pg_restore: 小規模なデータベースや一回限りの移行に適しています。pg_dump と pg_restore ガイドを参照してください。
- 論理レプリケーション: ダウンタイムを最小限に抑える必要がある大規模なデータベースに適しています。Logical replication ガイドを参照してください。
- PeerDB: 他の Postgres ソースからの CDC (変更データキャプチャ) ベースのレプリケーションに適しています。PeerDB migration ガイドを参照してください。
完全マネージド型の移行機能は近日提供予定です。