Нажмите "Enter", чтобы перейти к содержанию

Блокировка страницы: Sorry, this page can’t be found.

Содержание

: Технологии и медиа :: РБК

Страницу вакцины пытались взломать, сообщили в Twitter. Попытки взлома исходили из американского штата Вирджиния. За время блокировки учетной записи на нее подписались почти 2 тыс. пользователей

Фото: Сергей Киселев / АГН «Москва»

Администрация сервиса микроблогов Twitter спустя час после блокировки аккаунта российской вакцины против коронавируса COVID-19 «Спутник V» сняла ограничения на доступ к странице.

На нее снова можно беспрепятственно зайти. Ранее при попытке попасть на страницу высвечивалось уведомление следующего содержания: «Вы видите это предупреждение, поскольку от имени этой учетной записи выполнялись необычные действия».

В новом твите «Спутника V» говорится, что руководство соцсети временно ограничило доступ к странице из-за возможной попытки взлома, которая совершалась из американского штата Вирджиния. Владельцы аккаунта поблагодарили администрацию Twitter за своевременную реакцию на попытку взлома.

О блокировке страницы «Спутника V» в пресс-службе Российского фонда прямых инвестиций (РФПИ) сообщили примерно в 20:30 мск. Причины произошедшего не назывались. В фонде отметили, что в аккаунте публиковалась «открытая и прозрачная» информация о вакцине, а также попросили всех подписчиков обратиться к администрации сервиса с просьбой разблокировать учетную запись.

Медведев допустил угрозу блокировки его страниц в зарубежных соцсетях

Заместитель председателя Совета безопасности РФ Дмитрий Медведев заверил, что угроза блокировки его соцсетей не влияет на их содержание. Об это он заявил в интервью российским СМИ, комментируя тему политики западных соцсетей в отношении ряда пользователей. Кроме того, Медведев отметил, что блокировка — палка о двух концах.

«Вот в чем и проблема-то, если бы, например, блокировка или какие-то иные решения, маркировка о том, что это непроверенные данные, осуществлялись на основании закона, пусть даже он нам не нравится, но с этим не поспоришь — «вот у нас есть закон, мы обязаны это сделать», — пояснил он. Но зарубежные соцсети, по словам зампреда Совбеза, действуют на основании внутренних регламентов, корпоративных документов, пользовательских договоров.

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

«Конечно, могут заблокировать, никаких сомнений», — сказал Медведев.

При этом он отметил, что на содержание его сообщений в соцсетях такая угроза никак не влияет, более того, он признался, что таким образом «проверяет» эти соцсети.

Зампред Совбеза также посетовал на маркировку его аккаунта в Twitter как государственного.

«Мой аккаунт, как и аккаунты ряда других людей, замаркирован сейчас как государственный. При том, что вообще-то я там не регистрировался как государственное лицо, и он даже не связан с моей прямой деятельностью. Но они так посчитали правильным сделать», — рассказал он.

По его словам, соцсети принимают подобные решения по маркировке аккаунтов к пользователям из «стран, с которыми не очень простые отношения».

Отметим, что у Дмитрия Медведева есть несколько аккаунтов в различных соцсетях, в том числе в Facebook и Twitter .

Захарова: Роскомнадзор будет опираться на закон, рассматривая блокировку западных страниц — Политика

МОСКВА, 8 февраля. /ТАСС/. Роскомнадзор будет опираться на имеющееся в России законодательство в сфере регулирования интернет-пространства, рассматривая возможность блокировки западных страниц в соцсетях. Об этом в интервью ТАСС заявила официальный представитель МИД РФ Мария Захарова.

«Блокировки, регулирование интернет-среды — это Роскомнадзор и соответствующее российское законодательство, на основе которого все это осуществляется. Там четко прописаны критерии. И еще хочу сказать, что отличие нашей страны, в том числе на этом направлении, в том, что у нас есть законы, на которые опираются и Роскомнадзор, и правоохранительные органы с точки зрения квалификации действий в интернет-пространстве», — сказала Захарова, отвечая на вопрос о наличии технических и юридических инструментов для блокировки страниц посольства США в соцсетях, в случае если практика публикации политических сообщений о несанкционированных протестах в России будет продолжаться.

Дипломат сравнила российский подход с западной практикой, где «теперь блокируют аккаунты, вообще никому ничего не объясняя». «Если раньше это хотя бы называлось модерацией, и рассказывали о том, что есть некоторое критическое количество пользователей, которые требуют заблокировать тот или иной аккаунт или наложить какие-то ограничительные меры временного характера на те или иные страницы, то сегодня никто ничего не объясняет модерацией. Все просто говорят о том, что больше такому аккаунту не жить, больше такому политическому деятелю, журналисту, телевизионному аккаунту не существовать на платформе социальной сети — без закона, без решения суда, без опоры на какую-либо профильную организацию в сфере журналистики, СМИ, свободы слова и так далее», — добавила она.

В то же время МИД не может оставаться в стороне от политических акций, которые позволяют себе зарубежные дипломаты и посольства, указала Захарова. «Это скоординированная акция: и публикация несуществующих маршрутов несанкционированных митингов, и политическая поддержка со стороны внешнеполитических ведомств и даже глав государств. И апогеем стало участие дипломатов непосредственно в несанкционированных мероприятиях.

Вы знаете, чем это закончилось: высылкой дипломатов трех стран. Этот перформанс был на самом деле дипломатическим флешмобом, который они устроили в связи с посещением заседания суда над Навальным», — отметила официальный представитель МИД.

Захарова подчеркнула, что российская внешнеполитическая служба не позволяет себе подобных действий. «И еще очень интересный факт: ведь они же себе этого не позволяют в отношении своих резонансных случаев с участием политиков, общественных деятелей и журналистов. Ведь вы же такого никогда не увидите ни в отношении [основателя Wikileaks Джулиана] Ассанжа, которого даже спецдокладчик ООН по вопросам пыток признал жертвой этих самых пыток. Только ленивый или человек вообще не интересующийся его судьбой не видит, что над человеком не просто глумились, а издевались и по большому счету пытали», — добавила она.

Ранее послу США в РФ Джону Салливану был заявлен протест в связи с размещением американским посольством в Москве сообщений в социальных сетях в поддержку незаконных акций в ряде российских городов 23 января. Как неприемлемый был квалифицирован комментарий официального представителя Госдепа США о событиях в этот день. До сведения посла доведено, что российская сторона рассматривает данные действия как прямое вмешательство во внутренние дела России и призывает соблюдать законодательство РФ и дипломатические нормы.

Блокировка содержимого | Справка Firefox

Эта статья относится к более старым версиям Firefox.

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

В некоторых случаях блокировка этого контента позволяет страницам загружаться быстрее, но может повлиять на функциональность страницы. Вы можете легко отключить блокировку на сайтах, которым доверяете. Вы также можете настроить ваши предпочтения по блокировке контента, чтобы блокировать больше или меньше трекеров.

Блокировка контента — это набор функций конфиденциальности Firefox, которые защищают вас от угроз и неприятностей в Интернете. Она включает в себя защиту от трекеров, которые собирают ваши данные о просмотре на многих сайтах. Начиная с Firefox версии 67, вы также можете блокировать вредоносные скрипты, включая криптомайнеры и фингерпринтеры. Эти средства защиты конфиденциальности в основном невидимы, но вы будете знать, что они работают, когда увидите значок щита слева в адресной строке.

В некоторых случаях блокировка этого содержимого позволяет загружаться страницам быстрее, но может повлиять на функциональность страниц. Отключить блокировку сайтов, которым вы доверяете, просто. Вы можете также изменить вручную настройки блокировки содержимого, чтобы блокировать больше или меньше трекеров.

Пожалуйста, обратите внимание, что в этом видео показывается старая версия Firefox. Показываемые скриншоты могли измениться.

  • Трекеры: Трекинг в основном относится к содержимому, кукам или скриптам, которые могут собирать вашу информацию о посещениях различных сайтов. Firefox блокирует трекеры в приватных окнах по умолчанию. Выберите вариант
    Строгая
    или Персональная для блокировки трекеров во всех окнах.
  • Сторонние отслеживающие куки: Сторонние куки установлены веб-сайтом, отличным от того, на котором вы находитесь в данный момент. Рекламодатели обычно используют сторонние куки, чтобы следить за вами по разным веб-сайтам и нацеливать на вас рекламу. Начиная с версии 69 Firefox будет блокировать сторонние отслеживающие куки для всех по умолчанию.
  • Сборщики цифровых отпечатков: Эти скрипты собирают информацию о вашем браузере и конфигурации устройства, например, вашу операционную систему, разрешение экрана и другие настройки. Собирая эти разрозненные данные в целое, сборщики цифровых отпечатков формируют ваш уникальный профиль, который может быть использован для отслеживания вас в Сети. Сбор цифровых отпечатков противоречит политике Firefox против отслеживания. Установите переключатель на Строгая или Персональная, чтобы заблокировать сбор цифровых отпечатков в Firefox 69.
  • Криптомайнеры: Скрипты криптомайнинга используют ваш центральный процессор (CPU), для того, чтобы незаметно майнить криптовалюту. Эти скрипты замедляют ваш компьютер и расходуют батарею. Криптомайнеры по умолчанию заблокированы в Firefox 69.

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

Чтобы скорректировать ваши настройки:

  1. Щёлкните по кнопке меню .
  2. Щёлкните по .
    Это переведёт вас к разделу Блокировка содержимого на панели «Приватность и Защита» ваших Настройки Firefox.
  3. Выберите ваши настройки блокировки содержимого:
  • Стандартная: Блокирует только известные трекеры в приватных окнах, сторонние отслеживающие куки и криптомайнеры. Это настройка по умолчанию. Чтобы восстановить настройки по умолчанию в любое время, выберите Стандартная.
  • Строгая: Блокирует известные трекеры во всех окнах, сторонние отслеживающие куки, сборщики цифровых отпечатков и криптомайнеры.
  • Персональная: Позволяет вам выбирать, что блокировать. Здесь вы также можете полностью отключить блокировку содержимого с помощью варианта Персональная.

Вы также можете настроить Firefox на отправку сигнала Не отслеживать веб-сайтам. Прочитайте статью Как мне включить функцию «Не отслеживать»?.

Пользовательские настройки

Агрессивная Защита

  1. Выберите Персональная.
  2. В выпадающем списке справа выберите .
  3. Выберите ссылку Сменить список блокировки.
    Отобразится всплывающее окно Списки блокировки.
  4. Выберите Список блокировки 2-го уровня. Блокировать все обнаруженные трекеры. Некоторые веб-сайты или содержимое могут не загружаться.
  5. Щёлкните по Сохранить изменения.
  6. Отметьте флажок Куки, если он ещё не отмечен.
    отмечены по умолчанию. Выберите более агрессивную защиту от куков из выпадающего списка, например, блокировку всех сторонних куков или даже блокировку всех куков.
  7. Отметьте флажок Криптомайнеры.
  8. Отметьте флажок Сборщики цифровых отпечатков.
  9. Щёлкните по кнопке Обновить все вкладки, чтобы применить эти изменения на всех ваших открытых вкладках.

Отключение всей защиты

Вы можете также отключить всю защиту, предлагаемую блокировкой содержимого, что является фактически отключением этой функции.

  1. Выберите вариант Персональная.
  2. Снимите флажок Трекеры.
  3. Снимите флажок Куки.
  4. Снимите флажок Криптомайнеры.
  5. Снимите флажок Сборщики цифровых отпечатков.
  6. Щёлкните по кнопке Обновить все вкладки, чтобы применить эти изменения на всех ваших открытых вкладках.

Когда Firefox блокирует содержимое на веб-сайте, значок щита отображается в вашей адресной строке.

Нажмите на значок щита или значок информации , чтобы раскрыть панель Центра управления. Просмотрите раздел «Блокировка контента». Здесь представлено больше информации о типах содержимого, которое блокирует Firefox, такого как определяемые трекеры и трекеры, установленные сторонними куками.

Заблокированное содержимое будет зависеть от веб-сайта и ваших настроек. Нажмите на стрелку «>» справа от Трекеры и Куки, чтобы узнать, какое содержимое было заблокировано или разрешено на конкретном сайте, на котором вы находитесь.

Заблокированное содержимое будет помечено как Заблокировано и выделено серым цветом.

Иногда блокировка содержимого может препятствовать частичной или полной загрузке страниц. Если блокировка содержимого мешает вашей работе, вы можете отключить её на отдельных сайтах. Значок щита появляется в адресной строке, когда Firefox активно блокирует содержимое на странице.

  1. Нажмите на значок щита или значок информации , чтобы раскрыть панель Центра управления.
  2. Щёлкните по кнопке Отключить блокировку для этого сайта в обычном режиме просмотра, чтобы отключить блокировку для веб-сайта.
    Если вы находитесь в режиме Приватного просмотра, щёлкните по Временно отключить блокировку (смотрите ниже).
    Когда Блокировка содержимого отключена, в адресной строке отображается значок перечёркнутого щита . Чтобы снова включить блокировку содержимого, откройте Центр управления, нажав на значок щита или щёлкнув по кнопке информации о сайте , а затем щёлкните по кнопке Включить блокировку для этого сайта.

Поскольку Приватный Просмотр не сохраняет информацию о вашем сеансе просмотра, если вы отключите блокировку контента для сайта, она останется отключённой только во время текущего сеанса приватного просмотра. Когда вы начнёте новый сеанс приватного просмотра, ваши настройки блокировки контента будут восстановлены для всех сайтов. Если вы отключили блокировку контента для сайта в обычном окне просмотра, Firefox продолжит отключать блокировку контента для этого же сайта и в приватном окне.

По умолчанию Firefox использует список блокировки Disconnect.me 1-го уровня. Для более агрессивной защиты от отслеживания используйте список блокировки Disconnect.me 2-го уровня.

  • Уровень 1 блокирует широко известные аналитические трекеры, трекеры распространения в соцсетях, а также рекламные трекеры. Однако базовый список защиты пропускает некоторые известные трекеры содержимого, так что меньшее количество страниц будет отображаться неверно или не будет загружаться.
  • Уровень 2 блокирует все известные трекеры, включая аналитические трекеры, трекеры распространения в соцсетях, а также рекламные трекеры и трекеры содержимого. Строгий список будет приводить к невозможности просмотра некоторых видео, слайд-шоу из фотографий, а также к невозможности использования отдельных функций социальных сетей.

