Spring Data JPAストリームを監視する方法
php エディター Youzi は、Spring Data JPA フローの監視に関する Java の質問と回答を提供します。開発中、データ フローをリアルタイムで監視することは、システム パフォーマンスの最適化とトラブルシューティングにとって重要です。この記事では、Spring Data JPA フローを監視する方法を紹介します。これにより、データ処理プロセスをより深く理解し、問題を適時に検出し、それに応じて対処できるようになります。 Spring Data JPA フローを効果的に監視し、システムの安定性とパフォーマンスを向上させる方法について説明します。
質問内容
このブログに書かれている通りにSpring Data jpaストリーミングを利用しようとしています。ただし、プロセスや進行状況をログで監視することはできません。プロセスがデータをバッチで抽出しようとすると、ログに複数の SQL クエリが出力されるはずですか?そうでない場合、すべての行が一度にロードされていないことをどのように確認すればよいでしょうか?
このブログやこのブログのような他のブログでは、mysql の hint_fetch_size
を integer.min_value
に設定する必要があると提案されており、これが解決策になるかもしれないと思いましたが、これにより次の例外がスローされます:
2024-01-29 14:40:20.843 警告 78247 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.sqlExceptionhelper: sql エラー: 0、sqlstate: s1000 2024-01-29 14:40:20.843 エラー 78247 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.sqlExceptionhelper: ストリーミング結果セット com.mysql.cj.protocol.a.result.resultsetrowsstreaming@ 4ca63fa5はまだ活動中です。ストリーミング結果セットが開いていて、特定の接続で使用されている間は、ステートメントは発行されません。さらにクエリを試行する前に、アクティブなストリーミング結果セットに対して .close() を呼び出したことを確認してください。 終了時間: 48 org.springframework.orm.jpa.jpasystemException: 結果セットを抽出できません。ネストされた例外は org.hibernate.Exception.genericjdbcException: 結果セットを抽出できません org.springframework.orm.jpa.vendor.hibernatejpadialect.converthibernateaccessException(hibernatejpadialect.java:331) で
これは私のリポジトリ コードです:
リーリーストリーミングのパフォーマンスを自分で確実に監視できないため、上記が Spring Data jpa でストリーム クエリを使用する正しい方法であるかどうかを保証したいと思いますか?
更新
上記の例外は、同じ呼び出しメソッド内で findallstream メソッドを繰り返し呼び出したために発生します。そのうちの 1 つを削除すると、例外が修正されました。
回避策
データがバッチで取得されているかどうかを示すログ構成が見つかりません。しかし、ローカルでパフォーマンスをテストする方法を見つけました。
ストリーミング機能をテストするには、数百万のレコードを含むデータベースにアクセスする必要があります。 docker イメージ https://www.php.cn/link/7092d5eb1bbca1a22bdc69ba3f517e68 を使用して mysql 従業員データを使用します
Docker イメージをセットアップした後、mysql ワークベンチをサーバーに接続する際に問題が発生しました。 Docker イメージは、デフォルトでは ssl 接続を受け入れるように構成されていないようです。接続を確立するには、use ssl
フラグを無効にする必要がありました。この設定は、mysql ワークベンチの [ssl] タブに表示されます。
アプリケーションの接続文字列も次のように構成する必要があります:
リーリー従業員データベース内のデータは、salaries
という名前のテーブルで構成されており、このテーブルには約 280 万行があります。
テストのために、リポジトリ クラスに次のメソッドと、これらのメソッドを呼び出すための単純なコントローラーを持つ小さな Spring Data jpa アプリケーションを作成しました。 リーリー
次に、読み取ったデータを json オブジェクトに変換し、複数のスレッドを使用してファイルに書き戻すための小さなコードを書きました。これは、実際のケースでの処理をシミュレートするためです。これが私が観察したことです。
- リスト方式を使用すると、メモリ使用量が大幅に増加します。最初のクエリにほとんどの時間がかかりましたが、すべてのデータが読み込まれると、実際のデータ処理はすぐに完了しました。
- ストリーム方式を使用する場合、メモリ使用量への影響はほとんど目立ちません。ただし、全体として、完了処理部分のパフォーマンスはリスト方式と同等か、それよりも劣ります。
stream 戻り値の型は、メモリ不足のリスクがある場合、つまり out メモリ例外が発生する場合にのみ使用する必要があるという結論に至りました
。それ以外の場合、アプリケーションがすでに十分な規模のサーバーで実行されている場合、メモリ使用量に対する全体的な影響はほとんど目立たず、プロセスがすぐに完了した場合に一時的なものにすぎません。
Intellij プロファイラーからのメモリ使用量統計
left ->リストメソッド実行時
右 -> ストリームメソッド実行時
以上がSpring Data JPAストリームを監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Linux システムでのログ監視に PHP スクリプトを使用する方法 Linux システムの普及に伴い、システム監視とログ分析の重要性が増しています。その中でも、ログ監視には PHP スクリプトを使用する方法が一般的です。この記事では、PHP スクリプトを使用して簡単なログ監視を実装する方法を紹介し、具体的なコード例を示します。 1. PHP スクリプト ファイルを作成します。まず、Linux システム上に "log_monitor.php" という名前のファイルを作成します。このファイルは、指定された環境を監視するために使用されます。

