一,对于一个Connection来说如果这个连接只用了select进行查询的话,那么我们用不用事务的效果是不是一样的,因为select只是进行查询操作,还是有其他的说法.二,对于一个连接Connection来说如果同时进行select和update或insert的操作(比如从表A查出来数据的某几个列update到表B),那么当我们用事务控制的时候是需要两个Connection一个进行select(事务可选),一个进行update(要用事务),还是我们只需要一个Connection来用事务并进行select和update操作?三,有一个表有100万条数据,一个应用程序用事务处理,update这100万条数据的某个字段,(我想在快的数据库也需要10s左右吧?)这个时候这个线程是不是需要创建一个锁?那么这个锁是独占锁(肯定不是共享锁吧),这个锁同时是表级锁还是行级锁?  好的 ,回答完了上面的问题紧接来了,  另外一个用户也登陆 同样的操作,update这个儿100万条数据,那么此时会发生什么,这个线程是会等待前一个结束之后在进行操作,还是同时进行(这个好像不可能吧),还是直接报错,或者是等待一段时间后报错?四,一般锁的这种概念和错误在什么时候容易出现?应该如何解决呢,非常感谢,一个新手,如果大家不满意会在开新帖加分的,因为级别很低,只能先给100分了。

解决方案 »

  1.   

    2.对于第二个问题
    我们只需要一个Connection来用事务并进行select和update操作
      

  2.   

    事务控制的时候是需要两个Connection一个进行select(事务可选),一个进行update(要用事务)事务只在一个Connection中,如果你断开连接前事务如果提交那么就自动回滚了
    LZ应该是在一个Connection中开一个事务做select 和 update,在两个Connection中你的事务就是独立的没有联系的两个事务update的时候如果where 条件是主键那么就是行锁,否则就是表锁,一个用户用事务update这个儿100万条数据,如果这时连接没有关或者提交,那么其他人是不能update的,只能等
      

  3.   

    哦 谢谢楼上的,呵呵,那么
    四,一般锁的这种概念和错误在什么时候容易出现?应该如何解决呢,
    这个问题谁能解答一下呢,另外

    update的时候如果where 条件是主键那么就是行锁,否则就是表锁,一个用户用事务update这个儿100万条数据,如果这时连接没有关或者提交,那么其他人是不能update的,只能等”
    这个时候如果这个update并没有用事务的控制的时候也会出现表所或者行锁的问题吗还有就是  您说逐渐是行锁,那么如果有三个字段是联合主键,那么是否需要三个都要在where条件给出的时候才会是行锁,否则会是表锁呢
      

  4.   

    如果你表有主键,那么update时就是行锁
    您可以通过EXEC sp_lock @@spid做个测试
      

  5.   

    1,疑问 怎么用 ? (不过我马上就去会try一下)
    2,要是没有用事务的时候,你去update的话还会出现锁吗?
       如果没有锁的话那么并发的去update是不是会出现错误呢?非常感谢楼上的
      

  6.   

    BEGIN TRANupdate...EXEC sp_lock @@spidROLLBACK TRAN
      

  7.   

    三,有一个表有100万条数据,一个应用程序用事务处理,update这100万条数据的某个字段,(我想在快的数据库也需要10s左右吧?)这个时候这个线程是不是需要创建一个锁?那么这个锁是独占锁(肯定不是共享锁吧),这个锁同时是表级锁还是行级锁?  好的 ,回答完了上面的问题紧接来了,  另外一个用户也登陆 同样的操作,update这个儿100万条数据,那么此时会发生什么,这个线程是会等待前一个结束之后在进行操作,还是同时进行(这个好像不可能吧),还是直接报错,或者是等待一段时间后报错?数据库中有数据隔离等级,不同的等级会有不同的结果。
    可能会加锁,或者没有锁,而其他用户可以读取脏数据。
    如果有锁的话,是等待还是等待。   ^,^
      

  8.   

    1、效果是一样的。
    2、只需要一个connection
    3、默认不报错,但如果操作同条数据,仅成功一次
    4、并发操作执行时发生。
      

  9.   

    upupupupupupupupupupupup
    upupupupupupupupupupupup
    upupupupupupupupupupupup
    upupupupupupupupupupupup
    upupupupupupupupupupupup
      

  10.   

    对于第一个问题,如果事务的级别不一样,在有其它事务进行的情况下,
    Select出的数据可能有所不同。
    因为你选出的数据别人可能正在改啊!