在群里有人问制造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,同时运行上面的脚本的效果图。测试完请手动中止运行脚本。
Figure-1: 性能计数器显示的CPU使用情况
Figure-2: 任务管理器显示的CPU资源使用情况