Изменение вашего списка блокировки

  1. Щёлкните по кнопке меню .
  2. Щёлкните по .
    Это приведёт вас к разделу Блокировка содержимого в панели Приватность и Защита настроек вашего Firefox.
  3. Выберите переключатель Настроить.
  4. Щёлкните по ссылке Сменить список блокировки.
  5. Выберите список блокировки, который хотите использовать.
  6. Щёлкните по Сохранить изменения.
  • Трекеры: Трекинг в основном относится к содержимому, кукам или скриптам, которые могут собирать вашу информацию о посещениях различных сайтов. Firefox блокирует трекеры в приватных окнах по умолчанию. Выберите вариант Строгая или Персональная для блокировки трекеров во всех окнах.
  • Сторонние отслеживающие куки: Сторонние куки установлены веб-сайтом, отличным от того, на котором вы находитесь в данный момент. Рекламодатели обычно используют сторонние куки, чтобы следить за вами по разным веб-сайтам и нацеливать на вас рекламу. Firefox в скором времени будет блокировать сторонние отслеживающие куки для всех по умолчанию. Мы постепенно развиваем эти механизмы защиты для всех пользователей.
  • Криптомайнеры: Скрипты криптомайнинга используют ваш центральный процессор (CPU), для того, чтобы незаметно майнить криптовалюту. Эти скрипты замедляют ваш компьютер и расходуют батарею. Блокируйте криптомайнеры с помощью варианта Строгая.
  • Сборщики цифровых отпечатков: Эти скрипты собирают информацию о вашем браузере и конфигурации устройства, например, вашу операционную систему, разрешение экрана и другие настройки. Собирая эти разрозненные данные в целое, сборщики цифровых отпечатков формируют ваш уникальный профиль, который может быть использован для отслеживания вас в Сети. Сбор цифровых отпечатков противоречит политике Firefox против отслеживания. Блокируйте сборщики цифровых отпечатков с помощью варианта Строгая.

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

Чтобы скорректировать ваши настройки:

  1. Щёлкните по кнопке меню .
  2. Щёлкните по .
    Это переведёт вас к разделу Блокировка содержимого, панели Приватность и Защита настроек вашего Firefox. Если ваш Firefox выглядит иначе, это потому, что мы постепенно внедряем защиту от сторонних отслеживающих куков для всех пользователей.
  3. Выберите ваши настройки блокировки содержимого:
  • Стандартная: Блокирует только известные трекеры в приватных окнах и сторонние отслеживающие куки. Это настройка по умолчанию. Чтобы восстановить настройки по умолчанию в любое время, выберите вариант Стандартная.
  • Строгая: Блокирует трекеры во всех окнах и отслеживание куками сторонних трекеров.
  • Персональная: Позволяет вам выбирать, что блокировать. Вы также можете полностью отключить блокировку содержимого с помощью варианта Персональная.

Вы также можете настроить Firefox на отправку сигнала Не отслеживать веб-сайтам. Узнайте больше в статье Как мне включить функцию «Не отслеживать»?.

Персональные настройки для агрессивной защиты

  1. Выберите Персональная.
  2. В выпадающем списке справа выберите .
  3. Выберите ссылку Сменить список блокировки.
    Появится всплывающее окно Список блокировки.
  4. Выберите .
  5. Щёлкните по Сохранить изменения.
  6. Поставьте флажок Куки, если он ещё не выбран.
    является настройкой по умолчанию. Выберите более агрессивную защиту от куков из выпадающего списка, например, блокировку всех сторонних куков или даже блокировку всех куков.
  7. Поставьте флажок Криптомайнеры.
  8. Поставьте флажок Сборщики цифровых отпечатков.
  9. Щёлкните по кнопке Обновить все вкладки, чтобы применить эти изменения на всех ваших открытых вкладках.

Отключение всей защиты

Вы можете также отключить всю защиту, предлагаемую Блокировкой содержимого, что является фактически отключением этой функции.

  1. Выберите вариант Персональная.
  2. Снимите флажок Трекеры.
  3. Снимите флажок Куки.
  4. Снимите флажок Криптомайнеры.
  5. Снимите флажок Сборщики цифровых отпечатков.
  6. Щёлкните по кнопке Обновить все вкладки, чтобы применить эти изменения на всех ваших открытых вкладках.

Когда Firefox блокирует содержимое на веб-сайте, значок щита отображается в вашей адресной строке.

Нажмите на значок щита или значок информации , чтобы раскрыть панель Центра управления. показывает раздел блокирования содержимого. Здесь представлено больше информации о типах содержимого, которое блокирует Firefox, такого как определяемые трекеры и трекеры, установленные сторонними куками.

Заблокированное содержимое будет зависеть от веб-сайта и ваших настроек. Нажмите на стрелку «>» справа от Трекеры и Куки, чтобы узнать, какое содержимое было заблокировано или разрешено на конкретном сайте, на котором вы находитесь.

Заблокированное содержимое будет помечено как Заблокировано и выделено серым цветом.

Иногда блокировка содержимого может препятствовать частичной или полной загрузке страниц. Если блокировка содержимого мешает вашей работе, вы можете отключить её на отдельных сайтах. Значок щита появляется в адресной строке, когда Firefox активно блокирует содержимое на странице.

  1. Нажмите на значок щита или значок информации , чтобы раскрыть панель Центра управления.
  2. Щёлкните по кнопке Отключить блокировку для этого сайта в обычном режиме просмотра, чтобы отключить блокировку для веб-сайта.
    Если вы находитесь в режиме приватного просмотра, щёлкните по кнопке Временно отключить блокировку (смотрите ниже).
    Когда Блокировка содержимого отключена, в адресной строке отображается значок перечёркнутого щита. Чтобы снова включить блокировку содержимого, откройте Центр управления, нажав на значок щита или щёлкнув по кнопке Информация о сайте , а затем щёлкните по кнопке Включить блокировку для этого сайта.

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

По умолчанию Firefox использует Базовый список Disconnect.me. Для более агрессивной защиты от слежения используйте Строгий список Disconnect.me.

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

Изменение вашего списка блокировки

  1. Щёлкните по кнопке меню .
  2. Выберите .
    Это переведёт вас к разделу Блокировка содержимого, панели Приватность и Защита настроек вашего Firefox.
  3. Выберите .
  4. Щёлкните по ссылке Сменить список блокировки.
  5. Выберите список блокировки, который хотите использовать.
  6. Нажмите на Сохранить изменения.

Изменение настроек веб-сайтов в Safari на компьютере Mac

Для чтения

  • Вкл. Автоматически включать режим «Для чтения» в Safari, чтобы отображать статьи на веб-сайте без рекламы и других отвлекающих элементов.

  • Выкл. По умолчанию не использовать «Для чтения» на этом сайте. (Можно включить режим «Для чтения» для отдельных статей на этом сайте вручную.)

Правила блокирования контента

  • Вкл. Не показывать рекламу и другой нежелательный контент на сайте.

  • Выкл. Не блокировать рекламу и другой нежелательный контент на сайте.

Автовоспроизведение

  • Всегда. Все видео на сайте могут воспроизводиться автоматически.

  • Только для файлов без звука. Только видео без звука будут воспроизводиться автоматически.

  • Никогда. Видео не будут воспроизводиться автоматически.

Масштаб страницы

Выбрать увеличение масштаба (в процентах), чтобы текст и изображения на сайте были лучше видны.

Камера

  • Спрашивать. Сайт должен запрашивать разрешение, чтобы использовать камеру на Mac.

  • Отказать. Сайт не может использовать камеру.

  • Разрешить Сайт всегда может использовать камеру.

Микрофон

  • Спрашивать. Сайт должен запрашивать разрешение, чтобы использовать микрофон на Mac.

  • Отказать. Сайт не может использовать микрофон.

  • Разрешить Сайт всегда может использовать микрофон.

Общий экран

  • Спрашивать. Сайт должен запрашивать разрешение, чтобы использовать камеру и микрофон на Mac.

  • Отказать. Сайт не может использовать камеру и микрофон.

Размещение

  • Спрашивать. Сайт должен запрашивать разрешение, чтобы использовать Вашу геопозицию.

  • Отказать. Сайт не может использовать Вашу геопозицию.

  • Разрешить Сайт всегда может использовать Вашу геопозицию.

Загрузки

  • Спрашивать. Сайт должен запрашивать разрешение, чтобы начать загрузку.

  • Отказать. Сайт не может выполнять загрузку на Ваше устройство.

  • Разрешить Сайт всегда может выполнять загрузку на Ваше устройство.

Уведомления

  • Разрешить Сайт всегда может отправлять Вам уведомления.

  • Отказать. Сайт не может отправлять Вам уведомления.

  • Разрешить веб-сайтам запрашивать разрешение на отправку уведомлений. При посещении веб-сайта, который может отправлять уведомления, отображается диалоговое окно с вопросом: хотите ли Вы их получать. Чтобы это диалоговое окно больше не открывалось, снимите этот флажок.

Всплывающие окна

Можно блокировать всплывающие окна, которые появляются при открытии или закрытии веб-страниц.

  • Блокировать и оповещать. Когда Вы открываете сайт, Safari отображает значок в поле смарт-поиска. Вы можете нажать этот значок, чтобы отобразить всплывающие окна.

  • Заблокировать. Сайт не может отображать всплывающие окна.

  • Разрешить Сайт может отображать всплывающие окна.

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

WebGL

  • Спрашивать. Вы увидите диалоговое окно с вопросом: разрешаете ли Вы сайту использовать WebGL.

  • Заблокировать. Сайт не может показывать содержимое WebGL.

  • Разрешить Сайт может использовать WebGL, кроме случаев, когда WebGL представляет угрозу безопасности компьютера.

  • Разрешать всегда. Сайт может использовать WebGL, даже если WebGL представляет критическую угрозу безопасности компьютера. Вариант «Разрешать всегда» создает определенные риски для безопасности, поэтому выбирать его следует только для тех веб-сайтов, которым Вы доверяете.

Параметр «WebGL» отображается только для компьютеров, на которых WebGL может представлять угрозу безопасности. Если этот параметр не отображается, сайт может отображать содержимое WebGL.

Веб-сайты, открытые в данный момент

Веб-сайты, открытые в окне или вкладке браузера Safari. Для некоторых из этих веб-сайтов уже может быть выбран вариант во всплывающем меню.

Настроенные веб-сайты

Список настроенных Вами веб-сайтов. Если список «Настроенные веб-сайты» пуст, Вы еще не настроили ни одного веб-сайта или очистили список.

Удалить

Удаление выбранного веб-сайта из списка настроенных веб-сайтов.

При посещении других веб-сайтов

Чтобы применить настройку к веб-сайту, для которого настройка еще не выбрана, нажмите это всплывающее меню и выберите нужный вариант.

Чтобы применить настройку ко всем веб-сайтам, убедитесь, что список «Настроенные веб-сайты» пуст (чтобы быстро очистить этот список, выберите веб-сайты и нажмите «Удалить»). Затем нажмите это всплывающее меню и выберите нужный вариант.

Блокировка/разблокировка карты

Финансовая безопасности наших клиентов и сохранность их средств — самое главное для нас. Поэтому при малейшем подозрении на возможность несанкционированного доступа к картам клиента выполняется их блокировка.

Ни для кого не секрет, что банковская карта может быть заблокирована как самим клиентом, так и сотрудниками банка. При этом мотивы клиента, как правило, очевидны — это потеря, кража карты, застревание в банкомате, пропажа (списание) средств или просто за ненадобностью. Банк может заблокировать по причинам:

  • Неправильно введенного пин-кода. Если вы трижды ошиблись при вводе пин-кода, карта автоматически блокируется.

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

  • Сообщения, поступившего в банк от сотрудника торгово-сервисной сети о том, что владелец карты забыл ее в магазине при оплате товаров и услуг. В таком случае банк блокирует карту самостоятельно.

Обратите внимание! В случае обнаружения пропажи карты или несанкционированного списания денежных средств со счета необходимо в первую очередь заблокировать данное платежное средство, а уже потом заниматься поиском и выяснением причин.

Заблокировать карту можно в интернет-банке «Альфа-Клик» со страницы «Карты», наведя курсор на поле с активной картой и нажав «Заблокировать». Также перейти к блокировке карты можно со страницы с подробной информацией о карте, либо выбрав в главном меню «Мои карты» — «Блокировать карту».

После блокировки карты вы сможете разблокировать её со страницы «Карты», наведя курсор на поле с заблокированной картой и нажав «Разблокировать». Если карта заблокирована службой финансового, то понадобится еще и подтвердить последние операции по заблокированной карте, после чего карта будет разблокирована.

Заблокировали (заморозили) страницу ВКонтакте. Что делать? Решение

Почему заблокировали страницу ВКонтакте? За что? И на сколько времени?

Твою страницу ВКонтакте заморозили. Почему, за что? Причина всегда есть, без нее никого не блокируют. Для тебя она может быть неожиданной, ведь ты ничего плохого не делал. Но причина и срок блокировки всегда указаны на твоей странице, если войти на нее через полную версию сайта. Например, через браузер на компьютере. А через приложение ВК этого не видно.

Войти на страницу — это значит не просто открыть ее, а ввести логин и пароль от замороженной страницы. Только так ты можешь узнать, на сколько времени и за что она заблокирована.

Причина может быть указана такая: «Эта страница была заморожена за рассылку от Вашего лица таких личных сообщений. ..» или «Спамеры использовали Вашу страницу для массового вступления в группы в целях рекламы и раскрутки этих групп». Что это означает? Ты не заботился о своей безопасности ВКонтакте. Злоумышленники получили доступ к твоему паролю (в народе называется «взломали») и пользовались твоей страницей: рассылали спам или вступали в группы для накрутки числа участников. Нет другого способа остановить это, кроме как заблокировать тебя и заставить поменять пароль.

Если ты сам вступил в группу по заданию, за выполнение которого тебе что-то обещали, или ставил лайки (например, через VkTarget), или добровольно участвовал еще в какой-нибудь накрутке, ты сам виноват. Это запрещено и за это замораживают. Также тебя могли заблокировать за рассылку нежелательных сообщений, рекламы (кто-то на тебя пожаловался). Конечно, вместо тебя это могли делать злоумышленники, перехватившие твой пароль. Учти, что в следующий раз срок блокировки увеличится или тебя заблокируют навсегда.

Что делать, если заблокировали?

Сама по себе страница не разблокируется. Что именно нужно сделать для восстановления доступа, написано там же, где тебе сообщили о блокировке. Срок, на который тебя заблокировали, тоже там указан. Если с телефона ты этого не видишь, войди через полную версию ВК:

Как узнать причину и срок блокировки? Если не видишь и думаешь, что тебе их не указали, войди на замороженную страницу со своим логином и паролем через полную версию ВК — тогда увидишь.

Не регистрируй новую страницу на тот же номер! Ты не сможешь восстановить доступ к той, которую заморозили (или это будет сложно).

