在程序中开了很多线程。分别要进行各自的数据库操作,有的要向数据库里写入数据操作,有的要读取数据库中的数据,想问下,这种情况下,如果多个线程多对数据库中的同一张表进行读或写操作,同步控制是要在程序中实现呢还是数据库自己会对访问的线程进行同步管理。 
还有想问的是如果问题换成多个进程呢?又是一种什么状况?

解决方案 »

  1.   

    SQLSERVER中通过事务和锁来防止同步问题的发生,同时提供了不同的隔离级别来快速设定并发性的高低。
      

  2.   

    对SQL SERVER研究不深,你说的这些都没用过,那我在程序中应该如何做呢?
      

  3.   

    这个要根据你并发的内容来看了,并发问题一般是脏读、不可重复读、幻读等,越高的隔离级别能防止的并发问题越多,并发性能也越差。应该选择你的业务需要的最低的隔离级别。这块知识比较大,给你推荐石头哥的BLOG吧
     SQL2005中的事务与锁定(一)
    一共九篇,基本看完前几篇心里就有谱了。
      

  4.   


    默认情况下,SQL Server已经对并发做了很好的控制。如果这个都做不好,那SQL Server就不用混了。但如楼上说的,不同的设置会有不同的并发效果如果想深入,可以好好了解。其实,一般情况下,不需要对并发进行什么控制的吧
      

  5.   

    大致意思就是你不用管太多,程序上只管用,sqlserver会搞定的,如果你想深入了解,就去看看LS的LS提供的文档,并选择一个适合你的隔离级别,在sqlserver中设置。
      

  6.   

    楼主的问题解决没。我也有同样的问题。我现在都不清楚到底是处理线程的代码,加sleep,wati等操作。还是再数据库中处理并发的问题。