1.我觉得手动commit的程序比用autocommit的要快些,是我的错觉还是有什么原因?
2.我一次更新n条记录,放在一个transaction里,记录里有一个最后更新时间的字段.那是不是这n条记录就都是一个最后更新时间?
3.我把n条记录分m批用来用2里的办法更新,但是得到的最后更新时间还是都一样的,着是为什么呢?PS:我用的mysql希望熟悉jdbc的高手解答一下~谢谢

解决方案 »

  1.   

    1.我觉得手动commit的程序比用autocommit的要快些,是我的错觉还是有什么原因?
     答:如果是批量执行的时候,肯定要快些。因为开启一个事务需要耗费很多资源,分批次就好得多。不过也要注意要适量,不要几万条一起commit,那也不行。2.我一次更新n条记录,放在一个transaction里,记录里有一个最后更新时间的字段.那是不是这n条记录就都是一个最后更新时间?
    答:不是,即使是一次commit,因为你更新始终是有先后顺序的,所以时间肯定不一样,但是可能会在毫秒级以内3.我把n条记录分m批用来用2里的办法更新,但是得到的最后更新时间还是都一样的,着是为什么呢? 
    答:你的记录不多吧?执行速度非常快的情况下,时间相差都在毫秒以内,一般的秒或毫秒都可能看不出来
      

  2.   

       commit是为了保证数据的一致性,在内存中将为每个客户机建立工作区,客户机对数据库进行的操作处理的失误都在工作区内完成,当输入commit命令后,工作区的修改内容才写到数据库上,称为物理写入,这样就可以保证在任意的客户机上没有物理提交修改之前,别的客户机读区的后台数据库是数据完整的.
       n条记录的更新时间当然是一个一致的时间点.我不太了解数据库底层的原理,但逻辑上来看,应该是以逻辑空间里的最后一个记录的更新时间为准.
       呵呵,其实你用2种方法commit一个相同的逻辑空间,2者的速度应该是一样的.个人之见.仅供参考!
      

  3.   

    1.到底速度如何不是用感觉的 用工具具体测试一下 另外 数据很少的话 应该看不出来的.
    2.数据很少时间就是一致的 数据量很大的话 可能会有一点差别 电脑也要一点点执行的吧
    3.请问你到底是用几个COMMIT?数据量是否比较少?
      

  4.   

    我数据量不是很大,一般100多条,有的时候1000多条吧..
    但是我每次commit间还要有好多处理,至少需要10s...我生成最后修改时间的程序是写在dao里的.
    to javazhuobin :
    你说的那种我也是这么想的,但是似乎从结果上来看不象啊.