Если твоя страница не была взломана, а просто заморожена за нарушение правил, войди на нее со своим логином и паролем. Выполняй инструкции, которые тебе будет давать сайт, и ты разморозишь страницу.

Что делать, если страница взломана и заблокирована, не могу войти?

Если же страница была взломана, то, скорее всего, злоумышленники поменяли пароль и войти ты уже не можешь. Если ты сидишь в ВК с компьютера, нужно проверить компьютер антивирусом (если вредоносные программы остались, тебя снова взломают) и восстановить доступ (то есть разблокироваться).

Как восстановить доступ и сменить пароль, если не могу войти? Здесь все написано:

Для разблокировки нужен номер телефона, привязанный к странице. Если у тебя этого номера уже нет, смотри здесь:

Как разблокировать страницу с телефона, через приложение?

В телефоне ты видишь сообщение «Ваша страница заблокирована» или «Ошибка. Ваш аккаунт заблокирован». Советуем в этом случае не пытаться сделать что-либо с телефона, а сесть за нормальный компьютер, ноутбук или хотя бы взять планшет (но открывать не приложение, а полную версию сайта), и уже с него разблокировать страницу. Ссылку на инструкцию смотри выше.

Также на будущее не помешает узнать хотя бы об элементарных мерах безопасности. Тот, кто их соблюдает, не имеет подобных проблем: Безопасность ВКонтакте.

Если тебя взломали, нужно действовать быстро. Мошенники могут от твоего имени просить деньги в долг у твоих друзей. Вот инструкция, что делать, когда взломали: Что делать, если взломали страницу ВКонтакте.

Для входа в Контакт рекомендуем всегда пользоваться стартовой страницей «Вход» (VHOD.RU)  — это поможет избежать попадания на мошеннические сайты, а сам процесс входа будет легким и быстрым. «Вход» помогает людям с 2010 года.

Как точно понять, что страница заблокирована?

На заблокированной странице ты видишь примерно такое сообщение:

Мы обнаружили на странице Танюшки подозрительную активность и временно заморозили её, чтобы вырвать из рук злоумышленников. Если у Вас есть возможность связаться с Танюшкой, сообщите ей, что её страница в безопасности, но нуждается в разморозке.

Или такое:

Страница была заблокирована по жалобам пользователей. Возможно, она была взломана.

Если ты внимательно это прочитал, то должен понять, что со страницей ничего не случилось, она не удалена. Просто все действия на ней приостановлены до момента, когда пройдет срок блокировки и хозяин страницы восстановит доступ (то есть ты).

А если ты просто заходишь к кому-то на страницу и видишь «Пользователь ограничил доступ к своей странице» или не можешь написать человеку в личку, то это совсем другое. Читай про это здесь: Как понять, что тебя заблокировали (занесли в черный список) ВКонтакте.

На самом ли деле тебя заблокировали?

Бывает, что твою страницу на самом деле не заблокировали, а тебя направили на подставной сайт, и ты думаешь, что это и есть ВКонтакте, который говорит тебе, что страница заблокирована. На самом деле — нет. Как это определить? Нужно кое-что проверить, читай об этом здесь: Не входит в Контакт? Решение.

Когда страницу разблокируют, на ней все останется как было?

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

Если взломщик удалил твои фотографии, их придется восстанавливать через службу поддержки — Как восстановить удаленное фото ВКонтакте (читать до конца).

Могут ли мне присылать сообщения на заблокированную страницу?

Нет, не могут. Пока не разблокируешь страницу, люди будут видеть только «Страница заблокирована» или «Пользователь удален» и ничего прислать не смогут.

Бесплатна ли разблокировка?

Да, разблокировка и восстановление доступа всегда бесплатны. Если тебе предлагают заплатить, отправить СМС, перевести куда-то деньги и тому подобное, то ты на 100% имеешь дело с мошенниками. Тебе только кажется, что они из ВКонтакте. На самом деле нет. Читай это от начала до конца:

Как узнать, кто заблокировал мою страницу?

Твою страницу заблокировала (заморозила) администрация ВКонтакте. Они могли сами заметить, что твоя страница нарушает правила, или это им мог подсказать кто-то из других пользователей через функцию «Пожаловаться». Тебе этого никак не узнать. Лучше прочитай правила пользования сайтом ВК и больше не нарушай их.

Если же у тебя другой случай — ты заходишь к человеку на страницу и видишь «Пользователь ограничил доступ к своей странице», то это значит, что он просто добавил тебя в свой черный список. Читай это: Как понять, что тебя занесли в черный список ВКонтакте.

На какой срок, на сколько времени блокируют страницу?

На столько, на сколько нужно. Если твою страницу заблокировали, то срок блокировки тебе сообщили — нужно войти на страницу (или восстановить доступ), чтобы его узнать. Этот срок зависит от серьезности нарушения и от того, первое это нарушение или уже нет. Как уже сказано выше, в следующий раз время блокировки увеличится.

Можно ли разблокировать страницу раньше срока?

К сожалению, разблокировать страницу раньше указанного срока нельзя. Никак.

Почему время блокировки уже прошло, а страница все еще заблокирована (заморожена)?

Потому что страница сама не разблокируется. Когда время блокировки прошло, это значит, что теперь ты можешь войти на свою страницу с логином и паролем. После этого блокировка исчезнет. А до тех пор страница так и будет висеть заблокированной. А если ты сидишь ВКонтакте с другой страницы, то придется выйти из нее, чтобы войти на ту, которая была заблокирована (смотри тут: Старая страница ВКонтакте: как найти, открыть, войти).

Что делать, если страница заблокирована навсегда?

Действительно, такое тоже бывает. Ты получаешь сообщение: «К сожалению, мы обнаружили злоупотребления, связанные с Вашей страницей, и она заблокирована навсегда». Подробнее об этом рассказано здесь:

Куда пожаловаться на блокировку страницы ВКонтакте?

Никуда не пожаловаться и смысла в этом нет. Регистрируясь на сайте ВКонтакте, ты согласился с его правилами (без этого создать страницу невозможно). В правилах четко написано, что ты несешь полную ответственность за сохранность своего логина и пароля. Даже если твою страницу заблокировали из-за «взлома», это твоя вина — ты невнимательно относился к безопасности. Если не понимаешь, как у тебя украли пароль, это может объяснить тебе специалист-компьютерщик. Бесполезно спорить с тем, с чем ты уже согласился.

Что делать, если все равно не входит ВКонтакте?

Если ты никак не можешь открыть свою страницу, и ничего не получается сделать, читай это: Не входит в Контакт? Решение.

Другие инструкции

Стартовая страница «Вход» помогает от блокировок

Чтобы безопасно входить на сайт ВКонтакте и не попасться мошенникам, которые заманивают людей и крадут пароли, всегда пользуйся стартовой страницей «Вход» (адрес VHOD.RU). Поставь ее себе стартовой страницей и используй для входа каждый раз.

Переход на главную страницу:

Сервер

sql — что такое блокировки строк, страниц и таблиц? А когда они приобретаются?

Блокировка ряда

Блокировка строки — это самый низкий уровень детализации блокировки, возможный в SQL Server. Это означает, что одна или несколько определенных строк будут заблокированы, а соседние строки будут по-прежнему доступны для блокировки параллельными запросами.

Блокировка страницы

Блокировка страницы в SQL Server заблокирует 8 КБ данных, даже если вашему запросу требуется всего 10 байтов от страницы.Таким образом, ваш запрос заблокирует дополнительные данные, которые вы не запрашиваете в своем запросе.

Замок Hobt

Когда таблица разбивается на разделы с помощью «Разделения таблицы SQL Server», возможно, что один раздел будет заблокирован (Hobt означает «куча» или «B-дерево»).

Примечание. Эскалация блокировок до блокировок HOBT по умолчанию отключена. запустите ALTER TABLE MyTable SET (LOCK_ESCALATION = AUTO) , чтобы включить эскалацию блокировки HOBT.

Замок стола

Блокировка таблицы блокирует всю таблицу.

Что такое страницы данных

Microsoft SQL Server организует все данные на «страницах данных», которые могут содержать 8 КБ данных. Это означает, что при любом доступе к данным в SQL Server 8K информация будет считана.

Страницы данных могут содержать информацию только из одной таблицы, а макет страницы хорошо документирован в MSDN

.

Тот факт, что SQL Server всегда будет читать полную страницу данных, также дает вам представление о том, почему он предпочитает использовать блокировки на уровне страницы.Последствия блокировок на уровне страниц заключаются в том, что вы можете заблокировать гораздо больше данных, чем вы думаете.

Например, предположим, что у нас есть таблица с общим размером записи 1024 байта с кластеризованным индексом в поле ID . Когда мы запускаем следующий запрос: SELECT * from MyTable (xlock), где ID = 123 не только эта запись будет заблокирована, но (в зависимости от заполнения страницы) будут заблокированы максимум 3 дополнительных записи.

Когда эти замки приобретаются

Запрос будет проанализирован регулятором запросов, и необходимые блокировки будут определены и запрошены у диспетчера блокировок. SQL Server попытается найти баланс между производительностью и конкуренцией, чтобы определить стратегию блокировки.

SQL Server также следует системе «эскалации блокировок», которая снижает степень детализации блокировок при получении более 5000 блокировок определенного типа. См. Эту статью об эскалации блокировки для получения дополнительной информации.

Это поведение можно настроить с помощью подсказок блокировки с упором на подсказок , в запросе вы можете указать для каждой таблицы, какой тип блокировки вы предпочитаете.SQL Server попытается удовлетворить ваш запрос, но все равно будет применять эскалацию блокировки.

Сервер

sql — Уменьшение взаимоблокировки на уровне СТРАНИЦЫ при запросе обновления на MS SQL

У меня забавная тупиковая ситуация, вызванная глупым простым запросом SQL UPDATE на плоской простой таблице при транзакции по умолчанию «READ COMMITED».

  ОБНОВЛЕНИЕ таблицы SET столбец = @ P1 ГДЕ PK = @ P2
  

Столбец PK — это varchar (11) , имеет кластерный индекс. нет связи с триггером или таблицей .. и т. д. в таблице.

Я провел некоторую проверку и обнаружил, что взаимоблокировка происходит на уровне «PAGE», а не на уровне ROW / record. Затем я обнаружил, что для каждого запроса на обновление требуется 100 (и более) блокировок PAGE. (Для меня это не имеет смысла, потому что я обновляю сразу одну строку)

Есть ли способ предотвратить возникновение тупика? Или как можно уменьшить количество блокировок, необходимых для обновления одной отдельной строки, без использования курсора?

Спасибо за ваше предложение.

Я несколько раз пытался перестроить индекс с высоким и низким коэффициентом заполнения. Я пытался заставить процессы обновлять другую позицию / срез. Но ничего не улучшилось или хуже.

Я попробовал SQL Server Profiler. Я записал некоторые «Блокировка: цепочка тупиков» и «Блокировка: тупик», но «График тупиков» не был захвачен. Обе стороны выполняют простой запрос на обновление в режиме автоматической фиксации с фиксацией чтения.

  Блокировка: цепочка тупиков 17887475 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Блокировка обмена: Цепочка тупиков 17887476 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 209 1: 438102 265006271 0 0X56AF060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887477 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Блокировка обмена: Цепочка тупиков 17887478 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 54 1: 426206 265006240 0 0XDE80060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887479 1 0X01 4 myserver 2008-11-28 10:16:46.210 Цепочка взаимоблокировок SPID = 209 1: 426206 265006271 0 0XDE80060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Блокировка типа ресурса
Блокировка: цепочка тупиков 17887480 1 0X01 4 myserver 2008-11-28 10:16:46. 210 Рабочий поток параллельных запросов попал в тупик 0 971497 102 - Тип ресурса Блокировка обмена: Цепочка тупиков 17887481 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 54 1: 426066 265006240 0 0X5280060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887482 1 0X01 4 myserver 2008-11-28 10:16:46.210 Цепочка тупиков SPID = 209 1: 426066 265006271 0 0X5280060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Блокировка типа ресурса
Блокировка: цепочка тупиков 17887483 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса был вовлечен в тупик 0 971497 102 - Тип ресурса Блокировка обмена: Цепочка тупиков 17887484 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 209 1: 425614 265006271 0 0X8E7E060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887485 1 0X01 4 myserver 2008-11-28 10:16:46. 210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Блокировка обмена: Цепочка тупиков 17887486 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 209 1: 426687 265006271 0 0XBF82060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971497 101 - Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887487 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Exchange
Блокировка: цепочка взаимоблокировок 17887488 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 209 1: 425392 265006271 0 0XB07D060001000000000000001B0006 27 0 - LOCK 4 - U 0 72057594040352768 1 - TRANSACTION 0 6 9714 - PAGE 101 my --database Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887489 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Exchange
Блокировка: цепочка взаимоблокировок 17887491 1 0X01 4 myserver 2008-11-28 10: 16: 46. 210 Рабочий поток параллельных запросов попал в тупик 0 971497 102 - Тип ресурса Exchange
Блокировка: цепочка тупиков 17887493 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Exchange
Блокировка: цепочка взаимоблокировок 17887494 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка тупиков SPID = 209 1: 435792 265006271 0 0X50A6060001000000000000001B0006 27 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - PAGE 101 myd Тип ресурса Блокировка
Блокировка: цепочка тупиков 17887495 1 0X01 4 myserver 2008-11-28 10:16:46.210 Рабочий поток параллельного запроса попал в тупик 0 971497 102 - Тип ресурса Exchange
Блокировка: цепочка взаимоблокировок 17887496 1 0X01 4 myserver 2008-11-28 10: 16: 46.210 Цепочка взаимоблокировок SPID = 209 1: 438206 265006271 0 0XBEAF060001000000000000001B0006 27 0 - LOCK 4 - U 0 72057594040352768 1 - TRANSACTION 0 614 97 PAGE --d Тип ресурса Блокировка
Блокировка: тупик 17887497 myuser 0XCD85FBB269700B4AA2F4E8579D118999 209 myserver myuser 2008-11-28 10:16:45. 930 1: 426206 265006271 myapps 0 0XDE80060001000000000000001B0006 123 27 281 2008-11-28 10: 16: 46.210 myclient 0 - БЛОКИРОВКА 4 - U 0 72057594040352768 1 - ТРАНЗАКЦИЯ 0 6 - СТРАНИЦА mydatabase 971498
  

Все о блокировке в SQL Server