Linux ツールを使用してログの監視とアラートを実装するにはどうすればよいですか?日々のサーバー管理や運用保守プロセスにおいて、ログのリアルタイム監視と分析は非常に重要です。 Linux システムには、ログ監視およびアラーム機能の実装に役立つ強力なツールがいくつか用意されています。この記事では、Linux ツールを使用してログを監視および警告する方法を説明し、いくつかのコード例を示します。リアルタイムでログを表示するには、tail コマンドを使用します。 tail コマンドを使用すると、ログ ファイルの更新された内容をリアルタイムで表示できます。 tail コマンドを使用すると、次のことができます。

Linux サーバーでシステム ログが見つからない問題を解決する方法 概要: Linux サーバーでは、システム ログは監視とトラブルシューティングに非常に重要です。ただし、システム ログが失われたり、正しく記録されなかったりして、トラブルシューティングが発生する場合があります。この記事では、Linux サーバーでのシステム ログ損失の問題を解決するための解決策をいくつか紹介します。はじめに: Linux サーバーでは、システム ログは非常に重要なリソースであり、実行ステータス、エラー情報、警告情報、およびログを記録するために使用されます。

ソース コードのコンパイルと PHPP DOMySQL のインストール: 実践的なヒントと注意事項. PHP は広く使用されているサーバーサイド スクリプト言語であり、MySQL は人気のあるオープン ソース リレーショナル データベース管理システムです。この 2 つの組み合わせにより、Web サイト開発を強力にサポートできます。実際の開発では、多くの場合、データの保存と操作を実現するために、PHPPDO 拡張機能を使用して MySQL データベースに接続する必要があります。この記事では、ソース コードのコンパイルを通じて PHP をインストールし、MySQL に接続するように PDO を設定し、提供する方法を紹介します。

Golang は効率的で簡潔なプログラミング言語として、ファイル処理において優れたパフォーマンスを発揮します。その中でも、ファイル監視は非常に一般的で便利な機能であり、ファイル システムの変更をリアルタイムで監視し、対応する処理をタイムリーに実行するのに役立ちます。この記事では、Golang がファイル監視機能を実装する方法を詳しく説明し、読者がこの機能をよりよく理解して適用できるように、具体的なコード例を示します。ファイル監視機能が必要な理由は何ですか?最新のソフトウェア開発プロセスでは、ファイル操作は非常に重要なリンクです。特に

インターネットとビッグデータ時代の到来に伴い、MySQL データベースは、一般的に使用されるオープンソース データベース管理システムとして、ますます多くの企業や組織で採用されています。ただし、実際のアプリケーションプロセスでは、システムクラッシュ、クエリタイムアウト、デッドロックなど、MySQL データベースでさまざまなエラーや例外が発生する可能性があります。これらの異常はシステムの安定性とデータの整合性に重大な影響を与えるため、MySQL のエラーと異常を迅速に検出して分析することは非常に重要なタスクです。ログ監視は MySQL の重要な機能です

Oracle サービス損失の問題の解決 Oracle データベースは、多くの企業や組織で推奨されるリレーショナル データベース管理システムですが、実際の使用ではデータベース サービス損失が発生し、システムの正常な動作に影響を与えることがあります。この記事では、Oracle サービスの損失の問題を解決する方法を紹介し、読者がこの一般的なデータベース障害に適切に対処できるようにする具体的なコード例を示します。 1. Oracle サービスのステータスを確認する Oracle サービスの損失の問題を解決する前に、まずサービスの現在のステータスを確認する必要があります。

PHP フラッシュ セール システムのログ監視とトラブルシューティングを実行する方法 はじめに: 電子商取引業界の急速な発展に伴い、フラッシュ セール活動は消費者を引き付ける重要な方法となっています。フラッシュセール活動では、システムの安定性と高い同時処理能力が非常に重要です。フラッシュセールシステムが正常に動作するためには、ログの監視とトラブルシューティングが必要です。この記事では、フラッシュ セール システムのログ監視とトラブルシューティングに PHP を使用する方法を紹介し、いくつかのコード例を示します。 1. ログ監視のログレベルの設定 フラッシュセールシステムの設定ファイルで、ログレベルを設定できます。