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