日期:2014-05-18  浏览次数:20521 次

有关于多用户查询统计的问题
数据库:sqlserver2000。
比如表:t1、t2,t1和t2是主从表的关系,t1有10万行,t2有200万行,这是多客户端操作,当A客户端查询t1和t2的过程时,其它客户查询t1或t2时就停在那里,要等A客户端查询统计完毕后(比如在A客户端查询统计需要1分钟,过了1分钟后其它客户端才能查询统计),其它客户端才能查询,这种现象是当数据很多时才会有,数据很少不会出现这种现象。当然这个应该排除中病毒的原因,表也加了需要的索引,也优化的SQL语句了。


------解决方案--------------------
数据库:sqlserver2000。 
比如表:t1、t2,t1和t2是主从表的关系,t1有10万行,t2有200万行,这是多客户端操作,当A客户端查询t1和t2的过程时,其它客户查询t1或t2时就停在那里,要等A客户端查询统计完毕后(比如在A客户端查询统计需要1分钟,过了1分钟后其它客户端才能查询统计),其它客户端才能查询,这种现象是当数据很多时才会有,数据很少不会出现这种现象。当然这个应该排除中病毒的原因,表也加了需要的索引,也优化的SQL语句了。 


各统计各的?怎么会有你这样的情况?

当然我知道有的软件可能会出现你这样的情况,比如PB编写的软件.但那时在有这样的需求时,PB采用了锁定的方案.但是如果没有这样的需求,客户端的统计,查询都是同时进行的.
------解决方案--------------------
用查询分析器,开多个然后同时查,如果出现你说的一个完了才允许另一个执行的话,那看看当时这几个表上的锁(lock)情况,如果没有独占,那只能说明是机器配置太低,可以监控内存、cpu和磁盘队列情况。在你执行的耗时的语句前后加上getdate来判断到底是不是“串行”执行了,或许只是因为你的机器太慢而貌似串行而已
------解决方案--------------------
看看是不是SQL问题,本来查询就耗去了很多时间和资源。 尝试 增加索引 一次将频繁数据提取到内存?
------解决方案--------------------
首先优化查询、索引,实在不行就只有提高机器性能了,因为CPU一下子就100%,所以增加CPU是很不错的选择,或者将表分开。