Блокировка необходима для успешной обработки транзакций SQL Server, и она предназначена для обеспечения бесперебойной работы SQL Server в многопользовательской среде. Блокировка — это способ, которым SQL Server управляет параллелизмом транзакций.По сути, блокировки — это структуры в памяти, у которых есть владельцы, типы и хэш ресурса, который он должен защищать. Размер блокировки как структуры в памяти составляет 96 байт.

Чтобы лучше понять блокировку в SQL Server, важно понимать, что блокировка предназначена для обеспечения целостности данных в базе данных, поскольку она заставляет каждую транзакцию SQL Server проходить тест ACID.

Тест ACID состоит из 4 требований, которые должна успешно пройти каждая транзакция:

  • Атомарность — требует, чтобы транзакция, которая включает две или более дискретных частей информации, фиксировала все части или ни одной
  • Согласованность — требует, чтобы транзакция создавала допустимое состояние новых данных или откатывала все данные до состояния, которое существовало до выполнения транзакции.
  • Изоляция — требует, чтобы транзакция, которая все еще выполняется и еще не зафиксировала все данные, должна оставаться изолированной от всех других транзакций
  • Durability — требует, чтобы зафиксированные данные хранились с использованием метода, который сохранит все данные в правильном состоянии и будет доступен пользователю даже в случае сбоя.

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

В переводе на язык SQL Server это означает, что, когда транзакция накладывает блокировку на объект, все другие транзакции, которым требуется доступ к этому объекту, будут вынуждены ждать, пока блокировка не будет снята, и это ожидание будет зарегистрировано с соответствующим ожиданием. тип

Блокировки SQL Server могут быть указаны через режимы блокировки и степень детализации блокировки.

Режимы блокировки

В режиме блокировки учитываются различные типы блокировки, которые могут применяться к ресурсу, который необходимо заблокировать:

  • Эксклюзивный (X)
  • Общий (S)
  • Обновление (U)
  • Намерение (I)
  • Схема (Sch)
  • Массовое обновление (BU)

Эксклюзивная блокировка (X) — Этот тип блокировки, когда наложен, гарантирует, что страница или строка будут зарезервированы исключительно для транзакции, которая наложила исключительную блокировку, пока транзакция удерживает блокировку.

Эксклюзивная блокировка будет наложена транзакцией, когда она хочет изменить данные страницы или строки, как в случае операторов DML DELETE, INSERT и UPDATE. Исключительная блокировка может быть наложена на страницу или строку только в том случае, если на адресат уже не наложена другая общая или исключительная блокировка. Практически это означает, что на страницу или строку может быть наложена только одна монопольная блокировка, а после наложения никакая другая блокировка не может быть наложена на заблокированные ресурсы.

Общая блокировка (S) — этот тип блокировки при наложении резервирует страницу или строку, которые будут доступны только для чтения, что означает, что любая другая транзакция не сможет изменить заблокированную запись, пока блокировка активна. .Однако общая блокировка может быть наложена несколькими транзакциями одновременно на одной и той же странице или строке, и таким образом несколько транзакций могут совместно использовать возможность чтения данных, поскольку сам процесс чтения никоим образом не повлияет на фактическую страницу или строку. данные. Кроме того, общая блокировка разрешает операции записи, но не допускаются изменения DDL.

Блокировка обновления (U) — эта блокировка похожа на эксклюзивную блокировку, но в некотором смысле более гибкая. Блокировка обновления может быть наложена на запись, которая уже имеет общую блокировку. В таком случае блокировка обновления накладывает другую разделяемую блокировку на целевую строку. Как только транзакция, содержащая блокировку обновления, будет готова к изменению данных, блокировка обновления (U) будет преобразована в исключительную блокировку (X). Важно понимать, что блокировка обновления асимметрична по отношению к разделяемым блокировкам. В то время как блокировка обновления может быть наложена на запись с общей блокировкой, общая блокировка не может быть наложена на запись, которая уже имеет блокировку обновления.

Блокировка намерения (I) — эта блокировка является средством, используемым транзакцией для информирования другой транзакции о своем намерении получить блокировку.Цель такой блокировки — обеспечить правильное выполнение модификации данных, не допуская, чтобы другая транзакция установила блокировку следующего в иерархии объекта. На практике, когда транзакция хочет получить блокировку строки, она получает намеренную блокировку таблицы, которая является объектом более высокой иерархии. Получив блокировку намерения, транзакция не позволит другим транзакциям получить исключительную блокировку для этой таблицы (в противном случае исключительная блокировка, наложенная какой-либо другой транзакцией, отменит блокировку строки).

Это важный тип блокировки с точки зрения производительности, поскольку ядро ​​базы данных SQL Server будет проверять блокировки намерения только на уровне таблицы, чтобы проверить, возможно ли для транзакции получить блокировку безопасным способом в этой таблице, и, следовательно, блокировка намерения устраняет необходимо проверить каждую блокировку строки / страницы в таблице, чтобы убедиться, что транзакция может получить блокировку для всей таблицы

Существует три обычных блокировки намерения и три так называемых блокировки преобразования:

Стандартные блокировки по намерению:

Исключающее намерение (IX) — когда получена исключительная блокировка намерения (IX), это указывает SQL Server, что транзакция имеет намерение изменить некоторые из ресурсов более низкой иерархии путем получения эксклюзивных (X) блокировок индивидуально для этих ресурсов более низкой иерархии

Совместное использование намерения (IS) — когда получена намеренная совместная блокировка (IS), это указывает SQL Server, что транзакция имеет намерение прочитать некоторые ресурсы более низкой иерархии, приобретая общие блокировки (S) индивидуально для этих ресурсов ниже в иерархия

Обновление намерения (IU) — когда получена намеренная разделяемая блокировка (IS), это указывает SQL Server, что транзакция имеет намерение прочитать некоторые из ресурсов более низкой иерархии, приобретая общие блокировки (S) индивидуально для этих ресурсов ниже в иерархия. Блокировка намеренного обновления (IU) может быть получена только на уровне страницы, и как только операция обновления выполняется, она преобразуется в целевую эксклюзивную блокировку (IX).

Замки-перестановки:

Общий доступ с эксклюзивным намерением (SIX) — при получении эта блокировка указывает, что транзакция намеревается прочитать все ресурсы в более низкой иерархии и, таким образом, получить общую блокировку для всех ресурсов, которые находятся ниже в иерархии, и, в свою очередь, изменить часть из них, но не все.При этом он получит эксклюзивную блокировку намерения (IX) для тех ресурсов более низкой иерархии, которые должны быть изменены. На практике это означает, что как только транзакция получает ШЕСТЬ блокировок таблицы, она приобретает намеренную монопольную блокировку (IX) на измененных страницах и монопольную блокировку (X) на измененных строках.

Только одна общая с намерением эксклюзивная блокировка (SIX) может быть получена для таблицы за один раз, и это будет блокировать другие транзакции от выполнения обновлений, но это не помешает другим транзакциям читать ресурсы более низкой иерархии, которые они могут получить с общим намерением (IS ) замок на столе

Совместно с обновлением намерения (SIU) — это немного более конкретная блокировка, поскольку это комбинация блокировок общего (S) и обновления намерения (IU). Типичный пример этой блокировки — это когда транзакция использует запрос, выполняемый с подсказкой и запросом PAGELOCK, а затем запрос на обновление. После того, как транзакция получит блокировку SIU для таблицы, запрос с подсказкой PAGELOCK получит общую (S) блокировку, в то время как запрос обновления получит блокировку намеренного обновления (IU).

Обновление с исключительным намерением (UIX) — когда блокировка обновления (U) и блокировки по намерению (IX) одновременно получены на ресурсах более низкой иерархии в таблице, обновление с эксклюзивной блокировкой намерения будет получено на уровне таблицы как последствие

Блокировки схемы (Sch) — ядро ​​базы данных SQL Server распознает два типа блокировок схемы: Блокировка изменения схемы (Sch-M) и Блокировка стабильности схемы (Sch-S)

  • Блокировка модификации схемы (Sch-M) будет получена при выполнении оператора DDL и предотвратит доступ к данным заблокированного объекта, поскольку структура объекта изменяется. SQL Server допускает единственную блокировку модификации схемы (Sch-M) для любого заблокированного объекта. Чтобы изменить таблицу, транзакция должна дождаться получения блокировки Sch-M на целевом объекте. После получения блокировки модификации схемы (Sch-M) транзакция может изменить объект, и после завершения модификации блокировка будет снята. Типичным примером блокировки Sch-M является перестроение индекса, а перестроение индекса — это процесс модификации таблицы. После выдачи идентификатора перестроения индекса для этой таблицы будет получена блокировка изменения схемы (Sch-M), которая будет снята только после завершения процесса перестроения индекса (при использовании с опцией ONLINE перестройка индекса получит блокировку Sch-M. вскоре по окончании процесса)
  • Блокировка стабильности схемы (Sch-S) будет получена во время компиляции и выполнения запроса, зависящего от схемы, и создания плана выполнения.Эта конкретная блокировка не будет блокировать другие транзакции для доступа к данным объекта и совместима со всеми режимами блокировки, кроме блокировки модификации схемы (Sch-M). По сути, блокировки стабильности схемы будут приобретаться каждым DML и запросом выбора, чтобы гарантировать целостность структуры таблицы (гарантировать, что таблица не изменяется во время выполнения запросов).

Блокировки массового обновления (BU) — эта блокировка предназначена для использования в операциях массового импорта при запуске с аргументом / подсказкой TABLOCK.Когда получена блокировка массового обновления, другие процессы не смогут получить доступ к таблице во время выполнения массовой загрузки. Однако блокировка массового обновления не предотвратит параллельную обработку другой массовой загрузки. Но имейте в виду, что использование TABLOCK в таблице кластерного индекса не позволяет выполнять параллельный массовый импорт. Более подробная информация об этом доступна в Руководстве по оптимизации массового импорта.

Иерархия блокировок

SQL Server представил иерархию блокировок, которая применяется при чтении или изменении данных. Иерархия блокировок начинается с базы данных на самом высоком уровне иерархии и вниз по таблице и от страницы к строке на самом низком уровне.

По сути, всегда существует разделяемая блокировка на уровне базы данных, которая накладывается всякий раз, когда транзакция подключается к базе данных. Общая блокировка на уровне базы данных налагается, чтобы предотвратить сброс базы данных или восстановление резервной копии базы данных по используемой базе данных. Например, когда для чтения некоторых данных выдается инструкция SELECT, на уровне базы данных будет наложена разделяемая блокировка (S), на таблицу и на уровне страницы будет наложена общая блокировка (IS), а общая блокировка будет замок (S) на самой строке

В случае оператора DML (т.е. insert, update, delete) общая блокировка (S) будет наложена на уровне базы данных, преднамеренная эксклюзивная блокировка (IX) или намеренная блокировка обновления (IU) будет наложена на таблицу и на уровне страницы, а исключительная или блокировка обновления (X или U) в строке

Блокировки всегда будут выполняться сверху вниз, поскольку таким образом SQL Server предотвращает возникновение так называемого состояния гонки.

Теперь, когда были объяснены режимы блокировки и иерархия блокировок, давайте подробнее остановимся на режимах блокировки и их преобразовании в иерархию блокировок.

Не все режимы блокировки можно применять на всех уровнях.

На уровне строки могут применяться следующие три режима блокировки:

  • Эксклюзивный (X)
  • Общий (S)
  • Обновление (U)

Чтобы понять совместимость этих режимов, обратитесь к следующей таблице:

Эксклюзивный (X) Общий (S) Обновление (U)
Эксклюзивный (X)
Общий (S)
Обновление (U)

— совместим — несовместим

На уровне таблицы существует пять различных типов блокировок:

  • Эксклюзивный (X)
  • Общий (S)
  • Исключительное намерение (IX)
  • Совместное намерение (IS)
  • Предоставлено с исключительным намерением (ШЕСТЬ)

Совместимость этих режимов можно увидеть в таблице ниже.

(ИКС) (S) (IX) (ЯВЛЯЕТСЯ) (ШЕСТЬ)
(ИКС)
(S)
(IX)
(ЯВЛЯЕТСЯ)
(ШЕСТЬ)

— совместим — несовместим

Блокировка схемы (Sch) также является блокировкой уровня таблицы, но не блокировкой, связанной с данными.

Чтобы лучше понять совместимость между этими типами блокировок, обратитесь к этой таблице:

Эскалация блокировки

Чтобы предотвратить ситуацию, когда при блокировке используется слишком много ресурсов, SQL Server представил функцию эскалации блокировки.

Без эскалации блокировки могут потребовать значительного количества ресурсов памяти. Давайте рассмотрим пример, в котором для выполнения операции удаления должна быть наложена блокировка на 30 000 строк данных, каждая из которых имеет размер 500 байт. Без эскалации общая блокировка (S) будет наложена на базу данных, 1 намеренная эксклюзивная блокировка (IX) на таблицу, 1875 намеренных эксклюзивных блокировок (IX) на страницах (страница 8 КБ содержит 16 строк по 500 байтов, что составляет 1875 страниц, содержащих 30 000 строк) и 30 000 эксклюзивных блокировок (X) самих строк.Поскольку размер каждой блокировки составляет 96 байт, 31 877 блокировок потребуют около 3 МБ памяти для одной операции удаления. Параллельное выполнение большого количества операций может потребовать значительных ресурсов только для того, чтобы менеджер блокировок мог выполнять операцию плавно.

Чтобы предотвратить такую ​​ситуацию, SQL Server использует эскалацию блокировки. Это означает, что в ситуации, когда на одном уровне установлено более 5000 блокировок, SQL Server повысит уровень этих блокировок до блокировки на уровне одной таблицы.По умолчанию SQL Server всегда будет напрямую переходить на уровень таблицы, что означает, что переход на уровень страницы никогда не происходит. Вместо получения блокировки множества строк и страниц, SQL Server перейдет к исключительной блокировке (X) на уровне таблицы.

Хотя это снизит потребность в ресурсах, исключительные блокировки (X) в таблице означают, что никакая другая транзакция не сможет получить доступ к заблокированной таблице, и все запросы, пытающиеся получить доступ к этой таблице, будут заблокированы. Следовательно, это снизит накладные расходы на систему, но увеличит вероятность конкуренции за параллелизм.

Чтобы обеспечить контроль над эскалацией, начиная с SQL Server 2008 R2, параметр LOCK_EXCALATION вводится как часть оператора ALTER TABLE.

