在SQL Server中存儲方式主要分為2大類 緩沖和池。都是用來臨時存放數據的,到底有什么不同。一直很惱人。
有幸看到一位大牛的博客,截取了其中講述cache 和 pool的不同點。
Before we jump into further description of stores I would like to explain a difference between meanings of caches and pools. In SQLOS's world, cache is a mechanism to cache heterogeneous type of data with a given cost for each entry. Usually there is a given state associated with an entry. A cache implements lifetime control of an entry, its visibility, and provide some type of LRU policies. Depending on the type of the data cached each entry could be used by multiple clients at the same time. For example SQL Server procedure cache is a??cache in SQLOS' s terms. A plan's lifetime, visibility and cost is controlled by SQLOS's cache mechanism. Each plan can be used by multiple batches at the same time.
?
Cache 可以存放不同的數據類型的數據,并且備份存儲實體都有一個花費值(cost)。?和狀態值,可見度,還有一個生命周期,使用一些LRU算法來維護。每個實體都可以在同時被多個客戶端訪問。如SQL Server 存儲Cache 是基于cache的,一個計劃的生命周期,花費(cost)都是又SQLOS 的cache機制控制的。每個計劃都可以被多個批處理(batches)同時訪問。
?
In its turn, pool, in SQLOS's terms, is a mechanism for caching homogeneous data. In most cases cached data doesn't have neither state nor cost associated with it. A pool has limited control over lifetime of the entry and its visibility.??Once an entry is taken from the pool it is actually removed from it and pool no longer has any control over the entry until the entry is pushed back to the pool. Only one client can use an entry at the time. An example of a pool is a pool of network buffers: no state, no cost , all??buffers of the same size. Keep in mind SQL Server's Buffer Pool is a cache in SQLOS terms. Currently it doesn't use any of SQLOS's caching mechanism
?
Pool 用來存放相同的數據類型。在多數情況下存儲的數據沒有狀態和花費(cost)。Pool可以控制存儲實體的生命周期和可見度。一旦存儲實體被讀取,就從pool上面被刪除了,除非再存入。pool中的實體同一時間只能又一個用戶使用。如:network buffers是一個pool,沒有狀態,沒有花費,所有的buffers大小都是相同的。在SQL Server中有一個 buffer pool,它是cache。但是卻沒有使用SQLOS的cache機制。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
