NOLOCK по сравнению с уровнем изоляции транзакции

Во-первых, подсказка apple-mobile-web-app-capable должна быть установлена ​​для того, чтобы это работало. Эта подсказка заставляет веб-приложение работать в полноэкранном режиме: оно удаляет адресную строку и кнопки навигации, которые вы получаете по умолчанию в Mobile Safari. Удаленные области выделены красным здесь:

apple mobile web app capable

Итак, когда приложение находится в полноэкранном режиме (то есть пользователь добавил сайт на свою домашнюю страницу) ), вы также можете контролировать цвет оставшейся тонкой строки состояния в верхней части страницы с помощью apple-mobile-web-app-status-bar-style, выделенного красным здесь:

apple mobile web app status bar style

В соответствии с документы:

Если для содержимого установлено значение default, строка состояния выглядит нормально. Если установлено значение black, строка состояния имеет черный фон. Если установлено значение black-translucent, строка состояния будет черной и полупрозрачной. Если установлено значение по умолчанию или черный, веб-контент отображается под строкой состояния. Если установлено значение black-translucent, веб-контент отображается на весь экран, частично скрытый строкой состояния.

Несколько предостережений:

  1. Это работает только на первой странице, которую вы загружаете; любая навигация на другую страницу вызовет появление адресной строки и кнопок навигации. Поэтому, если вы хотите, чтобы это работало, вы должны создать одностраничный веб-сайт (для нескольких «страниц» рассмотрите подход загрузки Ajax-страниц, такой как тот, который используется в инфраструктуре jQuery Mobile).

  2. Это работает, только когда вы заходите на веб-страницу с помощью ярлыка приложения; , если вы переходите на веб-сайт непосредственно из Mobile Safari, это не имеет никакого эффекта.

19
задан Jason 19 June 2009 в 15:40
поделиться

4 ответа

Это одно и то же, только с разной областью действия. NOLOCK устанавливается для каждой таблицы и SET Transaction ... может быть размещен как блок.

22
ответ дан 30 November 2019 в 03:53
поделиться

Они имеют тот же эффект, только один используется как подсказка блокировки (nolock), а другой используется для области соединения.

Будьте осторожны с любым из них - грязное чтение может быть очень плохой вещью в зависимости от вашего приложения. Повторное чтение одной и той же записи или ее пропуск из-за перемещения страницы может сбить с толку пользователей ...

1
ответ дан 30 November 2019 в 03:53
поделиться

NOLOCK - это подсказка запроса и, как таковая, применяется только к конкретной таблице в запросе, в котором она указана.

Установка уровня изоляции транзакции применяется ко всему коду, выполняемому с этого момента в пределах текущее соединение или до тех пор, пока оно не будет явно изменено.

Чтобы уточнить, функционально уровень изоляции на работе тот же, однако охват, который охватывается, может не быть.

6
ответ дан 30 November 2019 в 03:53
поделиться

См. ответ , полученный несколько часов назад, на вопрос SQL Server SELECT, вызывающий блокировку .

Цитата Ремуса Русану :

SELECT может блокировать обновления. Правильно спроектированная модель данных и запрос вызовут лишь минимальную блокировку и не будут проблемой. «Обычная» подсказка WITH NOLOCK почти всегда является неправильным ответом. Правильный ответ - настроить ваш запрос так, чтобы он не сканировал огромные таблицы.

Если запрос не настраивается, вы должны сначала рассмотреть уровень SNAPSHOT ISOLATION, во-вторых, вам следует подумать об использовании SNAPSHOTS БАЗЫ ДАННЫХ, и последний вариант должен быть DIRTY READS (и является лучше изменить уровень изоляции, чем использовать NOLOCK HINT). Обратите внимание, что грязное чтение, как ясно указано в названии, будет возвращать несогласованные данные (например, ваш общий лист может быть несбалансированным).

4
ответ дан 30 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: