熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

淺析Sybase SQL Server內存分配

2013-11-15 14:37:26  來源: SQL Server 

  我們知道在isql中可以用sp_configurememory去看SQLServer目前使用的內存這個數字單位為page每一page為k當memory的值被修改後重新啟動SQL Server時新的值才能生效當然SQL Server內存與機器內存有一定的比例關系 Server的內存太小會影響Server性能甚至無法啟動內存太大SQL Server也不能啟動所以了解SQL Server內存是如何分配的對於正確地調整SQL Server內存的數值保證Server最有效地運行會有很大的幫助
  
  內存使用
  操作系統及其他運行程序所占內存
  
  SOL Server執行代碼所占內存
  
  Kernl&Server 結構所占內存
  
  如user connectionsdevicesopen databasesopen objectslocksnetwork packet buffersextent i/o buffers等
  
  Procedure cache
  
  Data Cache
  
  內存分配舉例(以 SQL SERVER 版本為參考)
  由上表可知機器內存中去掉操作系統及其他程序所需的內存剩下的內存就可以分配給SQL Server
  
  假設SQL Server內存值為 page *k=MB SQL Server執行代碼所占內存對於不同平台不同版本SQL Server執行代碼大小不同但對某種固定的平台及版本大小是固定的大約在MB~MB用dbcc memusage可以觀察到執行代碼 的大小我們假設為MB則剩下內存( )=MB此外靜態SQL Server額外還需要一些保留內存(此值不因用戶修改configure參數值而改變)大概在~MB此例中我們假設為MB下一步SQL Server分配用戶定義的configure參數所需的內存如下表
   
  note:
  
  stack size default k
  影響內存的參數還有DefaultNetworkPacketSizeextenti/obuffers等此處忽略此時SQL Server剩下的分配給cache的總內存為()=MB
  在Cache中procedure Cache所占內存依賴於sp_configure中procedure Cache參數值缺省為即占總Cache 的%那麼Cache中的%為data Cache此例中我們設procedure Cache仍為
  
  data cache =(MB) *
  procedure Cache =(MB) *
  
  Data Cache用於從database中讀取頁信息如:data log index pages procedure Cache用於存放compiled objects stored procedurestriggers rules同時處理querycursor等
  
  Procedure Cache&Data Cache不能太小否則影響使用可以通過dbce memusage 查詢使Procedure Cache有足夠大小調整好Data Cache與Procedure Cache的比例此外我們還可以從SQL Server Errorlog中查看到Cache總內存空間情況
  
  Server:Number of buffers in buffer cache:
  Server:Number of proc bufferrs allocated:
  Server:Number of blocks left for proc headers:
  
  第一條信息表示用於data Cache的頁數 pages
  
  第二條信息表示用於procedure Cache的頁數 pages
  
  第三條信息表示procedure Cache中一次最多能有個已編譯過的objects
  
  我們還應知道如果default network packet size參數變化了則分配給network packet的總內存為 user connections * *default network packet size 缺省值為 * *= bytes若增加default network packet size值應考慮SQL Server內存所剩空間特別是data &procedure Cache的需要
  
  使用dbcc memusage命令
  dbcc memusage命令用於顯示SQL Serrver內存使用信息也是查看SQL Server執行代碼大小的唯一途徑
  
  >dbcc traceon ()
  >go
  >dbcc memusage
  >go
  >dbcc traceoff ()
  >go
  
  信息中code size表示SQL Server執行代碼大小
  
  不同SQL Server版本的內存要求
  educitycn/img_///gif>
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22079.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.