簡體   English   中英

如何在Grails中指定默認事務隔離級別

[英]How to specify default transaction isolation level in Grails

我無法弄清楚如何在Grails應用程序中指定默認事務隔離級別。 請幫忙指出我的錯誤。 以下是詳細信息。

Grails:1.3.7

數據庫:Sql Server 2008。

DataSource.groovy的:

dataSource {
  ...
  driverClassName = "net.sourceforge.jtds.jdbc.Driver"
  dialect = org.hibernate.dialect.SQLServerDialect
  defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
}

hibernate {
  ...
  connection.isolation = java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
}

然后我瀏覽應用程序並同時執行以下查詢:

SELECT session_id, host_name, program_name, login_name, status, transaction_isolation_level
FROM sys.dm_exec_sessions
WHERE host_name IS NOT NULL AND login_name = 'cm'
ORDER BY host_name, program_name

返回:

session_id  host_name   program_name    login_name  status  transaction_isolation_level
61          ANDREYK-WS  jTDS            cm          running 2

2表示READ_COMMITTED。 我希望看到1,即READ_UNCOMMITTED。

如果我明確指定:@Transactional(isolation = Isolation.READ_UNCOMMITTED)

上面的查詢按預期返回1。 但是,我不想在我的應用程序中歸因所有服務。 我錯過了什么?

這需要在數據源配置的屬性屬性下設置,即

dataSource {
  ...
  driverClassName = "net.sourceforge.jtds.jdbc.Driver".
  dialect = org.hibernate.dialect.SQLServerDialect
  properties {
    defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_UNCOMMITTED.
  }
}

由於我有多個DS,因此我有一點變化

在數據源的頂部定義共享的屬性映射(將其調整到您的環境):

def defaultConnectionProperties =  [
    maxActive: 50,
    maxIdle: 25,
    minIdle: 5,
    initialSize: 5,
    minEvictableIdleTimeMillis: 60000,
    timeBetweenEvictionRunsMillis: 60000,
    maxWait: 10000,
    defaultTransactionIsolation: java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
]

然后每個DS都是這樣的:

dataSource {
    pooled = true
    driverClassName = "net.sourceforge.jtds.jdbc.Driver"
//    driverClassName = "com.p6spy.engine.spy.P6SpyDriver" // use this driver to enable p6spy logging
    //readOnly = "true"
    properties = defaultConnectionProperties
}

重新啟動Grails應用。

奇怪的是我看到了初始化的transaction_isolation_level = 2,但是當我真正點擊數據庫時,似乎設置了連接屬性並且它會輕彈到1。

您還可以檢查:grailsApplication.config並查找數據源並確認其中的設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM