背景:
我们有一个大量使用 SQL Server 2008 数据库的应用程序。我们正在尝试优化此应用程序。它是单线程的,我们通过应用程序的日志记录/分析注意到最大的瓶颈是数据库读/写。有些调用需要长达 100 毫秒,这对我们来说太长了,无法处理。在其他优化中,我们将其中一些调用拆分到一个单独的线程中。仅从这一变化来看,我们就看到处理时间有了很大的改善(代码几乎完全相同,只是有些被移到了不同的线程中)
题:
假设在内存中运行代码所花费的时间可以忽略不计,我会猜测在另一个线程中执行一些读/写不会产生任何性能提升。我觉得如果 SQL Server 只是对请求进行排队,无论如何都不会并行发生读/写,因此处理时间会相似。不是这种情况。
我想知道 SQL Server 如何处理来自不同线程的两个同时请求(读/写的任何组合)。它是否能够以某种方式同时执行它们?
总之,我会假设 Query1 + Query2 一个接一个调用的总时间将类似于同时调用 Query1 + Query2。
这是在双核服务器上运行的。
小智 3
SQL Server 是一个多用户数据库。它主要用于处理多个并发请求。
理想情况下,串行执行时采用 A + B 的两个查询在同时执行时采用 MAX(A, B)。
为了防止读取或写入损坏的数据,SQL Server 使用事务和 锁定。除此之外,应用程序还可以管理并发(例如,optimistic )。
归档时间: |
|
查看次数: |
21739 次 |
最近记录: |