長時間実行しているplpgsqlストアド・プロシージャのパフォーマンスを向上させようとしていますが、プロファイリング・ツールがあれば、それがあれば何があるかわかりません。このような手順をプロファイリングする方法を提案する人はいますか?plpgsqlプロシージャのプロファイル方法
6
A
答えて
5
clock_timestamp()を含む手順から一部のnoticesを上げて、データベースの所要時間を確認します。そして、手順をできるだけシンプルにする。
例を教えてください。
1
まず、logging of all statementsをPostgresログファイルに入れることができます。ログには、各ステートメントのランタイムが含まれます。これにより、最も遅いクエリを特定し、最適化しようとします。
フランクのポストにあなたのコメントを読んで、私はループがあなたの問題だと思います。ルーピングを取り除き、すべてを単一のクエリで実行してください。多くの行を読み取る文のほうが、ほんの数行しか読んでいない文よりも効率的です。
1
pg_stat_statements拡張子(http://www.postgresql.org/docs/9.2/static/pgstatstatements.html)を使用してください。 すべてのステートメント(plpgsqlプロシージャ内のサブステートメントを含む)のコール番号と合計呼び出し時間を表示できます。
2
現在、この質問へのより良い答えを探している、そしてこのツールに出くわしています: http://www.openscg.com/2015/02/postgresql-plpgsql-profiler/ でホストされている: https://bitbucket.org/openscg/plprofiler
それはあなたの合計時間を含めて、探しているものをあなたに与えると主張関数の各行に費やされます。我々はまだそれを調査していないが、著者の主張に基づいて、我々は楽観的である。
関連する問題
- 1. トリガーエラー[plpgsql]
- 2. Silverlightアプリケーションのプロファイル方法は?
- 3. .netガベージコレクタのプロファイル方法?
- 4. Windowsでのプロファイル方法は?
- 5. TensorFlowネットワークのプロファイル方法?
- 6. Swiftフレームワークのプロファイル方法
- 7. QtScriptコードのプロファイル方法は?
- 8. plpgsqlで変数をフィールド名として使用する方法
- 9. Ruby on railからplpgsql関数を呼び出す方法は?
- 10. plpgsqlでレコード型変数を使用する方法は?
- 11. powershellでのプロファイル(タイミング)の方法
- 12. ウェブアプリケーションでのプロファイルの使用方法
- 13. 関数内のPLPGSQL配列
- 14. プロファイルの作成方法Windows explorer.exe
- 15. Fortran、プロシージャを複数コピーする方法
- 16. プロシージャ内でOracleテーブルを返す方法
- 17. ダーツアプリをプロファイルする方法は?
- 18. RemoteWebDriverでFirefoxプロファイルを示す方法
- 19. ストアドプロシージャをプロファイルする方法DB2
- 20. OpenMPボトルネックをプロファイルする方法
- 21. etcにbashプロファイルを含める方法
- 22. plpgsqlが機能は、テーブル(..)
- 23. asp.netのプロシージャ(パッケージ)の複数カーソル出力値の使用方法
- 24. アンドロイドアプリケーションのデバイスからのプロファイルの使用方法は?
- 25. Key Downイベント(VB.NET)から元のSubプロシージャに戻る方法
- 26. Oracleでプロシージャの定義を印刷する方法は?
- 27. SQLSERVER - テーブルID生成のプロシージャを定義する方法は?
- 28. Oracle Apexのストアド・プロシージャに新しいPKを渡す方法
- 29. 拡張プロシージャの値を補間する方法
- 30. SQLプロシージャとCLRプロシージャの違いは?
私は、プロシージャの変更を必要としないメソッドを望んでいましたが、それはおそらく何もないより優れています。 http://www.depesz.com/index.php/2010/03/18/profiling-stored-proceduresfunctions/にも同様の手順が記載されていますが、使用可能なデータを取得するのは非常に複雑です。このプロシージャは、Solrデータインポートハンドラクエリ用のドキュメントを作成するために使用されるネストされたループのセットです。 – Aneurysm9
それは素晴らしい方法ではありませんが、それは唯一の方法です。そのため、短く簡単なことを保つことが重要です。ショートプロシージャは、他のコードと同様に、デバッグやプロファイルを行うのがずっと簡単です。 –
残念ながら、この手順はほぼ可能です。いくつかのデータを選択し、nを反復し、より多くのデータを選択し、ネストされた1:nの関係を反復してから、完全な行が準備完了したら内部ループからRETURN NEXTを実行することによって、 SELECTやFORより複雑なものは、すでに他のプロシージャに入れられています。 – Aneurysm9