Гранулярность блокировок указывает, какой блокируется ресурс в одной попытке блокирования. Database Engine может блокировать такие ресурсы, как:
♦ строка;
♦ страница;
♦ индексный ключ или диапазон индексных ключей;
♦ таблица;
♦ экстент;
♦ сама база данных.
Строка является наименьшим ресурсом, который может быть заблокирован. Поддержка блокировки на уровне строки включает и данные строк, и записи индексов. Блокировка на уровне строки означает, что блокируется только та строка, к которой осуществляется доступ приложения. Следовательно, все другие строки, принадлежащие той же странице, являются свободными и могут использоваться другими приложениями. Database Engine также может блокировать страницу, на которой хранится строка, которая должна быть заблокирована.
Блокировка также выполняется для участков диска, называемых экстентами, которые имеют размер 64 Кбайт. Блокировка экстента устанавливается автоматически, когда растет таблица (или индекс) и требуется дополнительное дисковое пространство.
Гранулярность блокировок влияет на конкурентный доступ. Обычно, чем больше гранулярность блокировки, тем больше сокращается возможность одновременного доступа к данным. Это означает, что блокировка на уровне строки максимизирует конкурентный доступ, потому что она блокирует только одну строку, оставляя все другие свободными. С другой стороны, накладные расходы системы увеличиваются, потому что каждая заблокированная строка требует одного замка. Блокировка на уровне страницы (и блокировка на уровне таблицы) ограничивает доступность данных, но уменьшает накладные расходы системы.