所有資料庫軟體的主要設計目的之一,便是將磁碟 I/O 最小化,因為磁碟的讀取和寫入,是電腦上最需要用到大量資源的作業之一。SQL Server 會在記憶體中建立緩衝集區,以保存從資料庫讀取的頁面。SQL Server 的大部分程式碼,主要是用來最小化磁碟和緩衝集區之間實體讀取和寫入數目。SQL Server 會嘗試在兩個目標之間取得平衡: 避免緩衝集區過大,造成整個系統的記憶體不足。 最大化緩衝集區的大小以最小化資料庫檔案的實體 I/O。
資料庫實在是IT又愛又恨的東西,以前公司的資料庫,大約在table成長到約100萬筆資料時,效能瞬間down到不能用,只能靠刪除資料的方式恢復效能,大約回到90萬筆就很快了,SQL Server你真行! Orz
不過比起另一個系統把預約單檔案(1~5KB),存放在另一台server的share folder(EMC DMX等級的SAN哦),等要用到時再去讀取,結果就是檔案到了約10萬個以後開始讀取寫入都會漏資料!! 最慘的是沒有log,無從找出問題。
現在回想起來,如果選擇用資料庫來處理這種需求。100萬筆資料vs.100萬個檔案,很明顯資料庫對100萬筆資料處理還算輕而易舉,DB雖然也會有瓶頸及tuning的問題,但好歹有方法可以依循,有架構可以利用,更重要的有很多工具找出問題。
在32-bit CPU memory 配置中
- 8G的預設配置如下:
OS 2GB
APP 2GB(包含SQL SERVER及其它應用程式)
剩餘4GB(未使用) - 8G的設定 /3GB 的配置如下:
OS 1GB
APP 3GB(包含SQL SERVER及其它應用程式)
剩餘4GB(未使用) - 8G的設定 /PAE 的配置如下:
OS 2GB
APP 2GB(包含SQL SERVER及其它應用程式)
剩餘4GB(給BUFFER CACHE資料快取使用) - 8G的設定 /PAE /3GB 的配置如下:
OS 1GB
APP 3GB(包含SQL SERVER及其它應用程式)
剩餘4GB(給BUFFER CACHE資料快取使用)
在64-bit CPU memory 配置中
- 8G的設定的配置(系統自行配置)如下:
OS 1GB(可另行設定)
剩餘7GB(包含SQL SERVER及其它應用程式)
若你的記憶體超過16GB則不可設定 /3GB及/PAE,因為OS一定要吃2GB
啟用 AWE 功能之後,SQL Server 就無法動態管理記憶體,簡單地說,就是它會用掉所有可用的記憶體
參考: SQL Server的記憶體架構
http://technet.microsoft.com/zh-tw/library/ms187499.aspx
前天裝好了x86-64的2003+sql2005想說把爛爛的server多榨出一點效能來,看能不能撐到user要的5年資料(估計150G),結果廠商來裝他們的軟體竟然說"我們的程式抓不到64位元os的odbc"...Orz
odbc不就是個API嗎?還會抓不到,真詭異。不過更詭異的還在後面,3台ap用odbc連線竟然只有一台連的到,還都在同網段。今天一不作二不休,就重灌成32bit的吧,果然就很順利了!! 想想可能是請廠商在裝os的時候,HP的導引光碟好像是拿成x86 32bit的...難怪裝好以後有幾樣裝置沒抓到,以後還是要多細心點,不要顧聊天 XD
沒有留言:
張貼留言