Deadlocks
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферат на тему деятельность, сочинения по литературе
| Добавил(а) на сайт: Евтихия.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Возрастает нагрузка на журнал транзакций, так как каждая неудачная попытка тоже будет приводить к записи в журнале, включая запись об откате. Для интенсивно работающей системы это может быть критично, ввиду того, что самым узким местом в таких случаях часто оказывается именно журнал транзакций.
Монитор, отслеживающий замкнутые циклы в графе ожидания, не работает непрерывно, таким образом, взаимоблокировка не обнаруживается мгновенно. Это снижает производительность системы в целом из-за того, что ни в чем неповинные транзакции вынуждены ждать, пока менеджер не отменит одну из намертво заблокированных.
Подобное решение в общем случае отвратительно масштабируется, так как исходная причина не устранена, и с увеличением нагрузки число взаимоблокировок будет возрастать, причем не линейно. А следовательно, будет расти и количество ожидающих транзакций, что в итоге может привести к полной неработоспособности системы.
Возможные причины возникновения взаимоблокировок
В свете всего вышеописанного почетной обязанностью разработчика является сведение вероятности мертвой блокировки к минимуму, а в идеале – к нулю, что является достаточно сложной, но вполне разрешимой задачей.
Строго говоря, все случаи взаимоблокировки сводятся к нарушению порядка доступа к объектам. Далее разберем несколько примеров транзакций, потенциально способных привести к тупиковой ситуации. Но перед этим, чтобы примеры были более наглядными, надо выбрать базу для экспериментов (например стандартную Northwind) и создать в ней табличку для дальнейших опытов. Для этого достаточно выполнить в Query Analyzer’е вот такой скрипт:
--- Выбор тестовой базы USE Northwind GO --- Создание таблицы if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Tbl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Tbl] GO CREATE TABLE [dbo].[Tbl] ( [X] [int] NULL, [Y] [int] NULL, [value] [varchar] (50)) GO --- Заполнение тестовыми данными insert into Tbl(X, Y, Value) VALUES (1, 10, 'Алма-Ата') insert into Tbl(X, Y, Value) VALUES (2, 9, 'Алушта') insert into Tbl(X, Y, Value) VALUES (3, 8, 'Алупка') insert into Tbl(X, Y, Value) VALUES (4, 7, 'Анкара') insert into Tbl(X, Y, Value) VALUES (5, 6, 'Агра') Рекомендуем скачать другие рефераты по теме: урок изложение, диплом разработка. Категории:Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата Поделитесь этой записью или добавьте в закладки |