Ресурсы для понимания блокировки и параллелизма SQL Server?

8

Как показал недавний вопрос о блокировке шахты и параллелизме HARD.

Можете ли вы предложить какие-либо полезные ресурсы для профессионалов SQL от среднего до продвинутого уровня, которые могли бы провести тщательное изучение этих вопросов, которые при правильном изучении позволили бы лучше ориентироваться во всех присущих ловушках в этой области?

Я имею в виду все виды ресурсов - учебные пособия, блоги, справочные страницы, сессии PASS или что-нибудь еще.

ErikE
источник

Ответы:

7

Лучшая книга на эту тему и самый полный ресурс - это документация Калена Делани по SQL Server 2008 Internals. Вы действительно не можете сделать лучше. Другая хорошая книга на эту тему - Крис Болтон, SQL Server 2008, «Внутренние компоненты и устранение неполадок». Я не думаю, что она так же полна, как книга Калена, но в ней все хорошо, особенно в области блокировки и параллелизма.

Грант Фричей
источник
Я должен поддержать предложение Гранта - SQL Server 2008 Internals от Kalen Delaney - УДИВИТЕЛЬНЫЙ ресурс! Он постоянно сидит на моем столе.
ОливерАсмус
7

Хотя книги по конкретным продуктам прекрасно объясняют, как использовать эти продукты (а серия Калена Делани потрясающая!), У них нет шансов противостоять «черной книге» и «красной книге» систем баз данных. Специально черная книга (первая ссылка) является обязательным чтением, если вы хотите понять эти понятия. Красная книга представляет собой сборник исследовательских работ, многие из которых доступны в Интернете. Я держу страницу со ссылками на некоторые из них . Третья связанная книга - это, по сути, более новая версия «черной книги» (также более дешевая и доступная на Kindle ...)

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

Ремус Русану
источник
5

Блокировка и параллелизм - это тема, которую я узнал больше всего через тестирование и наблюдение.

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

  • Создайте SQL для тестовой транзакции. Что-то простое и самодостаточное с контекстом / доменом, которое вы понимаете, например, проверка корзины покупок или банковский перевод. Убедитесь, что у вас есть метод проверки того, что данные находятся в ожидаемом состоянии после тестирования.
  • Запустите ваш сценарий, соблюдая тип, продолжительность и последовательность блокировок, применяемых ядром базы данных.
  • Измените уровень изоляции или примените подсказки и наблюдайте изменение к взятым замкам.
  • Когда вы думаете, что у вас есть транзакция, которая переживет параллелизм , загрузите ее.

Я склонен проверять последовательности блокировки с помощью флага трассировки 1200 или трассировки профилировщика . Я считаю, что можно использовать расширенные события, но я еще не пробовал себя.

Марк Стори-Смит
источник