标签: isolation-level

默认SQL Server IsolationLevel更改

我们的客户遇到了数据库应用程序的一些阻塞问题.我们要求他们运行阻塞进程报告跟踪,他们给我们的跟踪显示在SELECT和UPDATE操作之间发生阻塞.跟踪文件显示以下内容:

  • 在不同的隔离级别执行相同的SELECT查询.一条跟踪显示Serializable IsolationLevel,而后一条跟踪显示RepeatableRead IsolationLevel.执行查询时,我们不使用显式事务.
  • 正在使用RepeatableRead隔离级别执行UPDATE查询,但SELECT查询正在阻止该查询.这是预期的,因为我们的更新包含在使用RepeatableRead的IsolationLevel的显式事务中.

所以基本上我们不知道为什么SELECT查询的隔离级别不是默认的ReadCommitted IsolationLevel,更令人困惑的是,为什么查询的IsolationLevel会随着时间的推移而改变?只有一个客户看到此行为,因此我们怀疑它可能是数据库配置问题.

有任何想法吗?

提前致谢,

格雷厄姆

sql-server-2005 isolation-level

4
推荐指数
1
解决办法
9896
查看次数

mySQL - 使用PHP的mysqli设置隔离级别

如何使用mysqli在PHP中将事务的隔离级别设置为"SERIALIZABLE"?我到处寻找,我找不到任何有关它的信息.

以下是隔离级别的说明.

php mysql innodb transactions isolation-level

4
推荐指数
1
解决办法
4090
查看次数

TRANSACTION ISOLATION LEVEL REPEATABLE在SQL Server中读取

使用SET TRANSACTION ISOLATION LEVEL REPEATABLE READ时有哪些风险或性能下降?

我们有一些从BizTalk服务调用的SP.我们有时会遇到僵局.如果我们改变隔离级别,有哪些风险和可能的性能退化?

sql-server biztalk isolation-level

4
推荐指数
1
解决办法
2559
查看次数

LINQ + TransactionScope不会更改SQL Server Profiler中的隔离级别

我正在使用以下格式使用linq将更改提交到我的数据库.

Begin Transaction (Scope Serialized, Required)
    Check Business Rule 1...N
    MyDataContext.SubmitChanges()
    Save Changes Done In Previous Query To Log File
End Transaction Scope
Run Code Online (Sandbox Code Playgroud)

但是在SQL Server探查器中,我在Connection:Start中看到以下行.

set transaction isolation level read committed
Run Code Online (Sandbox Code Playgroud)

我经历了这个(http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/93a45026-0425-4d49-a4ac-1b882e90e6d5)并认为我得到了答案;

直到我在Microsoft Connect上看到这个(https://connect.microsoft.com/VisualStudio/feedback/details/565441/transactionscope-linq-to-sql?wa=wsignin1.0).

有人可以告诉我,我的代码是否实际在序列化隔离级别下执行,或者它是否只是在read committed下运行?

transactions sql-server-profiler isolation-level sql-server-2008 linq-to-sql

4
推荐指数
1
解决办法
3803
查看次数

JBoss TreeCache的并发策略配置为二级Hibernate缓存

我正在使用JBoss EAP 4.3.

当我使用内置的JBoss TreeCache作为Hibernate的二级缓存时,我正在研究并发策略的不同选项.我已经设置好了,我已经通过查看日志验证了缓存是否正常工作,但我不确定实际使用的是什么并发策略以及它是如何工作的.

对于每一个实体,我可以设置下面的"用法"的价值观之一,在@Cache注释:NONE,READ_ONLY,NONSTRICT_READ_WRITE,READ_WRITE,TRANSACTIONAL.

在另一方面,在我的JBossTreeCache配置文件,我可以设置IsolationLevel为整个高速缓存执行下列操作之一:NONE,READ_UNCOMMITTED,READ_COMMITTED,REPEATABLE_READ,SERIALIZABLE(或者只是使用OPTIMISTIC).

在一次查看配置选项时,文档非常清楚,但我想知道当您组合不同选项时会发生什么.

例如,如果你设置@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)一个实体,但配置NONEIsolationLevelJBossTreecache,会发生什么?

我也相信,JBossTreeCache只有支持NONE,READ_ONLY以及TRANSACTIONAL使用情况,但什么IsolationLevel是你允许他们结合?如果您使用例如会发生什么NONSTRICT_READ_WRITE

总而言之,这里应该有5x6种不同的组合,但并非所有组合都有意义.

anyoone可以帮我整理一下吗?

jboss hibernate transactions isolation-level jboss-cache

4
推荐指数
1
解决办法
2118
查看次数

从SQLite数据库读取未提交的更改

我编写了一个应用程序(在C ++中使用Qt),该应用程序将数据插入SQLite数据库。另一个应用程序从同一数据库读取数据,但是我注意到无法读取未提交的数据。我希望即使尚未提交数据也能够读取数据。

