Мартин грубер понимание sql перевод Лебедева В. Н. Под редакцией Булычева В. Н. Москва, 1993 martin gruber


Download 1.45 Mb.
bet128/172
Sana26.01.2023
Hajmi1.45 Mb.
#1128343
1   ...   124   125   126   127   128   129   130   131   ...   172
Bog'liq
Грубер. Понимание SQL

Распределяемые (или S-блокировки) могут быть установлены более чем одним пользователем в данный момент времени. Это дает возможность любому числу пользователей обращаться к данным, но не изменять их.
Специальные блокировки (или X-блокировки) не позволяют никому вообще, кроме владельца этой блокировки обращаться к данным. Специальные блокировки используются для команд, которые изменяют содержание или структуру таблицы. Они действуют до конца транзакции.
Общие блокировки используются для запросов. Насколько они продолжительны, зависит фактически от уровня изоляции.
Что такое уровень изоляции блокировки? Это — то, что определяет, сколько таблиц будет блокировано.
В DB2, имеется три уровня изоляции, два из которых можно применить и к распределеным и к специальным блокировкам, а третий, ограниченный, чтобы использовать эти блокировки совместно. Они управляются командами, поданными извне SQL, так что мы можем обсуждать не указывая их точного синтаксиса. Точный синтаксис команд, связанных с блокировками, различен для различных реализаций.
Следующее обсуждение полезно прежде всего на концептуальном уровне.
Уровень изоляции — повторное чтение — гарантирует, что внутри данной транзакции все записи, извлеченные с помощью запросов, не могут быть изменены. Поскольку записи, модифицируемые в транзакции, являются субъектами специальной блокировки, пока транзакция не завершена, они не могут быть изменены в любом случае.
С другой стороны, для запросов повторное чтение означает, что вы можете решить заранее, какие строки вы хотите заблокировать и выполнить запрос, который их выберет. Выполняя запрос, вы гарантированы, что никакие изменения не будут сделаны в этих строках, до тех пор пока вы не завершите текущую транзакцию.
В то время как повторное чтение защищает пользователя, который поместил блокировку, она может в то же время значительно снизить производительность.
Уровень указатель стабильности — предохраняет каждую запись от изменений, на время когда она читается, или от чтения на время ее изменения. Последний случай — это специальная блокировка, и применяется, пока изменение не завершено или пока оно не отменено (т.е. на время отката изменения).
Следовательно, когда вы модифицируете группу записей, использующих указатель стабильности, эти записи будут заблокированы, пока транзакция не закончится, что аналогично действию, производимому уровнем повторное чтение. Различиие между этими двумя уровнями в их воздействии на запросы. В случае уровня указатель стабильности, строки таблицы, которые в данное время не используются запросом, могут быть изменены.
Третий уровень изоляции DB2 — это уровень только чтение.
Только чтение фиксирует фрагмент данных; хотя на самом деле он блокирует всю таблицу. Следовательно, он не может использоваться с командами модификации. Любое содержание таблицы как единое целое, в момент выполнения команды, будет отражено в выводе запроса.
Это не обязательно, так как в случае с уровнем указатель стабильности. Блокировка только чтение, гарантирует что ваш вывод будет внутренне согласован, если конечно нет необходимости во второй блокировке, не связывающей большую часть таблицы с уровнем повторное чтение. Блокировка только чтение удобна тогда, когда вы делаете отчеты, которые должны быть внутренне согласованны, и позволять доступ к большинству или ко всем строкам таблицы, не связывая базу данных.
ДРУГИЕ СПОСОБЫ БЛОКИРОВКИ ДАННЫХ
Некоторые реализации выполняют блокировку страницы вместо блокировки строки. Это может быть либо возможностью для вашего управления, либо нечто заложенным уже в конструкцию системы.
Страница — это блок накопления памяти, обычно равный 1024 байт. Страница может состоять из одной или более строк таблицы, возможно сопровождаемых индексами и другой периферийной информацией, а может состоять даже из нескольких строк другой таблицы. Если вы блокируете страницы вместо строк, все данные в этих страницах будут блокированы точно также как и в индивидуальных строках, согласно уровням изоляции описаным выше.
Основным преимуществом такого подхода является эффективность. Когда SQL не следит за блокированностью и разблокированностью строк индивидуально, он работает быстрее. С другой стороны, язык SQL был разработан так, чтобы максимизировать свои возможности, и произвольно блокирует строки, которые необязательно было блокировать.
Похожая возможность, доступная в некоторых системах — это блокировка областей DBS. Области базы данных имеют тенденцию быть больше, чем страница, так что этот подход удовлетворяет и достоинству увеличения производительности, и недостатку блокирования страниц.
Вообще то лучше отключать блокировку низкого уровня, если вам кажется, что появились значительные проблемы с эффективностью.
РЕЗЮМЕ
Ключевые определения, с которыми вы познакомились в этой главе:
* Синонимы, или как создавать новые имена для объектов данных.
* Области базы даных (DBS), или как распределяется доступная память в базе данных.
* Транзакция, или как сохранять или восстанавливать изменения в базе данных.
* Управление Параллелизмом, или как SQL предохраняет от конфликта одной команды с другой.


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

Download 1.45 Mb.

Do'stlaringiz bilan baham:
1   ...   124   125   126   127   128   129   130   131   ...   172




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling