SQL Server表駐留記憶體和檢測
LRU-K 演算法跟蹤最後一次對記憶體頁進行 K 引用的時間(ESE 將 K 的預設值設定為 2),並按照所期望的未來行為,使用該統計資訊對頁進行等級排序。基於該統計資訊,可以決定要丟棄哪個記憶體駐留頁,以便為必須讀入記憶體中的最近訪問過的頁騰出空間。因為有關被引用的頁的統計資訊被經常收集,因此 LRU-K 演算法可以實時地適應不斷更改的訪問模式。該演算法相當簡單,因此幾乎不會帶來多少簿記開銷。它使用每個頁的最後兩個引用或更多的引用(通常是最後一個 K 引用,在這裡,K 大於或等於 2)來決定應當丟棄哪個頁。
DBCC PINTABLE 不會導致將表讀入到記憶體中。當表中的頁由普通的 Transact-SQL 語句讀入到快取記憶體中時,這些頁將標記為記憶體駐留頁。當 SQL Server 需要空間以讀入新頁時,不會清空記憶體駐留頁。SQL Server 仍然記錄對頁的更新,並且如有必要,將更新的頁寫回到磁碟。然而,在使用 DBCC UNPINTABLE 語句使該表不駐留之前,SQL Server 在快取記憶體中一直儲存可用頁的複本。
DBCC PINTABLE 最適用於將小的、經常引用的表儲存在記憶體中。將小表的頁一次性讀入到記憶體中,將來對其資料的所有引用都不需要從磁碟讀入。
注意 DBCC PINTABLE 可以提供效能改進,但是使用時務必小心。如果駐留大表,則該表在開始時會使用一大部分快取記憶體,而不為系統中的其它表保留足夠的快取記憶體。如果所駐留的表比快取記憶體大,則該表會填滿整個快取記憶體。sysadmin 固定伺服器角色的某個成員必須關閉而後重新啟動 SQL Server,然後使表不駐留。駐留太多的表和駐留比快取記憶體大的表會產生同樣的問題。
示例:
Declare @db_id int, @tbl_id int
Use test
Set @db_id = DB_ID('test')
Set @tbl_id = Object_ID('test')
DBCC pintable (@db_id, @tbl_id)
可以使用如下的SQL指令來檢測執行情況:
Select ObjectProperty(Object_ID('test'),'TableIsPinned')
如果返回結果為1:則表示該表已經設定為駐留記憶體;0:則表示沒有設定為駐留記憶體。
2、SP_TableOption
sp_tableoption 'test','pintable','TRUE';
Select ObjectProperty(Object_ID('test'),'TableIsPinned')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-668656/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server為什麼這麼耗記憶體SQLServer記憶體
- C/C++程式除錯和記憶體檢測C++除錯記憶體
- iOS檢測記憶體洩漏iOS記憶體
- 簡單VC記憶體檢測記憶體
- linux 設定預留記憶體Linux記憶體
- windows10系統使用自帶記憶體檢測工具檢測記憶體好壞的方法Windows記憶體
- “wrk 壓測 hyperf 常駐記憶體框架居然不如thinkphp8效能”記憶體框架PHP
- 如何在 Linux 下檢測記憶體洩漏Linux記憶體
- C程式記憶體洩露檢測工具——ValgrindC程式記憶體洩露
- optee記憶體管理和頁表建立記憶體
- 記憶體二三事: Xcode 記憶體圖、Instruments 視覺化檢測迴圈引用記憶體XCode視覺化
- 駐點日記之記憶碎片
- SQL Server檢視所有表大小,所佔空間SQLServer
- delphi記憶體表記憶體
- 記憶體表(FDMEMTABLE)記憶體
- 【MEMORY】Oracle記憶體結構資源常用檢視及sqlOracle記憶體SQL
- sql-server檢視SQLServer
- Android記憶體洩漏檢測與修復技巧Android記憶體
- SQL Server 因設定最大記憶體過小導致無法啟動SQLServer記憶體
- MixPHP:基於 Swoole 的常駐記憶體型 PHP 框架PHP記憶體框架
- mysql最大表記憶體MySql記憶體
- 記憶體檢查指令碼記憶體指令碼
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- Linux下基於記憶體分析的Rootkit檢測方法Linux記憶體
- 使用VLD進行記憶體洩漏檢測(release + debug)記憶體
- Python字串駐留的原理探究Python字串
- SQL Server資料檔案增長檢測(三)RFSQLServer
- SQL Server資料檔案增長檢測(一)FMSQLServer
- win10電腦記憶體測試軟體怎麼用_win10記憶體檢測工具的使用方法Win10記憶體
- SQL SERVER巡檢指令碼SQLServer指令碼
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- Java記憶體區域和記憶體模型Java記憶體模型
- 直接記憶體和堆記憶體誰快記憶體
- SQL Server 查詢表註釋和欄位SQLServer
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- php常駐程式記憶體洩露的簡單解決PHP記憶體洩露
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- C++--問題27--如何檢測記憶體洩漏C++記憶體
- GDB檢視記憶體(x 命令)記憶體