阅读SQLite文档后,我发现杂物read_uncommitted,据我所知应该是我所需要的。问题是,即使将其设置为true,也无法获得未提交的数据。

我试图运行执行插入过程的应用程序,同时启动sqlite3客户端。我将编译指示设置为true,然后尝试计算表中的记录。我得到的始终为0(在插入过程开始之前数据库为空),直到整个过程完成为止,我立即获得了所有数据。

难道我做错了什么?难道这不应该使sqlite3客户端的行为有所不同吗?

database sqlite isolation-level

4
推荐指数
1
解决办法
3481
查看次数

显示隔离级别

是否可以显示Sybase Adaptive Server Enterprise 12.5.4中设置的当前隔离配置?

如果是这样,那我怎么显示它?

isolation-level sybase-ase

4
推荐指数
1
解决办法
2973
查看次数

TransactionScopeAsyncFlowOption和Isolation Level?

我在WCF服务中使用Entity Framework 6.1并希望用READ UNCOMMITTED隔离级别包围我的SELECT查询,因为其他批量更新将插入到我正在阅读的表中,并且不希望锁定那些批量更新当在表上执行READ时.这基本上模拟了SELECT WITH NOLOCK.

此代码也以异步方式使用.因此,我不能简单地使用TransacactionScope.请注意,我也在使用.Net 4.5.1框架.

我可以将TransactionScope上的隔离级别设置为ReadUncommitted,但TransactionScopeOption的默认值为ReadCommitted.我没有看到任何改变隔离级别的方法.

有没有办法改变隔离级别?如果我无法设置隔离级别,我的查询是否可以在上述情况下运行.

实际上,如果我不能将隔离级别设置为"NOLOCK",则我甚至不需要包含TransactionScopeAsyncFlowOption.

wcf entity-framework asynchronous-wcf-call isolation-level c#-5.0

4
推荐指数
1
解决办法
1380
查看次数

在eclipselink中设置隔离级别

我想使用eclipse链接设置隔离级别,
我尝试了这两种方法:

  1. java.sql.Connection中

    mgr = EMF.get().createEntityManager();
    tx = mgr.getTransaction();
    tx.begin();
    
    java.sql.Connection connection = mgr.unwrap(java.sql.Connection.class);
    connection.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_COMMITTED);
    System.out.println("Connection: "+connection.getTransactionIsolation());
    //prints TRANSACTION_READ_COMMITED as expected
    
    org.eclipse.persistence.sessions.DatabaseLogin databaseLogin = new DatabaseLogin();
    System.out.println("DatabaseLoging: "+databaseLogin.getTransactionIsolation());
    //prints -1, representing transaction isolation is not set
    
    Run Code Online (Sandbox Code Playgroud)
  2. DatabaseLogin setTransationIsolation方法

    mgr = EMF.get().createEntityManager();
    tx = mgr.getTransaction();
    tx.begin();
    
    org.eclipse.persistence.sessions.DatabaseLogin databaseLogin = new DatabaseLogin();
    databaseLogin.setTransactionIsolation(DatabaseLogin.TRANSACTION_READ_COMMITTED);
    System.out.println("DatabaseLoging: "+databaseLogin.getTransactionIsolation());
    //prints TRANSACTION_READ_COMMITED as expected
    
    java.sql.Connection connection = mgr.unwrap(java.sql.Connection.class);
    System.out.println("Connection: "+connection.getTransactionIsolation());
    //prints TRANSACTION_REPEATABLE_READ
    
    Run Code Online (Sandbox Code Playgroud)

如您所见,getTransacationIsolation()方法的返回值之间存在一些不一致.我的问题是,在两种情况下都确实设置了哪种事务隔离?我知道默认情况下eclipse链接使用不同的连接进行读写操作,DatabaseLogin.setTransactionIsolation应该为两个连接设置隔离级别,那么为什么Connection.getTransactionIsolation仍然返回另一个隔离级别?

我正在使用应用程序范围的EntityManager,JPA 2.0,EclipseLink 2.5.2.
如果有更好的方法设置事务隔离,请告诉我.

jpa eclipselink isolation-level

4
推荐指数
1
解决办法
2498
查看次数

有没有一种方法只能在dapper中读取UNCOMMITTED行?

我已经将隔离级别设置为IsolationLevel.ReadUncommitted是否可以仅提取未提交的数据?是否无需手动更改要调用的存储过程?

以下是仅用于提取未提交数据的脚本:

SELECT * FROM Users.[User]
 EXCEPT
SELECT * FROM Users.[User] WITH (READCOMMITTED, READPAST)
Run Code Online (Sandbox Code Playgroud)

c# transactions dbconnection isolation-level dapper

4
推荐指数
1
解决办法
1219
查看次数