Я видел, как несколько человек звонили, SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
прежде чем читать системные DMV. Есть ли какая-либо причина для этого, если вы не смешиваете вызовы к DMV и таблицам в одной транзакции?
sql-server
dmv
Джеймс Л
источник
источник
sys.dm_exec_query_stats
кsys.dm_exec_sql_text
иsys.dm_exec_query_plan
.Ответы:
Когда один из ребят так пишет демо-запросы DMV, я объясню почему.
Имеет ли значение, что вы запрашиваете только DMV? Нет. Но рано или поздно вы возьмете один из ваших сценариев DMV и присоединитесь к sys.databases или sys.tables или другому системному объекту, чтобы получить больше информации о том, на что вы смотрите. Если вы не прочитали незафиксированные данные там, вы можете заблокировать другие запросы и заблокировать другие запросы. Меня это постоянно сжигало, поэтому я просто использую READ UNCOMMITTED по умолчанию всякий раз, когда выполняю какую-либо диагностическую работу.
источник
OBJECT_ID()
,SCHEMA_NAME()
и т. Д.Я не вижу, что это имеет значение.
Если я попробую следующее и сравню выходные данные блокировки для обоих уровней изоляции в winmerge, они абсолютно одинаковы (и даже установка этого значения
SERIALIZABLE
не изменит выход).источник