SQL Server 2012 CPU使用率飙升至100%

Jay*_*ram 7 sql-server hibernate amazon-web-services sql-server-2012

我正在使用SQL Server 2014 in AWS,AWS映像配置是4核和16GB RAM(m3.xlarge).我正在运行以下简单查询,

SELECT * FROM user_table WHERE user_id = '10'
Run Code Online (Sandbox Code Playgroud)

user_table包含1000k记录,user_id是主键.当通过EJB hibernate从我的应用程序执行上述简单查询时,CPU暂时上升到10%并再次恢复正常.

所以我的用例是,100个用户将同时尝试命中应用程序,因此在上述查询的一小部分中,上述查询将尝试在几分之一秒内执行.因此CPU使用率达到100%.完成所有查询执行后,CPU使用率恢复正常,为1%.

  • 为什么会这样?我是否需要增加我的AWS实例类型?
  • 为了使SQL服务器在不降低CPU使用率的情况下处理100个或更多并发命中,我应该怎么做?如果我的查询非常复杂,那么可能有机会获得峰值,但我的查询很简单直接.
  • 是否有适用于SQL Server 2014的基准测试指标?
  • 任何通过低CPU使用率消耗来支持SQL服务器并发命中的解决方案?

编辑1:

  • 我的数据文件大小的另外一个信息32.2GB894mb,我的数据库的日志文件大小.

  • 我的数据库具有隔离级别READ_COMMITTED_SNAPSHOT is set to ON.但是当我尝试设置时READ_COMMITTED_SNAPSHOT to OFF,性能提升有20%的差异,但性能改进并不是那么大.

Jen*_*der 2

很难(不可能)用这么少的数据来确定,但对我来说这听起来很完美:100%CPU 意味着 sql-server 完全不受 IO 限制,而是仅使用 CPU 来执行查询,所以它可能会发现它所需的一切都在内存中,而且它还能够利用所有 CPU,因此也不存在瓶颈。

所以只要性能足够,就不用担心。当然,一旦系统有更多查询,事情可能会变得更有趣。我期望的一件事是数据会超出数据库缓存,因此 CPU 负载会下降,而 IO 会增加且性能会下降。