測試環境
- CPU:Celeron 4 1.7 GHz
- 記憶體:256 MB
- 主機板:華碩 845D
- 硬碟:Maxtor 6E040L0 40GB 7200 RPM
- OS:Windows 2000 Professional SP4 (英文版)
- 測試工具:Query Analyzer 執行 T-SQL 腳本
測試腳本核心邏輯
-- 建立測試表
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[AreaBak]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
TRUNCATE TABLE [dbo].[AreaBak]
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[AreaBak]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE [dbo].[AreaBak] (
[AreaCode] BIGINT NOT NULL,
[AreaName] VARCHAR(16) COLLATE Chinese_PRC_CI_AS NOT NULL,
[LocaName] VARCHAR(32) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[AreaBak] ADD CONSTRAINT [PK_AreaBak] PRIMARY KEY CLUSTERED ([AreaCode]) ON [PRIMARY]
END
DECLARE @iMax BIGINT
SET @iMax = 1000 -- 可調整 1000, 10000, 20000, 100000 對比
DECLARE @i BIGINT, @tBegin DATETIME, @tEnd DATETIME, @fCost FLOAT
-- 1. 寫入效能測試
SET @tBegin = GETDATE()
SET @i = 1
WHILE @i <= @iMax BEGIN
INSERT INTO AreaBak VALUES (@i, RTRIM(CAST(@i AS CHAR(12)))+'XX', RTRIM(CAST(@i AS CHAR(12)))+'XXXX')
SET @i = @i + 1
END
SET @tEnd = GETDATE()
SELECT '寫入耗時(毫秒)' = DATEDIFF(ms, @tBegin, @tEnd)
-- 2. 索引查詢效能 (最後 50 筆)
SET @tBegin = GETDATE()
SET @i = @iMax
WHILE @i >= (@iMax - 50) BEGIN
SELECT * FROM AreaBak WHERE AreaCode = @i
SET @i = @i - 1
END
SET @tEnd = GETDATE()
SELECT '索引查詢耗時(毫秒)' = DATEDIFF(ms, @tBegin, @tEnd)
-- 3. 大量資料讀取效能
SET @tBegin = GETDATE()
SELECT * FROM AreaBak
SET @tEnd = GETDATE()
SELECT '全表掃描耗時(毫秒)' = DATEDIFF(ms, @tBegin, @tEnd)
版本差異預期分析
| 版本 | 核心引擎 | 記憶體支援 | CPU 支援 | 適用場景 |
| Enterprise | 完整功能 | OS 上限 | 無限制 | 關鍵任務、大型資料倉儲、高可用性 |
| Standard | 核心功能 | 2 GB | 4 CPU | 中型企業應用、部門級資料庫 |
| Developer | 同 Enterprise | 同 Enterprise | 同 Enterprise | 開發/測試/評估 (不可生產) |
| Personal | 核心功能 | 1 GB | 1 CPU | 單機開發/桌面應用 |
| Desktop Engine (MSDE) | 核心引擎 | 2 GB / 2 CPU | 無 GUI 工具 | 嵌入式應用、ISV 紅利分發 |
| SQL Server CE | 精簡引擎 | 行動裝置限制 | 單 CPU | Windows CE / 行動裝置 |
結果解讀指引
- 寫入效能:主要受限於硬碟 I/O、記憶體緩衝、交易記錄同步。Enterprise/Standard/Developer 應接近。
- 索引查詢:受 CPU、記憶體、查詢最佳化器影響。版本間差異極小。
- 全表掃描:受 I/O 頻寬、平行處理能力影響。Enterprise 支援平行查詢 (需多 CPU),單 CPU 環境差異不明顯。
- 記憶體壓力:256 MB 環境下,Personal/CE 可能較早觸發記憶體管理機制影響效能。
建議
- 在目標硬體上實測各版本 (Developer 版可模擬 Enterprise),以實際數據決策。
- 關注授權成本與功能需求平衡:生產環境非 Enterprise 不可用平行索引掃描、線上索引重建、資料庫鏡像等高階功能。
- 開發/測試環境請使用 Developer 版 (功能全、成本低、不可生產)。