MyBatis性能優化


MyBatis緩存機制原理

MyBatis緩存機制原理是將第一次從數據庫SQL查詢的結果數據保存到緩存(內存中),當下一次SQL查詢和第一次相同,如果緩存中有數據則直接獲取,而不再從數據庫獲取,從而減少數據庫訪問頻率,大大提升數據庫性能。


一級緩存(Sqlsession級別)

  • 一級緩存是Sqlsession級別的緩存,不同的Sqlsession對象之間的緩存數據時互不影響的。
  • 當Sqlsession對象釋放后,該Sqlsession對象中的一級緩存也就不存在了。

二級緩存(Mapper級別)

  • 二級緩存是Mapper級別的緩存。多個Sqlsession對象SQL語句查詢數據庫結果會存放二級緩存區域,而多個Sqlsession對象可以共用二級緩存。
  • 二級緩存是多個Sqlsession對象共用的。其作用范圍是Mapper的同一個namespace,不同的Sqlsession對象兩次執行相同namespace下的SQL語句,第一次執行會將數據庫中查詢結果數據存儲到二級緩存中,第二次會從二級緩存中獲取數據,而不再從數據庫中獲取,從而提高效率。

MyBatis 緩存使用注意事項

  • 只能在只有單表操作的表上使用緩存

  • 查詢操作遠大於更新,插入和修改查找操作的情況下使用緩存

  • 避免使用二級緩存(多表操作)

    多表查詢一定不能使用二級緩存,會導致查詢結果不正確,出現臟數據。



MyBatis延時加載

延時加載又叫懶加載(也叫按需加載),也就是說先加載主表信息,需要的時候,再去加載從表信息。代碼中有查詢語句,當執行到查詢語句時,並不是馬上去數據庫中查詢,而是根據設置的延時策略將查詢向后推遲。


延時加載的作用

延時加載只有在用到需要的數據才會真正執行查詢操作,這樣可以大大減輕數據庫服務器的訪問壓力,提高數據庫的性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM