長時間実行している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プロシージャ:問合せにauto_incrementフィールドを追加する方法
- 2. プロシージャ名の取得方法
- 3. Swiftフレームワークのプロファイル方法
- 4. Silverlightアプリケーションのプロファイル方法は?
- 5. QtScriptコードのプロファイル方法は?
- 6. .netガベージコレクタのプロファイル方法?
- 7. djangoチャンネルのプロファイル方法は?
- 8. TensorFlowネットワークのプロファイル方法?
- 9. Windowsでのプロファイル方法は?
- 10. トリガーエラー[plpgsql]
- 11. - plpgsqlが
- 12. plpgsqlが
- 13. plpgsqlのコードをplpythonu funtion(PostgreSQL)で書く方法
- 14. SPI対PLPGSQLのパフォーマンス
- 15. PostgreSQL:mkdir with plpgsql
- 16. Ruby on railからplpgsql関数を呼び出す方法は?
- 17. plpgsqlで変数をフィールド名として使用する方法
- 18. plpgsqlでレコード型変数を使用する方法は?
- 19. ウェブアプリケーションでのプロファイルの使用方法
- 20. powershellでのプロファイル(タイミング)の方法
- 21. ゴルーチンの数をプロファイルする方法
- 22. プロファイルの作成方法Windows explorer.exe
- 23. 竜巻のコールバックをプロファイルする方法
- 24. PLPGSQLカーソルループ動的SQL
- 25. 関数内のPLPGSQL配列
- 26. PERFORM CTEクエリのPostgres plpgsql
- 27. プロシージャ内でOracleテーブルを返す方法
- 28. postgresqlプロシージャを最適化する方法
- 29. ETLプロシージャをロールバックする方法は?
- 30. Fortran、プロシージャを複数コピーする方法
私は、プロシージャの変更を必要としないメソッドを望んでいましたが、それはおそらく何もないより優れています。 http://www.depesz.com/index.php/2010/03/18/profiling-stored-proceduresfunctions/にも同様の手順が記載されていますが、使用可能なデータを取得するのは非常に複雑です。このプロシージャは、Solrデータインポートハンドラクエリ用のドキュメントを作成するために使用されるネストされたループのセットです。 – Aneurysm9
それは素晴らしい方法ではありませんが、それは唯一の方法です。そのため、短く簡単なことを保つことが重要です。ショートプロシージャは、他のコードと同様に、デバッグやプロファイルを行うのがずっと簡単です。 –
残念ながら、この手順はほぼ可能です。いくつかのデータを選択し、nを反復し、より多くのデータを選択し、ネストされた1:nの関係を反復してから、完全な行が準備完了したら内部ループからRETURN NEXTを実行することによって、 SELECTやFORより複雑なものは、すでに他のプロシージャに入れられています。 – Aneurysm9