MSDN描述了其OLEDB提供程序的JET事务隔离,如下所示:
Jet支持事务中的五个嵌套级别。唯一的 支持的事务模式是Read Committed。设置较小 事务分离级别意味着Read Committed。设置 更高的级别将导致StartTransaction失败。
Jet仅支持单阶段提交。
MSDN描述Read Committed
如下:
指定在读取数据时保留共享锁 避免脏读,但数据可以在结束之前更改 事务,导致不可重复的读取或幻像数据。这个 option是SQL Server的默认值。
我的问题是:
什么是单阶段提交?这对交易和隔离有什么影响?
如上所述的Read Committed隔离级别是否适合我的要求here?
答案 0 :(得分:1)
问题编号:
单阶段提交用于所有数据都在一个数据库中的情况 - 事务活动是以原子方式提交的,您已完成。如果您有一个逻辑事务需要分布在多个存储引擎(如元数据的关系数据库和某种大型blob的文档存储),您可以使用事务管理器来协调活动如果两个产品都支持两阶段提交,那么工作将持续存在于两者中或两者都不存在。他们只是告诉你他们不支持两阶段提交,因此该产品不适合分布式事务。
是的,如果您检查UPDATE
声明中的条件;否则你可能会有问题。
他们似乎暗示你不能。
顺便说一句,几十年来,我在各种环境中担任顾问。由于性能问题,我不止一次从事人员 off 。在一种情况下,一个简单的“星型”查询运行了两分钟,因为它正在加入客户端而不是让数据库这样做。作为对数据库的直接查询,它是亚秒级的。在另一个案例中,有一个报告需要72小时才能通过Jet运行,直接针对数据库运行需要2分钟。如果它通常对您有效,那么您可以通过使用Jet导致性能下降的存储过程来处理这种情况。