ЕГЭ AdventureWorks, 2014 г. ИДТИ ALTER TABLE имя_таблицы УСТАНОВИТЬ (LOCK_ESCALATION = <ТАБЛИЦА | АВТО | ОТКЛЮЧИТЬ> ИДТИ

Каждая из этих опций определена, чтобы позволить конкретный контроль над процессом эскалации блокировки:

Таблица — это параметр по умолчанию для любой вновь созданной таблицы, так как по умолчанию SQL Server всегда выполняет эскалацию блокировки до уровня таблицы, который также включает секционированные таблицы.

Авто — этот параметр позволяет эскалацию блокировки до уровня раздела, когда таблица разбита на разделы.Когда 5000 блокировок получены в одном разделе, при эскалации блокировки будет получена эксклюзивная блокировка (X) на этом разделе, в то время как таблица получит намеренную эксклюзивную блокировку (IX). В случае, если эта таблица не разделена на разделы, при эскалации блокировки будет установлена ​​блокировка на уровне таблицы (аналогично опции Таблица ).

Хотя это выглядит очень полезным вариантом, его следует использовать очень осторожно, поскольку он может легко вызвать тупик. В ситуации, когда у нас есть две транзакции в двух разделах, где получена эксклюзивная блокировка (X), и транзакция пытается получить доступ к дате из раздела, используемого другой транзакцией, возникнет тупик.

Таким образом, очень важно тщательно контролировать шаблон доступа к данным, если этот параметр включен, чего нелегко добиться, и поэтому этот параметр не является настройками по умолчанию в SQL Server.

Отключить — эта опция полностью отключает эскалацию блокировок для таблицы.Опять же, этот параметр следует использовать осторожно, чтобы избежать принудительного использования диспетчера блокировок SQL Server чрезмерного объема памяти.

Как видно, эскалация блокировок может стать проблемой для администраторов баз данных. Если дизайн приложения требует одновременного удаления или обновления более 5000 строк, решение, позволяющее избежать эскалации блокировок и связанных с этим эффектов, состоит в разделении одной транзакции на две или более транзакции, каждая из которых будет обрабатывать менее 5000 строк, как в этом примере. способ уклонения от эскалации блокировки

Получить информацию об активных блокировках SQL Server

SQL Server предоставляет систему Dynamics Management View (DMV) sys.dm_tran_locks, который возвращает информацию о ресурсах менеджера блокировок, которые используются в данный момент, что означает, что он будет отображать все «живые» блокировки, полученные транзакциями. Более подробную информацию об этом DMV можно найти в статье sys.dm_tran_locks (Transact-SQL).

Наиболее важные столбцы, используемые для идентификации блокировки, — это resource_type, request_mode и resource_description. При необходимости во время устранения неполадок можно добавить больше столбцов в качестве дополнительных источников информации.

Вот пример запроса

ВЫБРАТЬ тип_ресурса, режим_запроса, описание_ресурса ОТ sys.dm_tran_locks ГДЕ тип_ресурса <> «БАЗА ДАННЫХ»

Предложение where в этом запросе используется как фильтр по типу ресурса, который нужно исключить. по результатам, эти обычно общие блокировки, полученные в базе данных, поскольку они всегда присутствуют на уровне базы данных

Краткое объяснение трех представленных здесь столбцов:

resource_type — отображает ресурс базы данных, для которого устанавливаются блокировки.Столбец может отображать одно из следующих значений: ALLOCATION_UNIT, APPLICATION, DATABASE, EXTENT, FILE, HOBT, METADATA, OBJECT, PAGE, KEY, RID.

request_mode — отображает режим блокировки, установленный на ресурсе

resource_description — отображает краткое описание ресурса и заполняется не для всех режимов блокировки. Чаще всего столбец содержит идентификатор строки, страницы, объекта, файла и т. Д.

Никола — компьютерный фанат с 1981 года и энтузиаст SQL с намерением стать уродом.Специализируется на аудите SQL Server, соблюдении нормативных требований и мониторинге производительности.

Любитель военной авиации и опытный моделлер. Любитель экстрима; парашютист и инструктор по прыжкам с тарзанки. Когда-то серьезно, теперь просто свободное время фотограф

Посмотреть все сообщения Николы Димитриевича

Последние сообщения Николы Димитриевича (посмотреть все)

Устранение проблемы блокировки, вызванной эскалацией блокировки — SQL Server

  • Читать 8 минут

В этой статье

Сводка

Эскалация блокировок — это процесс преобразования множества детализированных блокировок (таких как блокировки строк или страниц) в блокировки таблиц. Microsoft SQL Server динамически определяет, когда выполнять эскалацию блокировки. При принятии этого решения SQL Server учитывает количество блокировок, удерживаемых при конкретном сканировании, количество блокировок, удерживаемых всей транзакцией, и память, которая используется для блокировок в системе в целом. Как правило, поведение SQL Server по умолчанию приводит к эскалации блокировки только в тех точках, где это может улучшить производительность или когда необходимо уменьшить чрезмерную память для блокировки системы до более разумного уровня.Однако некоторые приложения или конструкции запросов могут запускать эскалацию блокировки в то время, когда это нежелательно, а повышенная блокировка таблицы может блокировать других пользователей. В этой статье обсуждается, как определить, вызывает ли эскалация блокировок блокировку, и как бороться с нежелательной эскалацией блокировок.

Исходная версия продукта: SQL Server
Исходный номер базы знаний: 323630

Определить, вызывает ли эскалация блокировки блокировку

Повышение уровня блокировки не вызывает большинства проблем с блокировкой. Чтобы определить, происходит ли эскалация блокировки примерно в то время, когда у вас возникают проблемы с блокировкой, запустите трассировку профилировщика SQL, которая включает событие Lock: Escalation . Если вы не видите никаких событий Lock: Escalation , эскалация блокировки не происходит на вашем сервере, и информация в этой статье не относится к вашей ситуации.

Если происходит эскалация блокировки, убедитесь, что расширенная блокировка таблицы блокирует других пользователей.

Для получения дополнительной информации о том, как идентифицировать блокировщик заголовка и как определить ресурс блокировки, удерживаемый блокировщиком заголовка, который блокирует идентификаторы других серверных процессов (SPID), см. INF: понимание и решение проблем блокировки SQL Server.

Если блокировка, которая блокирует других пользователей, не является блокировкой TAB (на уровне таблицы) с режимом блокировки S (общий) или X (эксклюзивный), эскалация блокировки не является проблемой. В частности, если TAB-блокировка является намеренной блокировкой (например, режим блокировки IS, IU или IX), это не результат эскалации блокировки. Если проблемы с блокировкой не вызваны эскалацией блокировки, см. Раздел INF: Общие сведения и решение проблем блокировки SQL Server, шаги по устранению неполадок.

Предотвратить эскалацию блокировки

Самый простой и безопасный способ предотвратить эскалацию блокировок — сделать транзакции короткими и уменьшить объем блокировки дорогостоящих запросов, чтобы не превышались пороги эскалации блокировок.Есть несколько способов достичь этой цели, многие из которых перечислены:

  • Разделите большие пакетные операции на несколько более мелких операций. Например, предположим, что вы выполнили следующий запрос, чтобы удалить несколько сотен тысяч старых записей из таблицы аудита, а затем обнаружили, что он вызвал эскалацию блокировки, которая заблокировала других пользователей:

      УДАЛИТЬ ИЗ сообщений журнала, ГДЕ LogDate <'2/1/2002'
      

    Удаляя эти записи по несколько сотен за раз, вы можете значительно уменьшить количество блокировок, накапливаемых за транзакцию, и предотвратить эскалацию блокировок. Например:

      НАБОР ROWCOUNT 500
    delete_more:
    УДАЛИТЬ ИЗ сообщений журнала, ГДЕ LogDate <'2/1/2002'
    ЕСЛИ @@ ROWCOUNT> 0 НАЙТИ delete_more
    УСТАНОВИТЬ ROWCOUNT 0
      
  • Уменьшите площадь блокировки запроса, сделав запрос максимально эффективным. Большое сканирование или большое количество поисков по закладкам могут увеличить вероятность эскалации блокировки; кроме того, это увеличивает вероятность возникновения взаимоблокировок и отрицательно сказывается на параллелизме и производительности. После того, как вы найдете запрос, вызывающий эскалацию блокировки, поищите возможности для создания новых индексов или добавления столбцов в существующий индекс, чтобы удалить сканирование индекса или таблицы и максимизировать эффективность поиска по индексу.Рассмотрите возможность вставки запроса в окно запроса Query Analyzer, чтобы выполнить автоматический анализ индекса. Для этого в меню «Запрос» выберите «Мастер настройки индекса в SQL Server 2000» или нажмите «Выполнить анализ индекса в SQL Server 7. 0».

    Одна из целей этой оптимизации - сделать так, чтобы поисковые запросы индекса возвращали как можно меньше строк, чтобы минимизировать затраты на поиск по закладкам (максимизировать селективность индекса для запроса). Если SQL Server оценивает, что логический оператор поиска по закладкам может возвращать много строк, он может использовать PREFETCH для выполнения поиска по закладкам.Если SQL Server действительно использует PREFETCH для поиска по закладкам, он должен повысить уровень изоляции транзакции части запроса до повторяемого чтения для части запроса. Это означает, что то, что может выглядеть как оператор SELECT на уровне изоляции с фиксацией чтения, может получить многие тысячи ключевых блокировок (как для кластеризованного индекса, так и для одного некластеризованного индекса), что может привести к превышению таким запросом пороговых значений эскалации блокировки. . Это особенно важно, если вы обнаружите, что расширенная блокировка является блокировкой общей таблицы, которая, однако, обычно не наблюдается на уровне изоляции по умолчанию с фиксацией чтения. Если предложение Bookmark Lookup WITH PREFETCH вызывает эскалацию, рассмотрите возможность добавления дополнительных столбцов в некластеризованный индекс, который появляется в логическом операторе поиска индекса или сканирования индекса под логическим оператором поиска по закладке в плане запроса. Возможно создание покрывающего индекса (индекса, который включает все столбцы в таблице, которые использовались в запросе), или, по крайней мере, индекса, который охватывает столбцы, которые использовались для критериев объединения, или в предложении WHERE, если включает все в списке столбцов выбора нецелесообразно.

    Соединение с вложенным циклом может также использовать PREFETCH , и это вызывает такое же поведение блокировки.

  • Эскалация блокировки не может произойти, если другой SPID в настоящее время удерживает несовместимую блокировку таблицы. Эскалация блокировки всегда перерастает в блокировку таблицы, а не блокировку страницы. Кроме того, если попытка эскалации блокировки не удалась из-за того, что другой SPID содержит несовместимую блокировку TAB, запрос, предпринявший попытку эскалации, не блокируется в ожидании блокировки TAB. Вместо этого он продолжает получать блокировки на исходном, более детальном уровне (строка, ключ или страница), периодически делая дополнительные попытки эскалации.Таким образом, один из методов предотвращения эскалации блокировок для конкретной таблицы состоит в том, чтобы установить и удерживать блокировку другого соединения, несовместимого с типом эскалации блокировки. Блокировка IX (исключительное намерение) на уровне таблицы не блокирует какие-либо строки или страницы, но по-прежнему несовместима с усиленной S (общей) или X (эксклюзивной) блокировкой TAB. Например, предположим, что вы должны запустить пакетное задание, которое изменяет множество строк в таблице mytable и вызвало блокировку из-за эскалации блокировки.Если это задание всегда завершается менее чем за час, вы можете создать задание Transact-SQL, содержащее следующий код, и запланировать запуск нового задания за несколько минут до времени начала пакетного задания:

      НАЧАТЬ ТРАНС
    ВЫБРАТЬ * ИЗ mytable (UPDLOCK, HOLDLOCK) ГДЕ 1 = 0
    ОЖИДАНИЕ ЗАДЕРЖКИ «1:00:00»
    COMMIT TRAN
      

    Этот запрос получает и удерживает блокировку IX для mytable в течение одного часа, что предотвращает эскалацию блокировок для таблицы в течение этого времени. Этот пакет не изменяет какие-либо данные и не блокирует другие запросы (если другой запрос не вызывает блокировку таблицы с помощью подсказки TABLOCK или если администратор отключил блокировку страниц или строк с помощью хранимой процедуры sp_indexoption ).

Кроме того, вы можете отключить эскалацию блокировок, включив флаг трассировки 1211. Однако этот флаг трассировки отключает все эскалацию блокировок глобально в экземпляре SQL Server. Эскалация блокировок служит полезной цели в SQL Server, максимизируя эффективность запросов, которые в противном случае замедляются из-за накладных расходов на получение и снятие нескольких тысяч блокировок. Эскалация блокировок также помогает минимизировать объем памяти, необходимой для отслеживания блокировок. Память, которую SQL Server может динамически выделять для структур блокировок, конечна, поэтому, если вы отключите эскалацию блокировок и память блокировок станет достаточно большой, попытки выделить дополнительные блокировки для любого запроса могут завершиться неудачно, и возникнет следующая ошибка:

Ошибка: 1204, уровень серьезности: 19, состояние: 1
В настоящее время SQL Server не может получить ресурс LOCK. Повторите команду, когда количество активных пользователей станет меньше, или попросите системного администратора проверить блокировку SQL Server и конфигурацию памяти.

Примечание

Когда возникает ошибка 1204, он останавливает обработку текущего оператора и вызывает откат активной транзакции. Сам откат может заблокировать пользователей или привести к долгому восстановлению базы данных, если вы перезапустите службу SQL Server. Вы можете добавить этот флаг трассировки (-T1211) с помощью диспетчера конфигурации SQL Server.
Чтобы новый параметр запуска вступил в силу, необходимо циклически выполнить службу SQL Server. Если вы запустите запрос DBCC TRACEON (1211, -1) в SQL Server Management Studio, Query Analyzer, флаг трассировки вступит в силу немедленно.
Однако, если вы не добавите параметр-T1211startup, действие atraceoncommand будет потеряно при повторном запуске службы SQL Server. Включение флага трассировки предотвращает любое повышение блокировок в будущем, но не отменяет повышение уровня блокировок, которое уже произошло в активной транзакции.

Использование подсказки блокировки, такой как ROWLOCK, изменяет только первоначальный план блокировки. Подсказки блокировки не предотвращают эскалацию блокировки.

Информация о внутренней поддержке Microsoft

Повышение уровня блокировки обычно предпринимается, когда объем памяти блокировки превышает 24 процента от пула буферов, отличных от AWE. Когда память блокировок достигает 60 процентов видимого пула буферов (это гораздо более возможно при включенном флаге трассировки), все попытки выделить дополнительные блокировки терпят неудачу и генерируются ошибки «1204».

Другие методы предотвращения эскалации блокировки, которые обсуждались ранее в этой статье, являются лучшими вариантами, чем включение флага трассировки.Кроме того, другие методы обычно приводят к более высокой производительности запроса, чем отключение эскалации блокировки для всего экземпляра. Корпорация Майкрософт рекомендует включать этот флаг трассировки только для смягчения серьезной блокировки, вызванной эскалацией блокировки, в то время как другие варианты, такие как те, которые обсуждались ранее в этой статье, исследуются. Чтобы включить флаг трассировки, чтобы он включался при каждом запуске SQL Server, добавьте его в качестве параметра запуска сервера.

PostgreSQL: Документация: 9.1: Явная блокировка

PostgreSQL предоставляет различные режимы блокировки для управления одновременным доступом к данным в таблицах. Эти режимы могут использоваться для блокировки, управляемой приложением. ситуации, когда MVCC не дать желаемое поведение. Кроме того, большинство команд PostgreSQL автоматически получают блокирует соответствующие режимы, чтобы гарантировать, что ссылочные таблицы не удалялись и не изменялись несовместимыми способами, пока команда выполняет. (Например, TRUNCATE не может безопасно выполняться одновременно с другими операциями на том же самом table, поэтому он получает эксклюзивную блокировку таблицы для принудительного который.)

Чтобы изучить список текущих замков в сервер базы данных используйте системное представление pg_locks. Для дополнительной информации по мониторингу состояния подсистемы диспетчера блокировок см. Глава 27.

В списке ниже показаны доступные режимы блокировки и контексты, в которых они автоматически используются PostgreSQL. Вы также можете приобрести любой из эти блокировки явно выполняются с помощью команды LOCK. Помните, что все эти режимы блокировки являются блокировками на уровне таблицы, даже если имя содержит слово "ряд"; названия режимов блокировки исторические.В какой-то степени названия отражают типичные использование каждого режима блокировки, но семантика одинакова. Единственная реальная разница между одним режимом блокировки и другим - набор режимов блокировки, с которыми конфликтует каждый (см. Таблицу 13-2). Две транзакции не могут удерживать блокировки конфликтующих режимы на одном столе в одно и то же время. (Однако транзакция никогда не конфликтует сама с собой. Например, это могло бы получить блокировку ACCESS EXCLUSIVE и позже получите блокировку ACCESS SHARE на та же таблица.) Могут удерживаться неконфликтные режимы блокировки одновременно по многим транзакциям. Обратите внимание, в частности, что некоторые режимы блокировки конфликтуют между собой (например, Блокировка ACCESS EXCLUSIVE не удерживается более чем одной транзакцией за раз), в то время как другие не самоконфликтный (например, ACCESS Блокировка SHARE может удерживаться несколькими транзакциями).

Режимы блокировки на уровне таблицы

ДОСТУП ДОСТАВКА

Конфликты с ДОСТУПОМ Только ЭКСКЛЮЗИВНЫЙ режим блокировки.

Команда SELECT получает блокировка этого режима для ссылочных таблиц. В общем, любой запрос, который только читает таблицу и не изменить, он получит этот режим блокировки.

ДОЛЯ РЯДА

Конфликты с ЭКСКЛЮЗИВНЫМ и ДОСТУП ЭКСКЛЮЗИВНЫЙ замок режимы.

ВЫБОР ДЛЯ ОБНОВЛЕНИЯ и SELECT FOR SHARE команды получить блокировку этого режима на целевой таблице (ах) (в дополнение к блокировкам ACCESS SHARE в любых других таблицах, на которые есть ссылки, но которые не выбраны ДЛЯ ОБНОВЛЕНИЯ / ПОДЕЛИТЬСЯ).

РЯД ЭКСКЛЮЗИВ

Конфликты с ДОЛЯ, ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНО, ЭКСКЛЮЗИВНО и ДОСТУПНО ЭКСКЛЮЗИВНЫЕ режимы блокировки.

Команды UPDATE, DELETE и INSERT получают этот режим блокировки на целевая таблица (в дополнение к ACCESS SHARE блокирует любые другие ссылочные таблицы). В в общем, этот режим блокировки будет активирован любой командой что изменяет данные в таблице.

ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНЫМ ОБНОВЛЕНИЕМ

Конфликты с ОБНОВЛЕНИЕМ ДОЛИ ЭКСКЛЮЗИВНО, ПОДЕЛИТЬСЯ, ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНО, ЭКСКЛЮЗИВНО и ДОСТУПНО ЭКСКЛЮЗИВНЫЕ режимы блокировки. Этот режим защищает стол против одновременных изменений схемы и выполнения VACUUM.

Приобретено VACUUM (без ПОЛНЫЙ), АНАЛИЗ, СОЗДАТЬ ИНДЕКС CONCURRENTLY и некоторые формы ALTER TABLE.

ПОДЕЛИТЬСЯ

Конфликты с ROW ЭКСКЛЮЗИВНО, ПОДЕЛИТЬСЯ ОБНОВЛЕНИЕМ ЭКСКЛЮЗИВНО, ПОДЕЛИТЬСЯ РЯДОМ ЭКСКЛЮЗИВНЫЙ, ЭКСКЛЮЗИВНЫЙ и ДОСТУП К ЭКСКЛЮЗИВНЫМ режимам блокировки.Этот режим защищает таблицу от одновременных данных. изменения.

Приобретено CREATE INDEX (без СОВПАДАЮЩЕГО).

ДОЛЯ РЯДА ЭКСКЛЮЗИВ

Конфликты с ROW ЭКСКЛЮЗИВНО, ПОДЕЛИТЬСЯ ОБНОВЛЕНИЕМ ЭКСКЛЮЗИВНО, ПОДЕЛИТЬСЯ, ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНО, ЭКСКЛЮЗИВНО и ДОСТУПНО ЭКСКЛЮЗИВНЫЕ режимы блокировки. Этот режим защищает стол против одновременных изменений данных и является самоисключающим, поэтому что только один сеанс может проводить его одновременно.

Этот режим блокировки не включается автоматически ни одним Команда PostgreSQL.

ЭКСКЛЮЗИВ

Конфликты с ROW SHARE, СТРОКА ИСКЛЮЧИТЕЛЬНО, ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНЫМ ОБНОВЛЕНИЕМ, ПОДЕЛИТЬСЯ, ПОДЕЛИТЬСЯ СТРОКА ЭКСКЛЮЗИВНЫЙ, ЭКСКЛЮЗИВНЫЙ и ДОСТУП К ЭКСКЛЮЗИВНЫМ режимам блокировки. В этом режиме разрешены только одновременные блокировки ACCESS SHARE, т. Е. Только чтение из таблица может работать параллельно с транзакцией удерживая этот режим блокировки.

Этот режим блокировки не применяется к таблицам автоматически. любым PostgreSQL команда.

ДОСТУП ЭКСКЛЮЗИВ

Конфликты с блокировками всех режимов (ACCESS SHARE, ROW ПОДЕЛИТЬСЯ, РЯД ЭКСКЛЮЗИВНО, ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНЫМ ОБНОВЛЕНИЕМ, ПОДЕЛИТЬСЯ, ПОДЕЛИТЬСЯ РЯД ЭКСКЛЮЗИВНО, ЭКСКЛЮЗИВНО, И ДОСТУП ЭКСКЛЮЗИВНО). Этот режим гарантирует, что держатель - единственная сделка доступ к таблице любым способом.

Получено ALTER TABLE, ТАБЛИЦА ПАДЕНИЯ, ОБРЕЗКА, РЕИНДЕКС, КЛАСТЕР, и команды VACUUM FULL. Этот также является режимом блокировки по умолчанию для операторов LOCK TABLE, которые не указывают режим явно.

Совет: Только ДОСТУП Блокировка EXCLUSIVE блокирует SELECT (без FOR ОБНОВЛЕНИЕ / ПОДЕЛИТЬСЯ).

После получения блокировка обычно сохраняется до конца сделка.Но если блокировка приобретена после установления точка сохранения, блокировка снимается немедленно, если точка сохранения откатился на. Это соответствует принципу, согласно которому ROLLBACK отменяет все эффекты команды с точки сохранения. То же самое касается приобретенных замков. внутри исключения PL / pgSQL блок: выход ошибки из блока освобождает полученные блокировки внутри.

Таблица 13-2. Конфликтующие режимы блокировки

Запрошенный режим блокировки Текущий режим блокировки
ДОСТУП ДОЛЯ ДОЛЯ РЯДА РЯД ЭКСКЛЮЗИВ ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНЫМ ОБНОВЛЕНИЕМ ПОДЕЛИТЬСЯ ДОЛЯ РЯДА ЭКСКЛЮЗИВ ЭКСКЛЮЗИВ ДОСТУП ЭКСКЛЮЗИВНЫЙ
ДОСТУП ДОЛЯ Х
ДОЛЯ РЯДА Х Х
РЯД ЭКСКЛЮЗИВ Х Х Х Х
ПОДЕЛИТЬСЯ ЭКСКЛЮЗИВНЫМ ОБНОВЛЕНИЕМ Х Х Х Х Х
ПОДЕЛИТЬСЯ Х Х Х Х Х
ЭКСКЛЮЗИВНЫЙ РЯД АКЦИЙ Х Х Х Х Х Х
ЭКСКЛЮЗИВ Х Х Х Х Х Х Х
ДОСТУП ЭКСКЛЮЗИВ Х Х Х Х Х Х Х Х

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

Чтобы получить исключительную блокировку на уровне строки для строки без фактически изменяя строку, выберите строку с помощью SELECT FOR UPDATE. Обратите внимание, что как только уровень строки блокировка получена, транзакция может обновить строку несколько раз раз без боязни конфликтов.

Чтобы получить общую блокировку на уровне строки для строки, выберите строку с помощью ВЫБРАТЬ ДЛЯ ПОДЕЛИТЬСЯ. Общая блокировка не мешает другим транзакциям получить то же самое общая блокировка. Однако ни одной транзакции не разрешено обновлять, удалить или исключить исключительную блокировку строки, в которой любой другой транзакция имеет общую блокировку. Любая попытка сделать это приведет к блокировать до тех пор, пока не будут сняты общие блокировки.

PostgreSQL не помнит любая информация об измененных строках в памяти, поэтому нет ограничение на количество строк, заблокированных за один раз.Тем не мение, блокировка строки может вызвать запись на диск, например, SELECT FOR UPDATE изменяет выбранные строки для отметки они заблокированы, что приведет к записи на диск.

Помимо блокировок таблиц и строк, уровень страницы разделяемые / монопольные блокировки используются для управления доступом на чтение / запись к страницы таблицы в общем буферном пуле. Эти замки отпущены сразу после получения или обновления строки. Заявление разработчикам обычно не нужно беспокоиться об уровне страницы замки, но они упомянуты здесь для полноты картины.

Использование явной блокировки может увеличить вероятность тупиков , при этом два (или более) каждая транзакция удерживает блокировки, которые хочет другой. Например, если транзакция 1 получает эксклюзивную блокировку таблицы A, а затем пытается получить эксклюзивную блокировку таблицы B, в то время как транзакция 2 уже имеет эксклюзивно заблокированную таблицу B и теперь хочет эксклюзивную блокировку таблицы A, тогда никто не может продолжить. PostgreSQL автоматически обнаруживает тупиковые ситуации и разрешает их путем прерывание одной из задействованных транзакций, позволяющее другое (и) для заполнения.(Какая именно транзакция будет прерванный трудно предсказать, и на него не следует полагаться по факту.)

Обратите внимание, что взаимоблокировки также могут возникать в результате блокировки на уровне строк (и, следовательно, они могут возникать, даже если явные блокировка не используется). Рассмотрим случай, когда два одновременных транзакции изменяют таблицу. Первая сделка выполняет:

ОБНОВЛЕНИЕ счетов УСТАНОВИТЬ баланс = баланс + 100.00 ГДЕ acctnum = 11111;
 

Это получает блокировку на уровне строки для строки с указанным номер счета.Затем выполняется вторая транзакция:

ОБНОВЛЕНИЕ счетов УСТАНОВИТЬ баланс = баланс + 100.00 ГДЕ acctnum = 22222;
ОБНОВЛЕНИЕ счетов УСТАНОВИТЬ баланс = баланс - 100.00 ГДЕ acctnum = 11111;
 

Первый оператор UPDATE успешно получает блокировку на уровне строки для указанной строки, поэтому ему удалось обновить эту строку. Однако второй Оператор UPDATE обнаруживает, что строка пытается обновить, уже заблокирован, поэтому ждет для завершения транзакции, получившей блокировку.Транзакция номер два теперь ожидает завершения транзакции номер один. прежде, чем он продолжит выполнение. Теперь транзакция первая выполняет:

ОБНОВЛЕНИЕ счетов УСТАНОВИТЬ баланс = баланс - 100.00 ГДЕ acctnum = 22222;
 

Транзакция пытается получить блокировку на уровне строки на указанная строка, но не может: транзакция два уже удерживается такой замок. Таким образом, он ожидает завершения второй транзакции. Таким образом, первая транзакция заблокирована на второй транзакции, а транзакция два блокируется на транзакции один: состояние взаимоблокировки.PostgreSQL обнаружит это ситуации и прервать одну из транзакций.

Лучшая защита от взаимоблокировок - избегать их, будучи уверенными, что все приложения, использующие базу данных получить блокировки на нескольких объектах в согласованном порядке. в пример выше, если обе транзакции обновили строки в в том же порядке, тупика не произошло бы. Следует также убедитесь, что первая блокировка, полученная на объекте в транзакция - это самый строгий режим, который будет необходим для этого объекта.Если это невозможно проверить в заранее, то тупиковые ситуации могут быть обработаны на лету, повторяя транзакции, которые прерываются из-за тупиковых ситуаций.

Пока не обнаружена тупиковая ситуация, транзакция поиск блокировки на уровне таблицы или на уровне строки будет ждать на неопределенный срок для снятия конфликтующих блокировок. Это означает это плохая идея для приложений держать транзакции открытыми для длительные периоды времени (например, в ожидании ввода данных пользователем).

PostgreSQL предоставляет средства для создания замков, которые имеют значение, определяемое приложением.Это называется консультативных замков , потому что система не требует их использования - это зависит от приложение, чтобы использовать их правильно. Консультативные блокировки могут быть полезны для стратегий блокировки, которые неудобно подходят для MVCC модель. Например, рекомендательные блокировки обычно используются для имитировать пессимистические стратегии блокировки, типичные для так называемых системы управления данными в виде "плоских файлов". Хотя флаг, хранящийся в таблице, может использоваться для того же цель, консультативные блокировки выполняются быстрее, предотвращают раздувание таблицы и автоматически очищается сервером в конце сеанс.

Есть два способа получить консультативную блокировку в PostgreSQL: на уровне сеанса или на уровне транзакции. После получения на уровне сеанса консультативная блокировка удерживается до тех пор, пока явно не будет снята или сеанс заканчивается. В отличие от стандартных запросов блокировки, рекомендации на уровне сеанса запросы блокировки не соблюдают семантику транзакции: блокировка полученный во время транзакции, которая позже откатывается, будет все еще будет удерживаться после отката, а также разблокировка эффективно, даже если вызывающая транзакция позже завершится неудачно.Замок может быть приобретен несколько раз в процессе владения; для каждого завершенный запрос блокировки должна быть соответствующая разблокировка запрос до фактического снятия блокировки. Уровень транзакции запросы блокировки, с другой стороны, ведут себя больше как обычная блокировка запросы: они автоматически освобождаются в конце транзакции, и явной операции разблокировки нет. Этот поведение часто более удобно, чем на уровне сеанса поведение при кратковременном использовании консультативной блокировки.Запросы на блокировку на уровне сеанса и на уровне транзакции для одного и того же идентификатор консультативной блокировки будет блокировать друг друга в ожидаемом путь. Если сеанс уже имеет данную консультативную блокировку, дополнительные запросы от него всегда будут успешными, даже если другие сеансы ожидают блокировки; это утверждение верно независимо от того, удерживается ли существующая блокировка и новый запрос находятся на уровне сеанса или транзакции.

Как и все блокировки в PostgreSQL, полный список рекомендуемых блокировки, которые в настоящее время удерживаются любым сеансом, можно найти в Системный вид pg_locks.

Как рекомендательные, так и обычные блокировки хранятся в общей пул памяти, размер которого определяется конфигурацией переменные max_locks_per_transaction и max_connections. Следует проявлять осторожность, чтобы не исчерпать эту память или сервер. вообще не сможет предоставить какие-либо блокировки. Это накладывает верхний ограничение на количество рекомендательных блокировок, предоставляемых сервером, обычно от десятков до сотен тысяч в зависимости от того, как сервер настроен.

В определенных случаях с использованием рекомендательных методов блокировки, особенно в запросах, включающих явное упорядочивание и предложения LIMIT, необходимо следить за тем, чтобы блокировки, полученные из-за порядка, в котором выражения SQL оцениваются. Например:

ВЫБЕРИТЕ pg_advisory_lock (id) FROM foo WHERE id = 12345; -- Ok
ВЫБЕРИТЕ pg_advisory_lock (id) FROM foo WHERE id> 12345 LIMIT 100; -- Опасность!
ВЫБРАТЬ pg_advisory_lock (q.id) ИЗ
(
  ВЫБЕРИТЕ id из foo WHERE id> 12345 LIMIT 100
) q; -- Ok
 

В приведенных выше запросах вторая форма опасна, потому что ПРЕДЕЛ не гарантируется применяется до выполнения функции блокировки.Это может вызвать некоторые блокировки, которые приложение не было ожидая, и, следовательно, не сможет освободить (пока не закончит сеанс). С точки зрения приложения такие замки будет болтаться, хотя по-прежнему доступен для просмотра в pg_locks.

Функции управления блокировками с рекомендациями: описано в таблице 9-63.

Великих дебатов по SQL Server: блокировка страниц в памяти

«Унция профилактики стоит больше, чем фунт лечения.»- Бенджамин Франклин

Недавно я ответил на следующий, казалось бы, безобидный вопрос в Твиттере: « Должен ли я использовать блокировку страниц в памяти в качестве конфигурации по умолчанию? »Мой ответ был да , если он 64-битный, у вас установлено более 16-32 ГБ ОЗУ, вы правильно установили« max server memory »и отслеживаете Memory \ Available Mbytes счетчик, тогда должен включить его по умолчанию. В ходе последовавших за этим дебатов стало ясно, что мой совет несколько расходился с советом, предложенным по этой теме командой CSS в Microsoft, а также несколькими уважаемыми MVP по SQL Server; Не потому, что привилегия Lock Pages in Memory все еще иногда требовалась, в ответ на то, что операционная система вынуждает SQL Server обрезать свой набор рабочей памяти, а в том, что ему должно быть назначено по умолчанию .

С их любезного разрешения, я собираюсь выделить сообщения двух MVP по SQL Server и уважаемых членов нашего сообщества SQL Server, Брента Озара и Гленна Алана Берри, которые резюмируют противоположное мнение:

Другими словами, в более старых версиях Windows Server, которые агрессивно реагировали на нехватку памяти, сокращая рабочий набор SQL Server, использование LPIM было весьма целесообразным. Однако в новых операционных системах с улучшенным управлением памятью лучше не назначать привилегию LPIM, если это действительно не требуется.Во многих отношениях это разумный совет, и даже совсем недавно, в начале 2011 года, когда я впервые присоединился к SQLskills в качестве консультанта, я был бы полностью с ним согласен. Однако мой опыт с тех пор убедил меня в обратном. В этой статье я надеюсь окончательно изложить основные проблемы, связанные с использованием LPIM, и объяснить, почему я рекомендую использовать Lock Pages in Memory в качестве параметра конфигурации по умолчанию для всех 64-битных экземпляров SQL Server, за исключением случаев, когда у вас есть веская причина (например, использование виртуализированной среды).

Основы SQL OS Распределение памяти и управление ею

Операционная система Windows запускает каждый процесс, включая процесс SQL Server, в собственной выделенной области виртуальной памяти, известной как виртуальное адресное пространство (VAS). VAS разделен на два региона; режим ядра (или системное) пространство и пользовательский режим (или приложение) пространство. VAS в режиме ядра используется ОС для отображения различных структур данных системы, таких как файловый кеш, страничные и не страничные пулы.VAS пользовательского режима используется для отображения памяти для выполняемого в данный момент процесса приложения, то есть SQL Server.

В конфигурации по умолчанию все выделения памяти SQL Server выполняются в пользовательском режиме VAS с использованием вызовов функции VirtualAlloc ( ) Windows API. Любая память, выделенная VirtualAlloc ( ) , является страничной , что означает, что ОС Windows может принудительно выгружать эту память на диск в ответ на давление памяти.Память, выделенная VirtualAlloc , не обязательно должна присутствовать физически, но Windows гарантирует, что объем памяти, выделенной SQL Server, будет меньше или равен установленной физической памяти плюс емкость файла подкачки.

Когда разрешение Блокировка страниц в памяти назначено учетной записи службы SQL Server, тогда выделение памяти для буферного пула выполняется с помощью вызовов функции в API AWE под названием AllocateUserPhysicalPages ( ) .Вся память, которая выделяется с помощью API AllocateUserPhysicalPages () , считается заблокированной, т. Е. , не , страничная, , и должна поддерживаться физической памятью на сервере.

Как правило, SQL Server будет использовать столько памяти, сколько вы можете ему предоставить, и он не будет освобождать память, выделенную им при обычных операциях, если ОС Windows Server не установит флаг уведомления о ресурсах нехватка памяти. Компонент SQLOS, называемый Resource Monitor, отслеживает API-интерфейс QueryMemoryResourceNotification Windows Server, и когда Windows устанавливает уведомление о нехватке ресурсов памяти, SQLOS будет реагировать, очищая свои кеши изнутри, чтобы уменьшить рабочий набор процесса и освободить память обратно для Windows.

На этом этапе любая выгружаемая память, то есть память, выделенная через VirtualAlloc ( ) , может быть выгружена на диск, чтобы освободить больше памяти для ОС. И наоборот, любая память, выделенная с помощью AllocateUserPhysicalPages ( ) , заблокирована и не может быть выгружена. В случаях, когда заблокированы большие объемы памяти, это может ограничить объем памяти, который ОС Windows может освободить под давлением, и это может привести к нестабильности системы.

Тем не менее, ОС Windows сделает все возможное, чтобы уменьшить потребление памяти, и любая из незаблокированных структур SQLOS, например, стеки потоков и любая другая память небуферного пула, по-прежнему может быть выгружена. Это может вызвать проблемы с производительностью, но редко влияет на производительность SQL Server так же, как если бы на диск было выгружено более 50 ГБ буферного пула.

Потенциальная проблема с использованием страниц блокировки в памяти заключается в том, что если SQLOS не может достаточно быстро ответить на уведомление о нехватке памяти, чтобы освободить память, которая требуется Windows, это может вызвать ошибки нехватки памяти (OOM) в Windows и нестабильность. .Способ избежать этого, как мы обсудим некоторые изменения, - это внести соответствующие изменения в конфигурацию, чтобы в первую очередь предотвратить нагрузку на память в Windows.

Краткая история заблокированных страниц в памяти

Позвольте мне начать с того, что весь спор о том, будет ли использовать LPIM, полностью заключен в контексте 64-битной среды. Однако, чтобы полностью понять, почему эта тема вызвала столько путаницы на протяжении многих лет, стоит вкратце вернуться к плохим старым временам 32-разрядной версии.

Если вы используете 32-разрядный SQL Server и вам нужен доступ к более чем 2 ГБ VAS в пользовательском режиме, тогда у вас есть для использования страниц блокировки в памяти; там нет дебатов. Необходимо настроить ОС для использования расширений физических адресов ( PAE ), включить расширения оконного управления адресами ( AWE ), а затем назначить разрешение Lock Pages in Memory учетной записи SQL Server, чтобы она могла выделять память AWE, через звонки на AllocateUserPhysicalPages () .Таким образом, на типичном 32-разрядном сервере, использующем LPIM, у вас будет, помимо 2 ГБ страниц VAS пользовательского режима, отдельная область с отображением AWE размером до 64 ГБ (указатель PAE был 36-разрядным) не страничная память. Эта отображаемая AWE область предназначена для исключительного использования частью кэша данных буферного пула. Остальная часть пула буферов (в основном кэш планов) и другие выделения пула, не являющиеся буферами, по-прежнему отображаются в пределах 2 ГБ VAS пользовательского режима.

Однако появление 64-битного процесса SQL Server полностью изменило динамику выделения памяти SQLOS.Вместо стандартного 2 ГБ VAS пользовательского режима для 32-разрядного процесса 64-разрядный процесс имеет доступ к VAS пользовательского режима размером до 8 ТБ без каких-либо дополнительных изменений конфигурации! У 64-битных пользователей теперь есть потенциально огромный объем памяти для буферного пула, но вся эта память выделяется через VirtualAlloc и поддерживается VAS пользовательского режима, а также выгружается на страницу , то есть при отсутствии LPIM, память, выделенная для кэша данных и планов, может быть выгружена.

В 64-разрядном SQL Server учетная запись SQL Server по-прежнему требует разрешения Lock Pages in Memory , чтобы иметь возможность выделять заблокированные страницы через AllocateUserPhysicalPages () , но есть несколько больших отличий:

  • Базовая зависимость от памяти, отображаемой AWE, устранена .Вам не нужен AWE в 64-битном SQL Server; опция awe enabled sp_configure не имеет значения. Продолжение использования одной и той же функции API AWE предназначено исключительно для обеспечения блокировки выделенных страниц.
  • Память, выделенная через AllocateUserPhysicalPages ( ) , может использоваться как для кэша данных, так и для кэша планов . В 64-битном SQL Server кэш планов больше не выделяется отдельно (теперь он использует украденные страницы из пула буферов)

Суть проблемы заключается в том, что при определенных условиях ОС Windows Server может вызывать усечку трудозатратного рабочего набора запущенных процессов, вынуждая большие объемы памяти, выделенной SQL Server, выгружаться на диск и приводить к снижение производительности в среде SQL Server.Некоторые из конкретных сценариев, в которых это может произойти, были задокументированы группой службы поддержки продуктов в Microsoft в KB 918483 (http://support.microsoft.com/kb/918483).

Это была особая проблема для ранних 64-разрядных сред - SQL Server 2005 на Windows Server 2003 - где ОС была агрессивна в своих запросах на сокращение рабочего набора SQL Server в ответ на нехватку памяти. Проблема сильно усугублялась тем фактом, что в ранних 64-разрядных версиях SQL Server блокировка страниц в памяти была функцией только для предприятий.Если бы вы использовали Standard Edition, вы ничего не могли бы сделать, чтобы предотвратить эти обрезки рабочего набора.

Итак, в то время как у 32-разрядных пользователей была относительно небольшая область выгружаемой памяти (2 ГБ VAS пользовательского режима), а затем большая область заблокированной памяти для кэша данных, которая была защищена от жестких обрезков, ранняя версия Standard 64- У пользователей bit не было защиты от жесткой обрезки ОС наиболее значительной части рабочего набора SQL Server в ответ на нехватку памяти.

Если у вас есть SQL Server с 64 ГБ ОЗУ и 52 ГБ из этого выделено для пула буферов, эти жесткие сокращения оказывают значительное влияние на производительность работы сервера, поскольку вся цель пула буферов - минимизировать доступ к диску путем частого кэширования. или, по крайней мере, недавно использованные страницы в памяти, время доступа которых значительно быстрее, чем при извлечении страниц с диска.

Я могу только догадываться о количестве обращений за поддержкой продукта, которые были созданы в результате этой проблемы, и потребовалось большое давление со стороны сообщества, особенно со стороны MVP, чтобы добавить LPIM в Standard Edition. Наконец, давление окупилось, и Боб Уорд объявил сначала на PASS Europe 2009, а затем в своем блоге, что в SQL Server Standard Edition наконец-то будет включена возможность использования страниц блокировки в памяти. Это изменение было выпущено в мае 2009 года с CU4 для SQL Server 2005 с пакетом обновления 3 и CU2 для SQL Server 2008 с пакетом обновления 1 (http: // support.microsoft.com/kb/970070). Если вы использовали Standard Edition, вам нужно было применить соответствующее накопительное обновление, чтобы иметь возможность включить Trace Flag 845 для использования страниц блокировки в памяти для пула буферов.

Ситуация стабилизировалась, и впоследствии, в Windows Server 2008, изменения, внесенные в диспетчер памяти (также задокументированные в упомянутой ранее статье базы знаний), значительно снизили проблему трудоемкой обрезки набора для SQL Server. Это побудило Microsoft объявить вскоре после выпуска Windows Server 2008, что Lock Pages in Memory больше не требуется.

Это более или менее возвращает нас к текущей ситуации и совету Брента, Гленна и других о том, что если вы используете SQL Server 2005 на Windows Server 2003, вам понадобится LPIM; если вы используете Windows Server 2008 или более позднюю версию, вы этого не сделаете, по крайней мере, не по умолчанию.

Почему блокировка страниц в памяти должна быть конфигурацией по умолчанию

Я представлю свои причины для продолжения использования LPIM в качестве выбора по умолчанию, даже в Windows Server 2008 и Windows Server 2008 R2, с точки зрения основных контраргументов:

  • Улучшения в управлении памятью означают, что s больше не требуется - мой опыт подсказывает обратное
  • В 64-разрядной версии u se LPIM может вызвать нестабильность ОС во время нехватки памяти, , поскольку он ограничивает память, которую Windows может быстро освободить с помощью подкачки страниц - этих проблем можно избежать путем тщательной настройки параметров памяти SQL Server

Однако в качестве предостережения, прежде чем мы начнем, я отсылаю вас к этому недавнему сообщению в блоге группы поддержки SQL Server, касающемуся потенциальной ошибки, которая может привести к повреждению при использовании LPIM в некоторых сборках SQL Server 2008 R2 и 2012 , на некоторых неустановленных установках Windows Server.

Жесткие обрезки все еще происходят в последних версиях Windows Server

Это, безусловно, правда, что изменения, внесенные в диспетчер памяти Windows Server 2008, делают проблему намного менее серьезной, чем это было в Windows Server 2003. Однако некоторые из проблем, перечисленных в статье базы знаний , по-прежнему возникают в Windows Server 2008 и Windows Server 2008 R2 и по-прежнему может привести к резкому сокращению рабочего набора и серьезным проблемам для SQL Server.

Я работал с многочисленными клиентами, такими как Windows Server 2008 и Windows Server 2008 R2, и, тем не менее, они страдали от проблем с производительностью, коренная причина которых заключалась в усложнении рабочего набора, выпущенном по приказу Windows.

В некоторых случаях эти обрезки на самом деле не были вызваны нехваткой памяти в системе; в худшем случае на сервере было установлено 64 ГБ ОЗУ, а в момент, когда жесткая обрезка запускалась Windows Server 2008 R2, на сервере было более 48 ГБ доступной памяти!

Что действительно коварно в этом конкретном случае, так это то, что из-за того, что сокращалось менее 50% памяти процесса SQL Server, никакие уведомления об обрезке не регистрировались в журнале ошибок SQL Server! Единственный способ отследить эту проблему - контролировать разбиение на страницы с помощью счетчиков монитора производительности для объекта Process (как описано в http: // support.microsoft.com/kb/918483).

Со временем я взаимодействовал с бесчисленным количеством клиентов, у которых это оказалось причиной проблем с производительностью SQL Server, и в результате я вернулся к позиции, согласно которой Lock Pages in Memory должны использоваться в качестве конфигурации по умолчанию. если вы используете SQL Server на 64-битном экземпляре SQL с более чем 16-32 ГБ ОЗУ, независимо от версии и выпуска ОС Windows Server, которые вы используете.

Если у вас возникают проблемы с производительностью, связанные с обрезкой памяти, очень вероятно, что включение Lock Page в памяти поможет.Конечно, если вы можете найти основную причину обрезки рабочего набора и остановить это, то это даже лучше. К сожалению, отслеживание причин проблем, подробно описанных в статье базы знаний, может занять много времени, даже с помощью службы поддержки клиентов Microsoft, и до тех пор, пока вы этого не сделаете, у вас по-прежнему будут проблемы с производительностью SQL Server. Я бы предпочел предотвратить возникновение проблем в среде, чем ждать, чтобы узнать, может ли это произойти, а затем попытаться отреагировать на проблемы с производительностью постфактум.

Предотвращение проблем с блокировкой страниц в памяти

С блокировкой страниц в памяти, как и во всем остальном, нет такой вещи, как бесплатный обед, и хотя он может помочь предотвратить потенциальные проблемы, связанные с усложнением трудоемких рабочих наборов SQL Server, он также может привести к нехватке памяти для ОС Windows Server, если соответствующая конфигурация всей системы не была произведена, чтобы предотвратить нагрузку на память в ОС. Несмотря на то, что SQLOS предназначен для отслеживания уведомлений о нехватке памяти из ОС Windows через API QueryMemoryResourceNotification , возможно, что под нагрузкой SQLOS не сможет достаточно быстро реагировать на состояние нехватки памяти, и Windows В результате ОС может работать нестабильно.

Рекомендуется, даже если вы не используете Lock Pages in Memory и обязательно перед его включением, вам необходимо установить соответствующее значение для параметра ' max server memory ' sp_configure , чтобы ограничить объем памяти, который SQL Server выделяет для своего буферного пула, и оставить достаточно памяти, доступной для ОС Windows Server и других приложений, работающих на сервере, чтобы иметь возможность работать, не вызывая нехватки памяти на сервере.Эти «другие приложения» включают антивирусное программное обеспечение, службы Integration Services и любые многостраничные распределения SQL Server, происходящие за пределами пула буферов.

К сожалению, не существует жесткого правила, определяющего оптимальное значение « max server memory » для данного экземпляра SQL Server. Лучшая рекомендация, которую я могу дать, - это установить это значение искусственно низким, а затем постепенно настраивать значение на основе мониторинга счетчика производительности Memory \ Available Mbytes в Windows, пока вы не достигнете оптимального значения для сервера.

Я обычно начинаю с резервирования 1-2 ГБ ОЗУ для ОС, а затем дополнительных 1 ГБ на каждые 4 ГБ ОЗУ, установленных из 4–16 ГБ, а затем по 1 ГБ на каждые 8 ​​ГБ ОЗУ, установленного выше 16 ГБ. Затем я слежу за счетчиком Memory \ Available Mbytes с течением времени, чтобы определить пиковое использование памяти для системы. Память сверх того, что требуется для поддержки этого пикового использования памяти, можно добавить к опции « max server memory ».

На более техническом уровне вы можете выполнить необходимые вычисления для размера стека потоков SQL Server, оценить использование памяти из многостраничных распределителей в SQL Server, таких как SQLCLR, добавить дополнительные требования к памяти для SQL Серверный процесс, а затем для каждого из запущенных приложений или служб, чтобы попытаться достичь разумного начального значения для «максимальная память сервера» .Мой личный опыт показывает, что попытка выбрать значение таким образом, как правило, приводит к установке слишком высокого значения, и не всегда ясно, что это так, пока у вас не возникнет проблема.

Рекомендации для виртуальных сред

Брент в своем ранее упомянутом сообщении в блоге приводит веские аргументы против использования LPIM для серверов SQL, работающих в виртуальной среде. Запуск SQL Server на виртуальных машинах, безусловно, представляет интересную проблему, касающуюся использования страниц блокировки в памяти , поскольку существует возможность чрезмерного использования памяти в зависимости от используемого гипервизора.Избыточное использование памяти - это сценарий, при котором память, выделенная виртуальным машинам, работающим на хосте, превышает общий объем физической оперативной памяти, доступной на сервере.

Когда происходит чрезмерное выделение памяти, одним из первых способов реагирования гипервизора является использование специального драйвера, известного как драйвер балуна, который устанавливается на виртуальную машину как часть инструментов виртуальной машины. По сути, гипервизор задает драйверу балуна задачу уменьшения потребления памяти в виртуальной машине до целевого уровня, а драйвер балуна отвечает, приобретая память в виртуальной машине.Это «раздувающееся» действие создает нехватку памяти в виртуальной машине, что, в свою очередь, побуждает гостевую ОС уменьшить использование физической памяти процессами в виртуальной машине. Освободившаяся память затем доступна гипервизору для выделения другим виртуальным машинам, работающим на хосте, по мере необходимости для предотвращения нехватки памяти на уровне гипервизора. В конечном итоге, если будет освобождено недостаточно памяти, гипервизор также начнет жесткую подкачку памяти виртуальной машины на диск, что может иметь огромное влияние на производительность.

Ситуация еще более сложная, когда SQL Server использует страниц блокировки в памяти , поскольку раздувание приводит к нехватке памяти в виртуальной машине, но гостевая ОС ограничена в объеме памяти, который она может освободить путем подкачки на диск.SQLOS по-прежнему будет реагировать на нехватку памяти, уменьшая использование внутренней памяти, но она может не реагировать достаточно быстро, что приведет к состоянию OOM для ОС Windows, работающей в гостевой системе, как если бы на физической машине закончилась память.

Существует несколько способов решения проблем с драйвером балуна, связанных с виртуальными машинами, худший из которых - полностью отключить драйвер балуна для виртуальной машины SQL Server. Драйвер балуна существует, чтобы позволить гипервизору управлять нехваткой памяти наилучшим образом для общей производительности виртуальных машин, работающих на узле, поэтому его не следует отключать, как правило.

Вместо этого, если виртуальная машина имеет такое условие, что страниц блокировки в памяти необходимо для предотвращения жесткого разбиения рабочего набора SQL Server на страницы, или если у виртуальной машины должен быть гарантирован минимальный набор ресурсов памяти, тогда следует зарезервировать быть настроенным для виртуальной машины так, чтобы гипервизор увеличивал объем памяти только в крайнем случае. В такой ситуации лучше всего установить параметр min server memory sp_configure , чтобы SQL Server уменьшал объем своей памяти только до минимального уровня, необходимого для надлежащей производительности приложения.

Сводка

Итак, у вас есть блокировок в памяти, бородавок и все такое; история его использования, путаница, связанная с его использованием, и почему я считаю, что он по-прежнему является хорошей конфигурацией по умолчанию для 64-битных экземпляров SQL Server, даже при использовании Windows Server 2008 и Windows Server 2008R2.

По моему опыту, те же проблемы с усечением сложных рабочих наборов, которые преследовали 64-разрядные экземпляры SQL Server, работающие в Windows 2003, могут возникать и продолжают возникать даже в Windows Server 2008 и Windows Server 2008R2, и потенциальные опасности использования заблокированных страниц Объем памяти может быть минимизирован за счет точной настройки «максимальной памяти сервера» и тщательного мониторинга использования памяти.

В конечном итоге решение остается за вами, но, надеюсь, эта статья, по крайней мере, поможет сделать это решение более обоснованным. В этом отношении я придерживаюсь той же позиции, что и великий Бенджамин Франклин: « Унция профилактики стоит больше, чем фунт лекарства ».

Если вы хотите узнать больше о том, как устранять проблемы с управлением памятью или другие распространенные проблемы, не связанные с SQL Server, ознакомьтесь с бесплатной электронной книгой «Устранение неполадок SQL Server» Джонатана Кехайаса и Теда Крюгера.

Далее в серии «Великие дебаты по SQL Server» series: Коэффициент попадания в буферный кэш

Блокировка таблицы разделенных страниц - Документация по ядру Linux

Первоначально спин-блокировка mm-> page_table_lock защищала все таблицы страниц mm_struct. Но такой подход приводит к плохой масштабируемости ошибок страниц. многопоточные приложения из-за высокой конкуренции за блокировку. Улучшить масштабируемость, введена блокировка таблицы разделенных страниц.

С блокировкой таблицы разделенных страниц у нас есть отдельная блокировка для каждой таблицы для сериализации доступ к столу. На данный момент мы используем раздельный замок для PTE и PMD. столы. Доступ к таблицам более высокого уровня защищен mm-> page_table_lock.

Есть помощники для блокировки / разблокировки стола и других вспомогательных функций:

  • pte_offset_map_lock ()
    отображает pte и берет блокировку таблицы PTE, возвращает указатель на взятый замок;
  • pte_unmap_unlock ()
    открывает и отменяет отображение таблицы PTE;
  • pte_alloc_map_lock ()
    при необходимости выделяет таблицу PTE и берет блокировку, возвращает указатель принять блокировку или NULL, если выделение не удалось;
  • pte_lockptr ()
    возвращает указатель на блокировку таблицы PTE;
  • pmd_lock ()
    принимает блокировку таблицы PMD, возвращает указатель на взятую блокировку;
  • pmd_lockptr ()
    возвращает указатель на блокировку таблицы PMD;

Блокировка таблицы разделенных страниц для таблиц PTE включена во время компиляции, если CONFIG_SPLIT_PTLOCK_CPUS (обычно 4) меньше или равно NR_CPUS.Если блокировка разделения отключена, все таблицы управляются mm-> page_table_lock.

Блокировка таблицы разделенных страниц для таблиц PMD включена, если она включена для PTE таблицы и архитектура поддерживает это (см. ниже).

Hugetlb и блокировка таблицы разделения страниц

Hugetlb поддерживает несколько размеров страниц. Мы используем раздельный замок только для PMD уровень, но не для PUD.

Помощники, относящиеся к Hugetlb:

  • huge_pte_lock ()
    принимает блокировку разделения pmd для страницы PMD_SIZE, mm-> page_table_lock иначе;
  • huge_pte_lockptr ()
    возвращает указатель на блокировку таблицы;

Поддержка блокировки таблицы разделенных страниц архитектурой

Нет необходимости в специальном включении блокировки таблицы разделенных страниц PTE: все необходимое выполняется pgtable_page_ctor () и pgtable_page_dtor (), который должен вызываться при выделении / освобождении таблицы PTE.

Убедитесь, что архитектура не использует распределитель slab для таблицы страниц. размещение: slab использует page-> slab_cache для своих страниц. Это поле разделяет хранилище со страницей-> ptl.

Блокировка разделения

PMD имеет смысл только в том случае, если у вас таблица более двух страниц уровни.

Для включения раздельной блокировки PMD требуется вызов pgtable_pmd_page_ctor () для таблицы PMD размещение и pgtable_pmd_page_dtor () при освобождении.

Распределение обычно происходит в pmd_alloc_one (), освобождение - в pmd_free () и pmd_free_tlb (), но убедитесь, что вы покрываете все распределение / освобождение таблицы PMD пути: i.e X86_PAE предварительно выделяет несколько PMD для pgd_alloc ().

Когда все готово, вы можете установить CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK.

ПРИМЕЧАНИЕ: pgtable_page_ctor () и pgtable_pmd_page_ctor () могут дать сбой - он должен обращаться должным образом.

стр .-> ptl

page-> ptl используется для доступа к блокировке таблицы разделенных страниц, где 'page' - структура. страница страницы, содержащей таблицу. Он разделяет хранилище со страницей-> частным (и несколько других полей вместе).

Чтобы избежать увеличения размера страницы структуры и обеспечить лучшую производительность, мы используем фокус:

  • если spinlock_t умещается в long, мы используем page-> ptr как spinlock, поэтому можно избежать косвенного доступа и сохранить строку кэша.
  • , если размер spinlock_t больше размера long, мы используем page-> ptl как указатель на spinlock_t и разместить его динамически. Это позволяет использовать разделенная блокировка с включенным DEBUG_SPINLOCK или DEBUG_LOCK_ALLOC, но стоит еще одна строка кэша для непрямого доступа;

spinlock_t, выделенный в pgtable_page_ctor () для таблицы PTE и в pgtable_pmd_page_ctor () для таблицы PMD.

Пожалуйста, никогда не обращайтесь к page-> ptl напрямую - используйте соответствующий помощник.

.

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *