Mybatis緩存+Tomcat架構

Mybatis中有一級緩存和二級緩存,默認情況下一級緩存是開啓的,而且是不能關閉的。一級緩存
是指 SqlSession 級別的緩存,當在同一個 SqlSession 中進行相同的 SQL 語句查詢時,第二次以
後的查詢不會從數據庫查詢,而是直接從緩存中獲取,一級緩存最多緩存 1024 條 SQL。二級緩存
是指可以跨 SqlSession 的緩存。是 mapper 級別的緩存,對於 mapper 級別的緩存不同的
sqlsession 是可以共享的。

Mybatis  的一級緩存原理 ( sqlsession 級別 )
第一次發出一個查詢 sql,sql 查詢結果寫入 sqlsession 的一級緩存中,緩存使用的數據結構是一
個 map。
key:MapperID+offset+limit+Sql+所有的入參
value:用戶信息
同一個 sqlsession 再次發出相同的 sql,就從緩存中取出數據。如果兩次中間出現 commit 操作
(修改、添加、刪除),本 sqlsession 中的一級緩存區域全部清空,下次再去緩存中查詢不到所
以要從數據庫查詢,從數據庫查詢到再寫入緩存。

 

二級緩存原理 ( mapper 基本 )
二級緩存的範圍是 mapper 級別(mapper同一個命名空間),mapper 以命名空間爲單位創建緩
存數據結構,結構是 map。mybatis 的二級緩存是通過 CacheExecutor 實現的。CacheExecutor

其實是 Executor 的代理對象。所有的查詢操作,在 CacheExecutor 中都會先匹配緩存中是否存
在,不存在則查詢數據庫。
key:MapperID+offset+limit+Sql+所有的入參

具體使用需要配置:
1.  Mybatis 全局配置中啓用二級緩存配置
2.  在對應的 Mapper.xml 中配置 cache 節點
3.  在對應的 select 查詢節點中添加 useCache=true

 

Tomcat架構


    tomat + spring mvc 是目前比較流行java微服務體系架構,包括現在的spring boot以及基於spring boot的進一步應用化封裝的spring cloud框架,底層都是基於tomcat + spring mvc的框架。因此學習tomcat + spring mvc的基礎原理,對於解決使用中出現的問題會有比較大的幫助。
 

tomcat內部的基本容器構成
    所謂容器(Container),並不是常說的用來存儲數據結構的類,比如Collection、Set、List等,而是專指tomcat和spring mvc中用來對功能和結構進行分層抽象的概念(類或者接口)。tomcat的基本容器結構如圖所示:

    tomcat最頂層的容器Server,代表整個tomcat服務器,一個Server可以包含一個或者多個Service。一個Service包含一個或者多個Connetor,但是隻能包含一個Container。Connector主要用來處理連接相關的事,比如網絡套接字Socket的監聽、請求request的接收和應答response的發送。這裏的Container是一個抽象的概念,一個接口。其實是指一個Service只能包含一個Engine–Engine繼承自Container。Engine容器結構如圖所示:

其中Engine、Host、Context和Wrapper都繼承自Container。
    Engine用來管理多個站點,即可以有多個Host。Host代表一個站點,其實是一個虛擬主機。Context,上下文,代表一套應用程序,一套應用程序總是有相同的應用上下文配置。最後是Wrapper,每個wrapper只有一個Servlet,而每個Servlet即對應每個開發的spring mvc服務程序。所以我們開發的spring mvc服務程序都是通過Wrapper加載到tomcat中。Context和Wrapper是動態添加的,我們在tomcat的指定目錄下每添加一個war包,tomcat加載war包時,就可以添加Context和Servlet。
 

大佬文章:

https://blog.csdn.net/u013212754/article/details/103203836

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章