【发布时间】:2015-07-20 03:44:02
【问题描述】:
我使用的是SQL Server 2014 in AWS,AWS 镜像配置是 4 核和 16GB RAM(m3.xlarge)。我正在运行以下简单查询,
SELECT * FROM user_table WHERE user_id = '10'
user_table 包含 1000k 条记录,user_id 是主键。当通过 EJB 休眠从我的应用程序执行上述简单查询时,CPU 会在一段时间内飙升至 10%,然后又恢复正常。
所以我的用例是,100 个用户将同时尝试访问应用程序,因此在几分之一秒内,上述查询将在几分之一秒内尝试执行 100 次。因此 CPU 使用率飙升至 100%。一旦所有查询执行完成,CPU 使用率就会恢复到 1% 的正常水平。
- 为什么会这样?我是否需要增加我的 AWS 实例类型?
- 我应该怎么做才能使 SQL Server 处理 100 或更多的并发命中而不造成高 CPU 使用率?如果我的查询如此复杂,那么可能有机会获得峰值,但我的查询很简单直接。
- 是否有任何可用于 SQL Server 2014 的基准指标?
- 任何解决方案通过低 CPU 使用率来支持 SQL Server 的并发命中?
编辑 1:
我的数据文件大小约为
32.2GB和日志 我的数据库的文件大小约为894mb。我的数据库具有
READ_COMMITTED_SNAPSHOT is set to ON的隔离级别。 但是当我尝试通过设置READ_COMMITTED_SNAPSHOT to OFF时,性能提升有 20% 的差异,但性能提升并没有那么大。
【问题讨论】:
-
我读过一些关于 sql server 中 CPU 峰值的文章,故障是 windows server 上的电源配置设置,但我不认为 AWS 在 windows server 上运行?
-
user_id列的类型是什么? -
user_id 是 BIGINT 类型。
-
这个应该被移到 DBA 堆栈溢出站点以获得更好的答案
-
能否请您在问题中添加您的查询计划。
标签: sql-server hibernate amazon-web-services sql-server-2012