今天被同事指出了程序中的一个性能问题,主要是关于批处理的。我对他表示感谢,帮我弄清楚了这个问题。
错误是这样:我以为只要把对数据库的操作放在Transaction当中,那么在Transaction当中所做的操作,只要没有提交都不会反应到数据库中去。如果事务回滚的话,那么在这个事务中的所有操作都将回滚。
按说,上面这句话也是没有错误的,但是错误就发生在:虽然是在事务中所做的操作不会对数据库产生什么影响,但是,这些操作仍然是需要连接到数据库,仍然是对数据库进行了操作的,只是由于在事务中。数据库对事务的隔离级别不一样,那么外部是看不到该事务的中间结果的。也就是说,在事务中所做的操作都是需要耗费时间的,如果在一个事务中频繁需要更新数据库,那么可以考虑引入批处理。这样的话,能够减少系统对数据库的操作次数,也就能够提升性能。
我之前的理解确实是错的,再次记录,并再次感谢我的同事。
错误是这样:我以为只要把对数据库的操作放在Transaction当中,那么在Transaction当中所做的操作,只要没有提交都不会反应到数据库中去。如果事务回滚的话,那么在这个事务中的所有操作都将回滚。
按说,上面这句话也是没有错误的,但是错误就发生在:虽然是在事务中所做的操作不会对数据库产生什么影响,但是,这些操作仍然是需要连接到数据库,仍然是对数据库进行了操作的,只是由于在事务中。数据库对事务的隔离级别不一样,那么外部是看不到该事务的中间结果的。也就是说,在事务中所做的操作都是需要耗费时间的,如果在一个事务中频繁需要更新数据库,那么可以考虑引入批处理。这样的话,能够减少系统对数据库的操作次数,也就能够提升性能。
我之前的理解确实是错的,再次记录,并再次感谢我的同事。