1. 程式人生 > >Mysql中一級緩存二級緩存區別

Mysql中一級緩存二級緩存區別

情況 如果 mys 提交 四種 ssi 修改 進行 失效

一級緩存:

  也稱本地緩存,sqlSession級別的緩存。一級緩存是一直開啟的;與數據庫同一次會話期間查詢到的數據會放在本地緩存中。

  如果需要獲取相同的數據,直接從緩存中拿,不會再查數據庫。

  一級緩存失效的四種情況:

      1.sqlSession不同。

      2.sqlSession相同,查詢條件不同。因為緩存條件不同,緩存中還沒有數據。

      3.sqlSession相同,在兩次相同查詢條件中間執行過增刪改操作。(因為中間的增刪改可能對緩存中數據進行修改,所以不能用)

      4.sqlSession相同,手動清空了一級緩存。

二級緩存:全局緩存;基於namespace級別的緩存。一個namespace對應一個二級緩存。

      工作機制:1.一個會話,查詢一條數據,這個數據會被放在當前會話的一級緩存中。

           2,如果會話被關閉了,一級緩存中的數據會被保存帶二級緩存。新的會話查詢信息就會參照二級緩存。

           3.sqlSession ====> Employee====>employee

            sqlSession ====>DepartmentMapper=====>Department

            不同的namespace查出的數據會放在自己對應的緩存中。

           效果:查出的數據首先放在一級緩存中,只有一級緩存被關閉或者提交以後,一級緩存數據才會轉移到二級緩存

Mysql中一級緩存二級緩存區別