在本文的第一部分中,我們學習如何提高應用程式的效能,將Tomcat 替換為Undertow,即高效能Web 伺服器,除了啟用和設定資料壓縮之外,還可以減少透過網路傳輸的HTTP 回應的大小。
現在,我們將討論如何在持久化部分提高Spring Boot 應用程式的效能,但首先我們需要了解什麼是JPA、Hibernate 和Hikari.
JPA 或Java Persistence API,後來更名為Jakarta Persistence,是一個Java 語言標準,描述了一個通用的資料持久化框架的介面。
JPA 規範 在內部定義物件關係映射,而不是依賴於特定於供應商的映射實作。
Hibernate 是ORM 框架之一,它具體實現了JPA 規範,換句話說,如果此規範描述了需要persist、remove、update 和fetch data 方法,那麼誰會實際上建構這些行為的是Hibernate,以及EclipseLink,這是另一個ORM >
光Hikari是一個連接池框架,它負責管理與資料庫的連接,保持它們打開以便可以重用,即,它是用於未來請求的連接快取,可以更快地存取資料庫並減少要建立的新連線的數量。
設定 Hikari、JPA 和 Hibernate使用application.yml:
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.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
光
連接池傳回的每個連線都會停用 自動提交。
池的連接的時間(以毫秒為單位)。最好設定一個較短的超時以快速失敗並傳回錯誤訊息,而不是讓客戶端無限期地等待。
池的最大大小,包括空閒和使用中的連接,確定資料庫的最大活動連接數。如果池達到此限制且沒有空閒連接,則對 getConnection() 的呼叫將在失敗之前阻塞最多 connectionTimeout 毫秒。
spring.datasource.hikari.pool-name:連接pool 的使用者定義名稱,主要出現在登錄管理主控台和JMX 中以識別池 及其設定。
spring.datasource.jpa.open-in-view:當啟用OSIV(在視圖中開啟會話)時,在整個請求過程中都會維護會話,即使沒有@Transactional註釋。這可能會導致效能問題,例如缺乏應用程式回應,因為會話會保持與資料庫的連線直到請求結束。
spring.datasource.jpa.show-sql:顯示應用程式中正在執行的 SQL 日誌。我們通常在開發中啟用它,但在生產中會停用它。
spring.datasource.jpa.hibernate.ddl-auto:設定 Hibernate 與資料庫 schema 相關的行為。它可以具有以下值:
spring.jpa.properties.hibernate.generate_statistics:用於收集有關 Hibernate 的詳細信息,例如查詢執行時間、執行的查詢數量和其他指標。
spring.jpa.properties.hibernate.connection.provider_disables_autocommit:通知Hibernate我們已停用Hibernate我們已停用Hibernate我們已停用提供者的提交(PostgreSQL、MySQL等)。這會影響效能,因為 Hibernate 需要從
池是否啟用。 .,對於他所做的每筆交易。 至此,我們結束了文章的第二部分。並非所有設定都與性能有關,但真正影響的是Hikari 設置,例如自動提交 和池大小 , JPA 和Hibernate 的那些,如OSIV(在視圖中開啟會話OSIV
(在視圖中開啟會話)並通知您我們已停用來自提供者的自動提交
。在下一部分中,我們將討論異常以及如何配置它們,以節省
以上是提高 Spring Boot 應用程式的效能 - 第二部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!