我正在通过网络将一些数据从sql server复制到firebird。由于完整性,我需要使用事务,但我正在传输大约9k的行。在开放交易中阅读对阅读成本有一些负面影响,而在非交易模式下阅读是否存在?
答案 0 :(得分:2)
“非交易模式”根本不存在,无论您是否声明,都会有交易。问题是,在隐式事务中读取与在显式事务中读取之间是否存在任何差异。简短的回答是不,没有区别。
如果在较高的隔离级别下使用显式事务,则可能会有一些区别,而不是默认的READ_COMMITTED。这还取决于您是否在显式交易中执行其他,但所有这些细节都不能从您帖子中的节俭信息中获取。
答案 1 :(得分:1)
默认事务隔离级别为READ COMMITTED。在查询时,它会锁定其他人的表。
事务隔离级别的MSDN: http://msdn.microsoft.com/en-us/library/ms173763.aspx
我遇到了一个关于锁定死锁的偶然奇怪错误消息的问题。这甚至发生在stackoverflow上 - 请参阅Jeff Atwood的这篇精彩文章。我强烈建议切换到“读取已提交的快照”,以解决错误+我的性能问题。