Ответ 1
Блокировка клавиатуры влияет на все строки, соответствующие указанному предикату (вид) - в вашем примере будут затронуты все строки с surname = 'Jones'
.
Используется слово "диапазон", поскольку в зависимости от предиката может влиять диапазон строк, например, если предикат был age > 18
, то все строки, в которых возраст больше 18, будут затронуты.
Также важно понимать, что блокировка ключей не просто индивидуально блокирует каждую соответствующую строку в индексе - ваш пример блокировки не только затрагивает все существующие строки в индексе с фамилией "Джонс", но также влияет на любую попытку изменения существующую строку или вставить новую строку с фамилией "Джонс".
Это может помочь немного задуматься о блокировках - блокировки имеют эффект только тогда, когда SQL Server пытается получить еще одну блокировку, которая может быть несовместимой (т.е. не является законным иметь обе блокировки в то же время). Например, если у вас есть эксклюзивная блокировка ключей в строках с помощью age > 18
и попытка вставить или изменить строку с помощью age = 42
, тогда SQL-сервер сначала попытается получить блокировки relvant - видя, что существует существующая блокировка ключа для строки с age > 18
SQL Server определяет, что блокировки несовместимы и принимают соответствующие действия.