Sql Server ISO LATION LEVELの3パターンを修正
1413 ワード
なぜISO LATION LEVELを変更するのかというと、デフォルトのSQLで使用されているISO LATIONレベルがRead Commitedであるため、共有ロックが発生し、パフォーマンスに影響を与え、updateと競合したり、デッドロックが発生したりすることがあります.しかし、すべてのqueryがisolationレベルをread uncommittedに変更する必要はありません.dirty readをもたらすからです.nolocksql queryは、次の3つの方法で追加できます.
Sql statement :
https://msdn.microsoft.com/en-sg/library/ms173763.aspx
For Entity framework :
最近実行されたSQLのISO LATION LEVELを検索する方法:
ここで、SPIDはSQL PROFILERから入手可能である.
SELECT xxx FROM table XXX nolock .
Sql statement :
SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SNAPSHOT
| SERIALIZABLE
}
[ ; ]
https://msdn.microsoft.com/en-sg/library/ms173763.aspx
For Entity framework :
using (var t = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions {
IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
}))
{
// query
}
最近実行されたSQLのISO LATION LEVELを検索する方法:
SELECT CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'Read Uncommitted'
WHEN 2 THEN 'Read Committed'
WHEN 3 THEN 'Repeatable Read'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL ,session_id, login_time,login_name,logical_reads,[status]
,[text_size]
FROM sys.dm_exec_sessions
where session_id = 'SPID'
order by login_time desc
ここで、SPIDはSQL PROFILERから入手可能である.