首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

利用虛擬硬碟 (RAM Disk) 加速 SQL Server 2000:tempdb 置記憶體實測首篇

     編輯:關於SqlServer

首篇發現:整庫放 RamDisk 無效,tempdb 才是真瓶頸

筆電 4GB RAM 劃 1GB 做 RamDisk (軟體 Ramdisk),SQL Server 2000 + Northwind `Products` 252 萬筆測試。

測試過程

  1. **整庫放 RamDisk** (`northwnd_Ram`) vs 實體碟 (`northwnd_Disk`)。
  2. 有索引查詢 (`ORDER BY ProductID` PK):**RamDisk 快 8 倍**,尚可接受。
  3. 無索引查詢 (`ORDER BY ProductName, ProductID`) 翻第 1000 頁:**RamDisk 逾時**,硬碟燈狂閃。
  4. 發現 SQL Server 2000 大量排序疯狂寫入 **tempdb** (100MB+),原來 tempdb 仍在實體碟。

解決:移動 tempdb 至 RamDisk

USE master;
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'T:\Data\tempdb.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'T:\Data\templog.ldf');
GO
-- 重啟服務

優化後實測 (倒序 Top 分頁算法)

頁碼耗時硬碟燈
第 1,000 頁11 秒不亮
第 5,000 頁11 秒不亮
第 10,000 頁12 秒不亮
第 100,000 頁22 秒不亮

測試用 SQL (第 99,999 頁)

SELECT * FROM Products 
WHERE ProductID IN (
    SELECT TOP 15 ProductID FROM (
        SELECT TOP 1499985 ProductName, ProductID FROM Products
        ORDER BY ProductName, ProductID
    ) AS t
    ORDER BY t.ProductName DESC, t.ProductID DESC
)
ORDER BY ProductName, ProductID;

核心心得

  • **資料庫本身放 RamDisk 效果有限**,因查詢仍受限於 tempdb 排序溢寫。
  • **tempdb 是排序、雜湊聯結、版本存放、暫存表的核心戰場**,置入記憶體 (RamDisk/大記憶體+多檔案) 為最高 ROI 優化。
  • tempdb 內容臨時、重啟自建,**遷移風險極低**,強烈建議生產環境評估實施。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved