今天在群里有人问制造CPU占用率高的场景用来做测试。所谓做好事难,干“坏”事还不容易?这个需求有很多方法可以实现,比如使用一些压力测试工具。我首先想到的是HASH JOIN。这个联接比较消耗CPU资源,拿两大表HASH JOIN一下,最好是包含大字段的,开多几个进程,CPU使用率马上飙升到80-90%!


下面就使用一张系统视图进行HASH JOIN来实现,简单快捷。

DECLARE @i BIGINT
WHILE (1=1)
BEGIN
	SELECT @i = COUNT(*) FROM sys.all_objects AS a
	LEFT HASH JOIN sys.all_objects AS b ON b.name = a.name
END;
GO

Code-1: HASH JOIN



我在SSMS只开了四个session,同时运行上面的脚本的效果图。测试完请手动中止运行脚本。

wKiom1cY5y2zcCfYAALiXrsz4_E408.jpg

Figure-1: 性能计数器显示的CPU使用情况



wKiom1cY5y_g6xE_AALVmuA33lg024.jpg

Figure-2: 任务管理器显示的CPU资源使用情况