StackOverflowによると、PostgreSQLは最も人気のあるオープンソースデータベースであり、ますます多くの開発者や管理者がPostgreSQLを使用したいと考えています。 2021年9月にリリースされた最新バージョンのPostgreSQL14には、200以上の改善と新機能があり、セキュリティ、パフォーマンス、モニタリングの3つの領域に大きく分類されます。
今年初めにリリースされたバージョン1.9.2以降、ClusterControlは最新バージョンのPostgreSQL14をサポートするようになりました。
この投稿では、PostgreSQL 14で利用可能な最も注目すべき機能、メジャーアップデート、および改善点について説明します。
PostgreSQL 14の最も重要なセキュリティ変更は、SCRAM-SHA-256認証がPostgreSQL 10で最初に導入された後、デフォルトの認証としてSCRAMに移行することです。SCRAMは、データのコンプライアンスを規制するためのはるかにシンプルで強力なソリューションを提供します安全。以前のデフォルトのMD5認証には、過去にいくつかの悪用された弱点がありました。
認証の改善に加えて、PostgreSQL 14は、2つの事前定義されたロール、pg_write_all_dataとpg_read_all_dataを導入することにより、テーブル、ビュー、およびスキーマのユーザーに書き込み専用および読み取り専用機能を割り当てるプロセスを簡素化します。前者の役割は、スーパーユーザースタイルの特権を作成するのに便利です。アクティビティやアクセスには便利ですが、この種のアカウントは慎重に使用する必要があります。後者の役割は、データベース内のすべてのテーブル、スキーマ、およびビューへの読み取り専用アクセスをユーザーに付与するのに便利です。このロールには、デフォルトで、新しく作成されたテーブルへの読み取りアクセス権があります。
企業はますます多くのデータを処理しており、速度、量、多様性(ビッグデータの3つのV)は減速の兆候を示していません。 PostgreSQL 14は、これらのワークロードをサポートし、パフォーマンスを向上させるためにスケールアップおよびスケールアウトできるように、いくつかの非常に重要な変更を加えました。これは、次の5つの領域に最もよくグループ化できます。
PostgreSQL 14は、多数のパーティションを持つテーブルでの削除と更新のパフォーマンスに大きな成果をもたらします。これにより、パーティションテーブルの削除と更新で実行時のパーティションプルーニングを使用できます。最も重要なことは、このバージョンは以前よりも多くのパーティションに拡張できるため、PostgreSQLが以前よりもはるかに大きなデータベースに対応できるようになることです。
PostgreSQLバージョン14では、パーティションを同時にデタッチできるようになり、大きな時系列データテーブルの管理が容易になりました。これは、新しいdate_bin()関数により可能になり、ユーザーは時系列データをより適切かつ簡単に日付範囲に要約できるようになります。
PostgreSQL 14は、TOASTのLZ4圧縮のサポートを追加しました。 LZ4は最新の圧縮技術を使用しており、ドキュメントデータの解凍と圧縮の速度を向上させることに重点を置いています。 LZ4は、より大きなXMLおよびJSONドキュメントでアプリケーションを強化し、この圧縮アルゴリズムはシステムレベルと列レベルの両方で構成できます。
PostgreSQL 14は、分散データベースのパフォーマンスの向上に役立つpostgres_fdw(外部データラッパー)に2つの主要な拡張機能を導入することにより、データベースの水平スケーリングの改善も提供します。これらの変更により、外部テーブルでのデータの一括挿入と並列テーブルスキャンがサポートされます(async_capableが設定されている場合)。
接続キャッシュは、トランザクション間で接続を開くことができるようにすることで、パフォーマンスも向上させます。また、Libpdパイプラインモードについても言及できます。これは、各コマンドでネットワークの確認を待たずに変更のストリームを送信できるようにすることで、分散データベースのパフォーマンスを向上させます。
PostgreSQL 14は、Bツリーインデックスの肥大化の問題にも対処します。バキュームを実行することで削除できるデッドタプルが原因で、時間の経過とともに頻繁に更新されるインデックス。
このため、ページがバキュームの間にいっぱいになると、挿入または更新によって元に戻せないページ分割が発生する可能性があります。このバージョンでは、バキューム間のデッドタプルを検出して削除することにより、バキュームプロセスが強化されています(INDEX_CLEANUPパラメーターがAutoに設定されています)。
バキュームシステムのもう1つの改善点は、削除されたページを熱心に削除することです。以前のバージョンでは、削除されたページを削除するには、最初にページを削除済みとしてマークし、2番目のサイクルで実際にそのスペースを解放するという2つのバキュームサイクルが必要でした。
アプリケーションチューニングのインデックス管理は、PostgreSQL 14のもう1つの大きな改善点です。特に、REINDEXCONCURRENTLYとCREATEINDEX CONCURRENTLYを使用すると、互いに干渉することなく複数のコマンドを同時に実行できます。インデックスの詳細については、BRINインデックスは、範囲ごとに多数の最小/最大値を記録できるため、より柔軟になりました。これは、各ページ範囲の値のグループに役立ちます。また、BRINインデックスは、ブルームフィルターを使用することにより、ヒープ内に十分にローカライズされていないデータを効果的に処理します。
COPYコマンドのFREEZEオプションは、データ読み込みパフォーマンスのページ表示ビットを更新することで拡張されました。バイナリモードのCOPYも高速になりました。
PostgreSQL 14は、クエリの並列処理をREFRESH MATERIALIZEDVIEWおよびRETURNQUERYに追加することにより、クエリの並列処理を改良しました。これらの改善は、ネストされたループ結合と並列順次スキャンに展開されています。
PostgreSQL 14により、拡張統計を式およびOR句の推定に使用できる場所の数が増えました。以前は統計が列のみにあったのとは異なり、式のグループで許可されるようになりました。システムビューpg_stats_ext_exprsはそのような統計を報告します。
論理レプリケーションが改善され、APIまたはサブスクライバーを介して進行中の長いトランザクションをストリーミングできるようになりました。以前のバージョンでは、logical_decoding_work_memより大きいトランザクションは、トランザクションが完了するまでディスクに書き込まれてから、サブスクライバーにトランザクションを複製していました。新しい拡張機能が導入されると、論理レプリケーションは大量のDDLステートメントをより効率的に処理します。
各コマンドの後、論理レプリケーションは、進行中のトランザクションをストリーミングして処理するために、キャッシュ無効化メッセージをWALに書き込みます。このプロセスにより、パフォーマンスが大幅に向上します。
2022年の最大の流行語の1つは監視です。これは、管理者と開発者が時間の経過とともにパフォーマンスについてより多くの洞察を求めているためです。 PostgreSQL 14には、監視に役立つ新機能が導入されています。それらすべての中で最も重要な変更は、クエリハッシュシステムをpg_stat_statementからコアデータベースに移動することです。単一のIDを使用することで、複数のPostgreSQLシステムとロギング機能でクエリの監視が可能になりました。
このバージョンでは、次の新しい監視パラメータも導入されています。
-
Idle_session_timeout
-
パーティションテーブルの子インデックスのREINDEX
-
Maintenance_io_concurrency
-
Pg_stat_progress_copy
-
Pg_stat_wal
PostgreSQL14へのアップグレード
現在のPostgreSQLバージョンをバージョン14にアップグレードする場合は、このタスクを実行する3つの主要なオプションがあります。
-
Pg_dumpall:これは、データをダンプして新しいPostgreSQLに復元できる論理バックアップツールです。バージョン。ここでは、データサイズに応じて異なるダウンタイム期間があります。システムを停止するか、プライマリノードで新しいデータを回避し、pg_dumpallを実行し、生成されたダンプを新しいデータベースノードに移動して、復元する必要があります。この間、データの不整合を回避するためにプライマリPostgreSQLデータベースに書き込むことはできません。
-
Pg_upgrade:PostgreSQLのバージョンをアップグレードするためのPostgreSQLツールです。実稼働環境では危険である可能性があるため、その場合はこの方法をお勧めしません。この方法を使用すると、ダウンタイムが発生しますが、以前のpg_dumpメソッドを使用した場合よりも大幅に少なくなる可能性があります。
-
論理レプリケーション:PostgreSQL 10以降、このレプリケーション方法を使用できます。ダウンタイムがゼロ(またはほぼゼロ)のメジャーバージョンアップグレードを実行します。このようにして、最新のPostgreSQLバージョンでスタンバイノードを追加できます。レプリケーションが最新の場合は、フェイルオーバープロセスを実行して、新しいPostgreSQLノードを昇格させることができます。
PostgreSQL 14の新機能の詳細については、公式ドキュメントを参照してください。
PostgreSQL 14は、この人気のあるオープンソースデータベースのユーザーにとってゲームを本当に向上させました。現在、開発者と管理者は、高性能とスケーラビリティを向上させる機能の向上、分散データベースの機能強化、可観測性の向上などを実現しています。
ClusterControlを使用すると、最新のテクノロジーバージョンへのアップグレードが簡単でストレスがなくなります。 ClusterControlをまだ使用していない場合は、30日間無料で評価できます。 ClusterControl 1.9.2の最新リリースの詳細については、完全なリリースノートを確認してください。
TwitterやLinkedInでフォローし、ニュースレターを購読して、最も人気のあるオープンソースデータベースの最新ニュースとベストプラクティスをすべて入手してください。