关于jdbc的commit

shadowlin 2008-05-07 03:04:12
1.我觉得手动commit的程序比用autocommit的要快些,是我的错觉还是有什么原因?
2.我一次更新n条记录,放在一个transaction里,记录里有一个最后更新时间的字段.那是不是这n条记录就都是一个最后更新时间?
3.我把n条记录分m批用来用2里的办法更新,但是得到的最后更新时间还是都一样的,着是为什么呢?

PS:我用的mysql

希望熟悉jdbc的高手解答一下~谢谢
...全文
198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowlin 2008-05-07
  • 打赏
  • 举报
回复
我数据量不是很大,一般100多条,有的时候1000多条吧..
但是我每次commit间还要有好多处理,至少需要10s...我生成最后修改时间的程序是写在dao里的.
to javazhuobin :
你说的那种我也是这么想的,但是似乎从结果上来看不象啊.
胡矣 2008-05-07
  • 打赏
  • 举报
回复
1.到底速度如何不是用感觉的 用工具具体测试一下 另外 数据很少的话 应该看不出来的.
2.数据很少时间就是一致的 数据量很大的话 可能会有一点差别 电脑也要一点点执行的吧
3.请问你到底是用几个COMMIT?数据量是否比较少?
刘彬彬 2008-05-07
  • 打赏
  • 举报
回复
commit是为了保证数据的一致性,在内存中将为每个客户机建立工作区,客户机对数据库进行的操作处理的失误都在工作区内完成,当输入commit命令后,工作区的修改内容才写到数据库上,称为物理写入,这样就可以保证在任意的客户机上没有物理提交修改之前,别的客户机读区的后台数据库是数据完整的.
n条记录的更新时间当然是一个一致的时间点.我不太了解数据库底层的原理,但逻辑上来看,应该是以逻辑空间里的最后一个记录的更新时间为准.
呵呵,其实你用2种方法commit一个相同的逻辑空间,2者的速度应该是一样的.个人之见.仅供参考!
lovingprince 2008-05-07
  • 打赏
  • 举报
回复
还补充一点,事务只是保证你的操作的原子性。即要成功都成功,要么都失败,并不关心你什么时候完成几步操作。
lovingprince 2008-05-07
  • 打赏
  • 举报
回复
1.我觉得手动commit的程序比用autocommit的要快些,是我的错觉还是有什么原因?
答:如果是批量执行的时候,肯定要快些。因为开启一个事务需要耗费很多资源,分批次就好得多。不过也要注意要适量,不要几万条一起commit,那也不行。

2.我一次更新n条记录,放在一个transaction里,记录里有一个最后更新时间的字段.那是不是这n条记录就都是一个最后更新时间?
答:不是,即使是一次commit,因为你更新始终是有先后顺序的,所以时间肯定不一样,但是可能会在毫秒级以内

3.我把n条记录分m批用来用2里的办法更新,但是得到的最后更新时间还是都一样的,着是为什么呢?
答:你的记录不多吧?执行速度非常快的情况下,时间相差都在毫秒以内,一般的秒或毫秒都可能看不出来
anqini 2008-05-07
  • 打赏
  • 举报
回复
3.我把n条记录分m批用来用2里的办法更新,但是得到的最后更新时间还是都一样的,着是为什么呢?

这是因为你把2批的数据一次提交的吧,是2次提交的话不可能这样啊!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