哪个IsolationLevel最适合在TransactionScope中成功处理我的数据

本文关键字:成功 处理 我的 数据 TransactionScope IsolationLevel 哪个 | 更新日期: 2023-09-27 18:06:35

我有一些数据,我想在2个数据库中插入(1 MSSQL Server, 2 POSTGRY)。如果记录同时插入到两个数据库中,则两个数据库都应该被提交,否则两个数据库都应该被回滚。

谁能帮我,哪个IsolationLevel我必须设置在我的c#代码?目前我正在使用以下代码:

为SQL数据库,

var sqlTransactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.Serializable })

对于PostGry数据库,

var npgsqlTransactionScope = npgsqlConnection.BeginTransaction()

但这段代码有时会产生以下问题:

- process still waiting for ShareLock on transaction
- canceling statement due to statement timeout

哪个IsolationLevel最适合在TransactionScope中成功处理我的数据

可以使用隔离级快照来避免/减少数据库/表的锁定。详情请参阅这里的链接。应该为此隔离级别配置数据库。