在SQL Server中存儲(chǔ)方式主要分為2大類 緩沖和池。都是用來臨時(shí)存放數(shù)據(jù)的,到底有什么不同。一直很惱人。
有幸看到一位大牛的博客,截取了其中講述cache 和 pool的不同點(diǎn)。
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 可以存放不同的數(shù)據(jù)類型的數(shù)據(jù),并且備份存儲(chǔ)實(shí)體都有一個(gè)花費(fèi)值(cost)。?和狀態(tài)值,可見度,還有一個(gè)生命周期,使用一些LRU算法來維護(hù)。每個(gè)實(shí)體都可以在同時(shí)被多個(gè)客戶端訪問。如SQL Server 存儲(chǔ)Cache 是基于cache的,一個(gè)計(jì)劃的生命周期,花費(fèi)(cost)都是又SQLOS 的cache機(jī)制控制的。每個(gè)計(jì)劃都可以被多個(gè)批處理(batches)同時(shí)訪問。
?
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 用來存放相同的數(shù)據(jù)類型。在多數(shù)情況下存儲(chǔ)的數(shù)據(jù)沒有狀態(tài)和花費(fèi)(cost)。Pool可以控制存儲(chǔ)實(shí)體的生命周期和可見度。一旦存儲(chǔ)實(shí)體被讀取,就從pool上面被刪除了,除非再存入。pool中的實(shí)體同一時(shí)間只能又一個(gè)用戶使用。如:network buffers是一個(gè)pool,沒有狀態(tài),沒有花費(fèi),所有的buffers大小都是相同的。在SQL Server中有一個(gè) buffer pool,它是cache。但是卻沒有使用SQLOS的cache機(jī)制。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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