[讨论]关于并发访问数据库服务器的效率问题.(200分)

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
同时访问多个数据库服务器上的数据库,并调用存储过程.从表面上看,开多个线程分别连接到不同的数据库服务器并调用存储过程,要比顺序依次连接每个数据库服务器并调用存储过程所用的时间短.但是我测试结果表明,所用的时间基本相同,有时甚至比顺序调用所用的时间还长.
请问这是什么原因造成的,并发调用是否一定比顺序所用的时间短.
注:我用的是SQL Server2000.
 
1. 这是个比较复杂的问题;
// 在单CPU的机器上, 多线程并不能减少事务的总时间;
2. 如果只是比较简单的查询, 两种方法基本上是一样的;
3. 如果有比较复杂的事务, 尽可能将事务写成存储过程放在数据库服务器上执行,这样可以
减少客户端程序的负担;
4. 客户端程序还可以采用常连接的方法(始终保持与数据库服务器的连接), 性能也会
提高一些 ;
 
最大的问题是,你的存储过程能并行执行吗?
是否会互相阻塞?
 
不同服务器上的储存过程。
 
你的存储过程在不同机器上运行,占用了所在机器的cpu时间,如果不涉及分布事务,应该
可以并行,如果存储过程执行时间较长时间应该缩短.你可以用sql server 的事件探察器看一下存储过程的执行情况.
 
谢谢楼上的指导
 
其他人有什么意见发表么?
 
你测试是一下多个线程同时启动,每个线程执行的开始时间,结束时间 ,然后看看有什么规律
 
楼上的提示很好,谢谢。
 
路过,顺便说点鄙人的看法:
所谓多线程,在单CPU情况下,只是分割成许多时间片,在不同的时间片执行,所以时间上应差不多。
多线程给人的感觉的是在同一时间里可以做很多事而已。
 
因为是“同时访问多个数据库服务器上的数据库,并调用存储过程”,所以用多个线程分别执行肯定会提高效率,至于楼主所说的结果,怀疑是调用代码或者测试代码有误造成的
 
建议尽量用存储过程来处理 能让服务器做的都让服务器做
 
在提交存贮过程时是否等待存贮过程执行返回结果,如果是的话肯定应该不同,如果没有等待返回结果而马上访问其他的服务器那使用多线程与不使用多线程的差别是体现不出来啊。
 
楼上的是不是说反了啊?
 
eloveme说得对
 
后退
顶部