Sql2005开发版+Sp3补丁。数据库中有个表的数据量大约在2000W左右,在企业生产时,有多个客户端在访问这个数据库,且访问该表,基本上每分钟每个客户端大约访问200次,每次验证访问一条数据的时间不能超过1/3秒,这样我在生产的时候,管理人员就不能连接到该数据库进行查询、统计等工作,否则他们一查询某个报表,那么就会影响到其他客户端生产速度变慢,访问查询变慢不知道各位高手有没有遇到同样问题?如何做到能让车间生产的时候,其他人员访问查询不影响到车间生产??求高手帮忙,多谢!!

解决方案 »

  1.   

    原理是建2个数据库,一个只用来读取,一个只用来写入.
    当然前提是保证2个数据库的数据同步,
    方法有复制(Replication),镜像(Mirror),日志传送(LogShipping)等.
    网上有很多实施笔记的,楼主可参考一下.
      

  2.   

    不过读写分离是要成本的,至少要多一台服务器.
    按楼主的需求看,可以考虑使用SQL2005的数据库快照功能.
    避免查询进程造成大量的S LOCK,影响写入的进程.
      

  3.   

    补充一下, 还有一种方法应可解决这个问题
    SQL2005其提供新的事务隔离级别:资料行版本控制.
    详情可参考一下相关资料.  alter database [数据库名] set read_committed_snapshot on
      

  4.   

    如何做到双数据库同步,比如我操作A数据库,操作的数据同时在B上展现,同样的,操作B时,操作的数据同步更新到A数据库?这种操作会不会影响数据库的性能?
      

  5.   

    读写分离,例如A数据库只用来读,B数据库只用来写,其实只需要把B数据库的日志传到A数据库就可以的.
            因为A数据库只用来读,数据是不会在A端被修改的.会变化的只可能在B数据库中.
    所以,只需要建单方向的事务复制(Replication)就可以了.
      

  6.   

    事务复制(Replication)可以设置数据同步的执行频率,最小1分钟1次.