好象是会锁住表的是不是?
我同时建立2个连接,一个先begin一下,在rollback之前再用另一个连接操作数据表,就抛出了获得锁超时的异常
请哪位高手讲解一下,谢谢

解决方案 »

  1.   

    rollback要与transact(事务)合用
    这样你就不需要建两个连接
      

  2.   

    噢,谢谢
    我建立这2个连接只是为了测试一下rollback
    我想知道一下rollback的作用与副作用,在网上好象查不到什么资料
      

  3.   

    我在同一个action里是用单例的,
    本来我是想同一个用户用单例的,
    但是那样写起来好象比较麻烦,又要做static的map又要比较用户
    而且,在同一次请求中,action的数目不会很多
    我就想,既然都用上了连接池,那么为了这么一点连接的性能而做那么多额外的工作值不值得呢?这样赚回来的性能不就抵消了?或者说,还有其他好的方法?
      

  4.   

    不知道你是怎么理解的,我的理解是,ROLLBACK是数据库服务器端的事务回滚.
    唯一有影响的是你要操作的数据库表.你从连接池中获得一个联接.那么这时起,会在数据库服务器端设一个回滚点.(根据你设的是自动事务提交或其他)如果你的联接ROLLBACK.那么数据库里的事务就会回滚到你开始设的回滚点.
    否则事务提交!
      因为你的CON 是获得数据库端的SESSION.
     这只是本人的理解!也不知知道是否正确.请达人指教!!!
      

  5.   

    我的理解是之前,我听到是MYSQL是多线程的
    但从实验看来,begin之后,就会锁住数据库了,
    所以,假如这个操作很费时的话,那不是影响速度?
    JAVA里好象也建议同步应该尽量减少其实,我想要的答案shengdianjisi()已经给出了“不会影响”
    而经过实验,我也知道了MYSQL会锁住表以防止意外发生