來真正的談談應用的問題...
記憶體絕對是要給系統使用的, 讓專業的 Windows Kernel 去管理他可以使用的記憶體.
在一般用途來說, 記憶體就是要 random access
你現在把一大半的 RAM 給切出來當硬碟用的時候, 這整大塊的空間就不是所謂的 Random Access 了
變成了是你把東西搬進去, 然後... 再搬出來? @_@
完全的喪失記憶體那 Random Access 的特性與需求!
前面有人提到過說把資料庫放進 RAM 裡加快 20 倍效能的範例. 說真的都把記憶體放進 RAM 裡了才 20 倍?
非常的.. "慢"
資料庫系統有自己管理記憶體的一套方式, 正確的設定下, 它所需要的很單純就是一大堆的記憶體讓它自行調配使用!
單純的把資料庫放進 RAM 裡不但沒辦法加快資料庫系統的速度, 說真的; 在大型的 Query 下比方說 join 或者 sub select
又或是建立 Index 時對 RAM 需求量大時, 你單純的把資料庫的檔案放在 RAM 裡, 然後資料庫系統在需求記憶體處理資料時
不夠了就是跑去跟 SWAP 要, 沒有 SWAP 時就會 Out of memory!
這是會拖慢速度, 甚至是無法完成的嚴重後果!
這邊有個影片是前陣子為了想提供公司更好的服務器方案所拍攝的.
資料庫本身就 34GB, 總筆數九千多萬筆, 接近一億.
這是巨量資料嗎? 不是! 這種資料量對許多公司都是小 case.
如果資料量再多一點點, 你可以把它們放進 RAMDisk 去試看看 -_-
http://118.163.143.148/um.mp4
影片測試環境是以八線程吃滿, 隨機的對資料表任意欄位做 Select, Update, Insert 的動作, 沒有 delete query
記憶體特別拔到剩 2GB, 因為資料庫系統其實設定對了, "可用" 記憶體每多個一個單位就會對效能加速非常非常多
特別的點出 "可用"
就是說, 可以被使用的記憶體, 而不是被切出一大塊當成 RAMDisk 浪費在那邊的記憶體!
影片有點無聊, 但是想表達的是, 前面有人說將系統整個放進記憶體可以加速 10 倍的... 沒意義的理論.
是不切實際且無感的. 以 windows 來說, 系統加 Office 與 Photoshop 等安裝到好, 您有 64GB 的 RAM,
應該也沒辦法讓你再多裝個遊戲去享受那所謂 10 倍速的快感, 因為就算你的 RAM 吃的下這麼多東西,
但是真正的 "可用" 的 "Random Access Memory" 都被你拿去放不可以 "Random Access" 的一次或兩次性資料了.
真的是浪費資源且沒有意義的動作 @_@