この記事の最初の部分では、Tomcat を Undertow に置き換えて、アプリケーションのパフォーマンスを向上させる方法を学びました。データ圧縮を有効にして構成することに加えて、ネットワーク上を移動する HTTP 応答のサイズを削減するための高性能 Web サーバー。
ここで、永続化部分で Spring Boot アプリケーションのパフォーマンスを向上させる方法について説明しますが、その前に、JPA、Hibernate、および Hikari が何であるかを理解する必要があります。 ].
JPA または Java Persistence API は、後に Jakarta Persistence に名前変更されましたが、共通のデータ永続性フレームワークのインターフェース
JPA仕様は、ベンダー固有のマッピング実装に依存するのではなく、内部的にオブジェクト リレーショナル マッピングを定義します。
休止状態Hibernate は、JPA 仕様の具体的な実装を行う ORM フレームワークの 1 つです。つまり、この仕様で、persist、remove、update、および fetch data にメソッドが必要であると記述されている場合、誰が行うのでしょう。これらの動作を実際に構築するのは、Hibernate と EclipseLink であり、これは別の ORM &&&]. ヒカリ
Hikari は 接続プーリング フレームワークで、データベースへの接続を管理し、再利用できるように接続を開いた状態に保ちます。これは将来のリクエストに備えた接続の キャッシュ であり、データベースへのアクセスが高速になり、作成される新しい接続の数が減ります。 ヒカリ、JPA、および休止状態の構成
application.yml の使用:
春:
ヒカリ:
自動コミット: false
接続タイムアウト: 250
最大寿命: 600000
最大プールサイズ: 20
最小アイドル: 10
プール名: マスター
jpa:
オープンインビュー: false
show-sql: true
冬眠状態:
ddl-auto: なし
プロパティ:
hibernate.connection.provider_disables_autocommit: true
hibernate.generate_statistics: true
spring: hikari: auto-commit: false connection-timeout: 250 max-lifetime: 600000 maximum-pool-size: 20 minimum-idle: 10 pool-name: master jpa: open-in-view: false show-sql: true hibernate: ddl-auto: none properties: hibernate.connection.provider_disables_autocommit: true hibernate.generate_statistics: true
spring.datasource.hikari.auto-commit=false
spring.datasource.hikari.connection-timeout=50
spring.datasource.hikari.max-lifetime=600000
spring.datasource.hikari.最大プールサイズ=20
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.プール名=マスター
spring.datasource.jpa.open-in-view=false
spring.datasource.jpa.show-sql=true
spring.datasource.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.generate_statistics=true
spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true
spring.datasource.hikari.auto-commit=false spring.datasource.hikari.connection-timeout=50 spring.datasource.hikari.max-lifetime=600000 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.pool-name=master spring.datasource.jpa.open-in-view=false spring.datasource.jpa.show-sql=true spring.datasource.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.generate_statistics=true spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true
ヒカリ
によって返されるすべての接続は、auto-commit が無効になります。 ]
からの接続を待機する時間 (ミリ秒)。クライアントを無期限に待機させるよりも、すぐに失敗してエラー メッセージを返すために短いタイムアウトを設定することをお勧めします。
の最大サイズ。アイドル状態と使用中の接続を含み、データベースへのアクティブな接続の最大数を決定します。プールがこの制限に達し、アイドル状態の接続がない場合、getConnection() の呼び出しは失敗するまで最大 connectionTimeout ミリ秒間ブロックされます。
多くの人は、50、70、さらには 100 に設定すると優れたパフォーマンスが得られると考えているため、適切な値を見つけることが重要です。理想は、を識別するためにレジストリ管理コンソールと JMX に表示されます。プール とその構成。
JPAOpen Session In View) が有効な場合、リクエスト全体にわたってセッションが維持されます。 @Transactional アノテーションなし。セッションはリクエストが終了するまでデータベースへの接続を維持するため、アプリケーションの応答がなくなるなど、パフォーマンスの問題が発生する可能性があります。
spring.datasource.jpa.show-sql: アプリケーションで実行されている SQL ログを表示します。通常、開発時は有効のままにしておきますが、本番環境では無効にします。spring.datasource.jpa.hibernate.ddl-auto: データベースの
Hibernate の動作を構成します。次の値を指定できます: none: 何もしません。私たちは銀行のスキーマを手動で管理します。
プロバイダーの 自動コミット を無効にしたことを に通知します。 (PostgreSQL、MySQLなど)。 Hibernate は auto-commit が有効かどうかを知るために pool から接続を取得する必要があるため、これはパフォーマンスに影響します。 、彼が行うすべての取引に対して。
これで記事の後編を終わります。存在するすべての設定がパフォーマンスに関するものではありませんが、実際に影響を与えるのは、プール サイズなどのHikari設定です。 、JPA および Hibernate のもの (OSIV など) (ビューでセッションを開く) プロバイダの自動コミットを無効にしたことをお知らせします。 次のパートでは、例外と、JVM
(Java 仮想マシン) からリソースを節約するための例外の設定方法について説明します。 参考文献:
https://en.wikipedia.org/wiki/Jakarta_Persistence
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3