You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server跨服务器性能差异排查:求通用性能对比测试SQL

我完全理解你遇到的这种困惑——相同的逻辑、相同的数据,却跑出天差地别的性能,确实让人摸不着头脑。下面我给你一套不依赖现有业务数据的通用性能测试脚本,用来对比两台SQL Server服务器的基础DML(插入、更新)性能,你可以在两台机器上完全同步执行,就能看出核心性能差异:

通用SQL Server性能对比测试脚本

第一步:创建测试表(确保环境干净)

先清理可能存在的旧测试表,再创建一个结构贴近真实业务的测试表:

-- 清理旧表(如果存在)
DROP TABLE IF EXISTS dbo.PerformanceTestTable;

-- 创建测试表
CREATE TABLE dbo.PerformanceTestTable (
    ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, -- 聚集主键,模拟常用的自增ID
    RandomVarchar VARCHAR(50) NOT NULL,
    RandomInt INT NOT NULL,
    RandomDate DATETIME NOT NULL,
    UpdateFlag BIT DEFAULT 0,
    CalculatedValue DECIMAL(18,2) NULL
);

第二步:批量插入500万条测试数据

用高效的批量插入方式生成模拟数据,避免逐行插入的低效:

-- 开启时间统计
SET STATISTICS TIME ON;
SET NOCOUNT ON;

DECLARE @StartTime DATETIME = GETDATE();

-- 批量插入500万条数据(利用系统表快速生成行)
INSERT INTO dbo.PerformanceTestTable (RandomVarchar, RandomInt, RandomDate)
SELECT
    'TestString_' + CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VARCHAR(10)),
    ABS(CHECKSUM(NEWID())) % 10000,
    DATEADD(MINUTE, -ABS(CHECKSUM(NEWID())) % 525600, GETDATE()) -- 生成近1年的随机日期
FROM master.dbo.spt_values v1
CROSS JOIN master.dbo.spt_values v2
WHERE v1.type = 'P' AND v2.type = 'P'
AND ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) <= 5000000;

-- 输出插入耗时
SELECT '插入500万行耗时:' + CAST(DATEDIFF(SECOND, @StartTime, GETDATE()) AS VARCHAR(10)) + ' 秒';

SET STATISTICS TIME OFF;

第三步:大规模批量更新测试

模拟真实场景中的批量更新操作,比如基于字段计算更新、范围更新:

SET STATISTICS TIME ON;
SET NOCOUNT ON;

DECLARE @UpdateStartTime DATETIME = GETDATE();

-- 批量更新:根据RandomInt计算CalculatedValue,并标记UpdateFlag为1
UPDATE dbo.PerformanceTestTable
SET 
    CalculatedValue = RandomInt * 1.75,
    UpdateFlag = 1
WHERE RandomInt BETWEEN 1000 AND 9000; -- 覆盖大部分数据(约80%的行)

-- 输出更新耗时
SELECT '批量更新耗时:' + CAST(DATEDIFF(SECOND, @UpdateStartTime, GETDATE()) AS VARCHAR(10)) + ' 秒';

SET STATISTICS TIME OFF;

测试注意事项

  • 确保两台服务器都在相同的负载环境下执行:关闭非必要的服务、进程,避开业务高峰时段。
  • 执行前可以先清空缓存(谨慎操作,仅在测试环境执行):
    DBCC DROPCLEANBUFFERS;
    DBCC FREEPROCCACHE;
    
  • 可以多次执行取平均值,避免单次测试的偶然性。

通过这套脚本,你就能直观对比两台服务器在批量插入、大规模更新上的基础性能差异,帮助定位是CPU、内存、存储还是配置层面的问题。

内容的提问来源于stack exchange,提问作者user3266033

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:00:33