首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server中的故障处理性能问题

SQL Server中的故障处理性能问题
EN

Stack Overflow用户
提问于 2017-11-15 11:10:53
回答 1查看 48关注 0票数 0

我有两张桌子- ThingsHistory。假设Things有一个列Id作为主键,另一个列LastUpdated是某种时间戳值。LastUpdated列上有一个索引。还有其他专栏,但我认为不应该有太大的相关性。我有两个来自我的ASP.NET MVC应用程序的业务工作流。

  1. 获取自上次以来更改的内容。运行表单查询:SELECT [Columns] FROM Things WHERE LastUpdated > @LastUpdated。此查询在连接w/o事务或事务范围上触发。
  2. 更新特定的东西。这发生在两个数据库事务中--第一个事务在Things上有一个Id,然后是使用IdUPDATE Things。第二个事务在History表中插入行。这两个事务都使用具有TransactionScope隔离级别的Read Committed进行控制。

我正在尝试用这样的场景来标记性能

  • Things表中的5000行
  • 每秒25个查询(上文#1)
  • 每秒更新200次(第2次)

环境:带有Server 2016 LocalDB引擎的My机器(核心LocalDB,8GB)。

我观察到的是,随着History表中行数的增加,#1和#2的性能下降是可以理解的,因为它实际上更新了历史表。然而,我感到困惑的是,为什么#1会急剧下降。例如,在history表中,对于250 K行,#2时间从空数据库中的大约10 ms下降到大约65 ms,而#1次从大约10 ms下降到200 ms。注意,Things表有固定的行数(5000)。我所能想到的唯一解释是由于在磁盘IO上的争论。

我就在这儿吗?是否有任何方法来验证这一点(例如,使用)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 12:43:57

我不能花太多时间在这个问题上,但正如我所怀疑的那样,表面上的原因是磁盘I/O争用。我将历史表移动到不同机器上的另一个数据库。现在,历史表中的行数不再影响#1计时,无论历史表中的行数如何,它或多或少保持不变(6-7%的方差)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47305855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档