Форматирование работ правильно даже, не имея необходимость к раунду:
"%.1f" % n
Повторная публикация этого ответа:
NOLOCK
означает полное отсутствие блокировок.
Ваш запрос может возвращать части данных по состоянию на ОБНОВЛЕНИЕ
и его части после ОБНОВЛЕНИЕ
в одном запросе .
Например, дебет без кредита и тому подобное.
Например, я только что запустил это запрос к большой таблице:
SELECT SUM(LEN(name))
FROM master WITH (NOLOCK)
OPTION (MAXDOP 1)
---
18874367
Все имя
имеют длину 1
.
Затем я повторно запустил его и в середине запроса обновил таблицу:
UPDATE master
SET name = 'tt'
WHERE id <= 10000
SELECT SUM(LEN(name))
FROM master WITH (NOLOCK)
OPTION (MAXDOP 1)
---
18874944
Как мы видим, этот запрос обнаружил 577
строк как обновленные (длина 2
), все остальные строки как не обновленные (длина 1
).
SELECT SUM(LEN(name))
FROM master WITH (NOLOCK)
OPTION (MAXDOP 1)
---
18884367
И этот запрос, запущенный сразу после завершения предыдущего, видит все обновления.
Примеры см. По этой ссылке.
http://blogs.msdn.com/davidlean/archive/2009 /04/06/sql-server-nolock-hint-other-poor-ideas.aspx
Недавно я потратил много времени, выясняя некоторое время и блокируя проблемы для процесса построения хранилища данных. Как оказалось, из-за того, что данные для загрузки хранилища предназначены только для чтения, я добавил подсказки nolock к запросам исходных данных для etl, чтобы снизить потребность в эскалации блокировки на сервере sql и предотвратить сбой нагрузки etl. . Для этого у меня было очень мало контроля над сервером sql и приложением. Опять же, это было целевое решение, и я не рекомендую широко использовать какие-либо подсказки в запросах как общее правило. Как и во всех тестах и обзорах производительности, есть ключевые области, на которые следует обратить внимание, чтобы определить, в чем заключается проблема, и как лучше всего ее решить.