DMV를 읽을 때 READ UNCOMMITTED 설정


12

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED시스템 DMV를 읽기 전에 여러 사람이 전화하는 것을 보았습니다 . 동일한 트랜잭션에서 DMV 및 테이블에 대한 호출을 혼합하지 않는다고 가정 할 때이 작업을 수행 할 이유가 있습니까?


1
특정 DMV를 염두에두고 있습니까? (최근에 내가 알았던 예는 여기 sqlskills.com/blogs/jonathan/… )
Martin Smith

조나단이 그렇게하고 있기 때문에 어떤 상황에는 이유가있을 것 같습니다. ☺ 문제는 가입 쿼리에서 그것을보고 있었다 물어 내게 묻는 메시지가 무엇 sys.dm_exec_query_statssys.dm_exec_sql_textsys.dm_exec_query_plan.
James L

답변:


11

그 중 한 명이 데모 DMV 쿼리를 그런 식으로 작성하면서 이유를 설명하겠습니다.

DMV 쿼리 하는 것이 중요합니까 ? 아니요. 그러나 조만간 DMV 스크립트 중 하나를 사용하여 sys.databases 또는 sys.tables 또는 다른 시스템 개체에 조인하여보고있는 내용에 대한 자세한 정보를 얻을 수 있습니다. 커밋되지 않은 읽기가 없으면 다른 쿼리에 의해 차단되고 다른 쿼리를 차단할 수 있습니다. 나는 그것에 반복해서 불에 탔다. 그래서 나는 진단 작업을 할 때마다 기본적으로 READ UNCOMMITTED를 사용한다.


1
@MartinSmith 시간이 걸렸지 만 결국에는 격리 수준을 무시하는 메타 데이터 함수 수 에 대해 블로그를 작성했습니다 . 나는 많은 코드를 정리하려고했지만, 아무것도는 오히려 같은 내장 기능보다 조인 선호 이후 개발 한 새 OBJECT_ID(), SCHEMA_NAME()
아론 버트 랜드

7

나는 그것이 차이를 만드는 것을 보지 못합니다.

다음을 시도하고 winmerge의 두 격리 수준에 대한 잠금 출력을 비교하면 정확히 동일 SERIALIZABLE하며 출력을 변경하지 않아도됩니다.

/*Do once so compilation and caching out the way*/
EXEC('select st.text, qp.query_plan, cp.cacheobjtype, cp.objtype, cp.plan_handle
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp')

DBCC TRACEON(1200,3604,-1);

SET TRANSACTION ISOLATION LEVEL READ COMMITTED
PRINT 'READ COMMITTED'
EXEC('select st.text, qp.query_plan, cp.cacheobjtype, cp.objtype, cp.plan_handle
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp')


SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
PRINT 'READ UNCOMMITTED'
EXEC('select st.text, qp.query_plan, cp.cacheobjtype, cp.objtype, cp.plan_handle
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp')

DBCC TRACEOFF(1200,3604,-1);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.