私は1分から14時間までのさまざまな時間帯に異なる実行時間の範囲で実行される最適化されていないクエリを持っています。 CPU使用率、メモリ、およびデータベース上の他の同時負荷は同じままですが、そのような変動をもたらす可能性はありますか?真夜中に自動真空プロセスが実行され、午前中にパフォーマンスが大幅に向上することに注意してください。私の主張は、テーブルの断片化、デッドタプル、および多くの読み込みのために、同じテーブルの統計が変わり、異なる実行計画が生成されるということです。このアサーションを証明するために、現在実行中のクエリのクエリプランを取得したいと思います。実行前にクエリをEXPLAIN
にすることはできません。postgresqlで実行中のクエリの実行計画を取得するには?
1
A
答えて
1
私はそれを働かせました。 postgresql.confには、ライブラリをプリロードするための2つの設定があります。最初のもの、shared_preload_librariesは、再起動しなければ動作しません。しかし、もう1つのsession_preload_librariesが表示されます。だから、それにこのラインを持っているのpostgresql.confを編集:
session_preload_libraries = 'auto_explain'
その後リロード:
pg_ctl reload (or pg_ctlcluster 9.x main reload etc)
を次にそれをオンにするために、データベースを変更する:その後、
alter database smarlowe set auto_explain.log_min_duration=1;
そして、すべての新しい接続にはauto_explainedプランがあります。
あなたに最も合ったミリ秒の設定に時間を変更します。
関連する問題
- 1. PostgreSQLで現在実行中のクエリのパラメータを取得
- 2. PostgreSQLクエリの実行時間を取得
- 3. PostgreSQLで完全実行クエリを取得
- 4. PostgreSQLクエリ実行時間の取得
- 5. postgresqlデータベースで実行中のクエリのステータスを取得する方法
- 6. MySQlクエリ実行計画
- 7. PostgreSQLで実行されたクエリの詳細を取得
- 8. リクエストで実行されたクエリの合計を取得する
- 9. Gitのファイルに対する実行中の行の合計を取得する
- 10. クエリでMYSQLクエリの実行時間を取得するには
- 11. SMOによるSQL Server実行計画の取得?
- 12. PostgreSQLで更新クエリを実行中にsqlalchemy.exc.DataError
- 13. SSMSからSQL Server 2008で実行計画を実行するクエリ
- 14. 実行計画と実行計画の違い
- 15. 実行計画コストが低いSQLクエリ
- 16. postgresqlでバッチファイル経由でクエリを実行
- 17. Windowsで実行中のアプリケーションを取得するには?
- 18. ファイルを実行中、StackOverflowErrorを取得中
- 19. 実行中のアプリケーションのバッジを取得
- 20. の取得エラー実行中の反応ネイティブ実行IOS
- 21. postgreSQLでクエリ文字列を実行
- 22. クエリの実行中に変更する
- 23. f#実行中の合計
- 24. クエリの独自の実行計画を指定する
- 25. Oracle実行計画
- 26. ROW_NUMBER()実行計画
- 27. 異なるクエリでのストアドプロシージャ実行計画の比較
- 28. SQL Serverの実行計画
- 29. Delphi BDE PostgreSQLクエリの実行(構文エラー)
- 30. 実行中にクエリを停止する
https://www.postgresql.org/docs/current/static/auto-explain.html –
AFAIUでは、これもオプションではないデータベースの再起動が必要になります。さらに、これには、関係するクエリだけでなく、すべての長期実行クエリのクエリプランを生成するオーバーヘッドがあります。 –
1:これは再起動を必要とせず、再ロードは最大でもあります。 2:PostgreSQLは、すべてのクエリのクエリプランを生成しなければなりません(準備ができていなければ、一度だけプランを作成します)。 3:ここで唯一のオーバーヘッドは最小限のクエリプランのログです。 auto_explain.log_min_durationを10000のようにシンプルに設定するだけで10秒間のクエリなどが必要です。 –