我们的应用程序使用两个连接(在整个应用程序中保持打开状态)调用两个 Oracle 数据库。对于某些功能,我们使用分布式事务。我们在连接字符串中有 Enlist=false 并手动登记到事务的连接。问题出现在这样一种情况下,我们在分布式事务中非常频繁地更新相同的记录,在这种情况下,我们看到在上一次运行中看到提交的数据存在延迟。
前任。
using (OracleConnection connection1 = new OracleConnection())
{
using(OracleConnection connection2 = new OracleConnection())
{
connection1.ConnectionString = connection1String;
connection1.Open();
connection2.ConnectionString = connection2String;
connection2.Open();
//for 100 times, do an update
{
.. check the previously updated value
connection1.EnlistTransaction(currentTransaction);
connection2.EnlistTransaction(currentTransaction);
.. do an update using connection1
.. do some updates with connection2
}
}
}
与上面的代码片段一样,我们在下一次迭代中更新并检查先前更新的值。当我们频繁地为单个记录运行此记录时会出现问题,即使在上一次迭代中已提交,我们也看不到在下一次迭代中的最后一次迭代中提交的更新。但是当这种情况发生时,这个更新在其他应用程序中会以非常小的延迟可见,即使在我们的代码中,如果我们要调试并再次运行该行,它也是可见的。即使先前的提交从代码返回,这几乎就像提交的延迟。任何人有任何想法?