`

批处理概念误解

阅读更多
       今天被同事指出了程序中的一个性能问题,主要是关于批处理的。我对他表示感谢,帮我弄清楚了这个问题。
       错误是这样:我以为只要把对数据库的操作放在Transaction当中,那么在Transaction当中所做的操作,只要没有提交都不会反应到数据库中去。如果事务回滚的话,那么在这个事务中的所有操作都将回滚。

       按说,上面这句话也是没有错误的,但是错误就发生在:虽然是在事务中所做的操作不会对数据库产生什么影响,但是,这些操作仍然是需要连接到数据库,仍然是对数据库进行了操作的,只是由于在事务中。数据库对事务的隔离级别不一样,那么外部是看不到该事务的中间结果的。也就是说,在事务中所做的操作都是需要耗费时间的,如果在一个事务中频繁需要更新数据库,那么可以考虑引入批处理。这样的话,能够减少系统对数据库的操作次数,也就能够提升性能。
       
       我之前的理解确实是错的,再次记录,并再次感谢我的同事。
分享到:
评论
1 楼 liwenjie 2011-01-01  
没有提交,其他事务如果是脏读的事务隔离级别,那么脏读的事务是可以读取其他事务未提交的数据的。

相关推荐

Global site tag (gtag.js) - Google Analytics