2017年に4番目に人気のあるデータベースおよびDBMSオブザイヤーであるPostgreSQLは、世界中の開発およびデータベースコミュニティの間で人気が爆発的に高まっています。リーダーであるOracle、MySQL、Microsoft SQL Serverから市場シェアを奪い、PostgreSQLホスティングは、IoT、eコマース、SaaS、分析などのエキサイティングな分野の新しいビジネスでも大いに活用されています。
では、PostgreSQL管理のトレンドは何ですか?
先月サンフランシスコで開催されたPostgresOpenに参加し、専門家自身から最新のトレンドを明らかにしました。
ほとんどの時間-PostgreSQL管理タスクの消費
では、PostgreSQL管理の面で時間を浪費しているのは何ですか? PostgreSQLの実稼働環境の管理には何千ものタスクが関係していますが、クエリの管理は回答者の30%以上を占める強力なリーダーでした。
スペースの管理は2番目に遠く、PostgreSQLユーザーの15%が最も難しいタスクであり、レプリケーション、アップグレード、モニタリングがそれに続きました。 PostgreSQLユーザーの23%は、パッチ適用、リカバリ、パーティショニング、移行などのタスクで構成される「その他すべて」のカテゴリに分類されました。
PostgreSQLクエリの内訳の管理
PostgreSQLクエリの管理が大幅に進んだことで、どの特定のタスクが時間を費やしているかを詳しく調べました。結果は、セットアップ時の構造化から分析後の最適化まで、クエリ管理のプロセス全体に広がりました。
これをさらに説明するために、クエリ管理プロセスの最初から始めましょう:
クエリ構造
クエリ構造を管理する最小のセグメントは、最も時間のかかる管理タスクとしてクエリを選択したPostgreSQLユーザーからの応答の22%を占めました。
開始する前に、クエリ構造をデータプロパティと一致させるために、クラスタの周囲にPostgreSQLクエリプランを作成する必要があります。これらは、生の行テーブルの戻り値の最下位レベルのスキャンノードと、値などの非テーブル行に及ぶノードで構成されます。
低速クエリ分析
構造を確立したら、次のステップはクエリを分析して、アプリケーションのパフォーマンスに影響を与える可能性のある実行速度の遅いクエリを特定することです。デフォルトでは、「遅いクエリ」は100ミリ秒以上かかるクエリとして定義されています。
クエリの最適化
遅いクエリを特定したので、実際の作業が始まります。PostgreSQLクエリを最適化します。 Postgresのパフォーマンス調整は厄介な作業になる可能性がありますが、適切な識別と分析を行うことで、ボトルネックに焦点を当て、必要なクエリの変更を行い、実行を改善するために必要な場所にインデックスを追加できます。これは、PostgreSQLのパフォーマンスチューニングクエリに関する優れた記事です。
最新のPostgreSQLトレンド:最も時間のかかるタスクとTrackClickの重要な指標をツイートする
PostgreSQLのパフォーマンスを追跡するための最も重要なメトリック
最も時間のかかるPostgreSQL管理タスクを特定したので、PostgreSQLユーザーがパフォーマンスを最適化するために追跡する重要な指標を詳しく見ていきましょう。
最も重要なPostgreSQLメトリックの結果は、管理タスクよりも大幅に多く、その結果、反復統計、CPUとRAMの使用量、1秒あたりのトランザクション数(TPS)が4方向に結びついています。 、および遅いクエリ:
レプリケーション統計
PostgreSQLのレプリケーションステータスを監視することは、レプリケーションが適切に実行され、本番環境のデプロイメントの可用性が高いままであることを確認するための重要なタスクです。レプリケーションプロセスは、アプリケーションのニーズに最適になるようにカスタマイズする必要があります。継続的なエンドポイントモニタリングは、データが安全でリカバリの準備ができていることを確認するための最良の方法です。
スタンバイサーバーとプライマリサーバーの両方で指標を追跡することが重要です。スタンバイサーバーは、着信レプリケーションとリカバリステータスを監視する必要があり、プライマリサーバーは、発信レプリケーションとレプリケーションスロットを監視する必要があります。 PostgreSQLストリーミングレプリケーションを使用している場合、レプリケーションスロットは必ずしも必要ではありません。ストリーミングレプリケーションは、スタンバイサーバーでの即時のデータ可用性を保証し、低TPSサーバーに最適です。
CPUとRAMの使用量
CPUとRAM(メモリ)の使用状況を追跡することは、PostgreSQLサーバーの状態を確認するために監視する重要な指標です。 CPU使用率が高すぎると、アプリケーションの速度が低下し、ユーザーが苦しむことになります。多くの場合、クエリの最適化が不十分であるか、クエリの並列処理が高いことが原因です。 RAMを監視することは、十分なディスク容量があることを確認し、RAMが何に使用されているかを正確に理解するために非常に重要です。メモリの約25%をshared_buffersに割り当てることをお勧めします。また、PostgreSQLのデフォルトのワーキングメモリバッファサイズは4MBですが、これは多くの場合小さすぎて実行時間が長くなります。
1秒あたりのトランザクション数
1秒あたりのトランザクション数を監視することで、システムの負荷と現在のスループットを判断できます。このメトリックを分析することにより、必要なスループットを達成するためにそれに応じてシステムをスケーリングすることを決定できます。構成設定またはシステムリソースの変更がスループットにどのように影響するかを判断することもできます。
低速クエリ
非効率的なクエリは、システムが適切なリソースで構成されている場合でも、PostgreSQLのパフォーマンスを低下させる可能性があります。これらの非効率的なクエリを分析して修正することは、常に良い習慣です。 PostgreSQLはlog_min_duration_statementと呼ばれるパラメータを提供します 。これが設定されている場合、ステートメントが少なくとも指定されたミリ秒数の間実行された場合、完了した各ステートメントの期間がログに記録されます。遅いクエリが取得されたら、EXPLAINANALYZEを実行して実行プランを理解できます。これにより、問題を追跡し、それに応じてクエリを最適化できます。したがって、遅いクエリを定期的に監視することで、パフォーマンスの低下を回避できます。
来週のPostgresConfシリコンバレー2018イベントで私たちを見つけてください。ここでは、PostgreSQL管理スペースのトレンドについてより多くの洞察を明らかにしたいと考えています。ご質問やご意見がございましたら、コメントまたはTwitter(@scalegridio)でお気軽にお知らせください。