Программирование >>  Проектирование баз данных 

1 ... 153 154 155 [ 156 ] 157 158 159 ... 184


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

Если в приложении есть относительно короткая таблица, для которой устанавливается много блокировок на уровне строк (например, таблица BRANCHES, в которой ведется остаток), то, возможно, стоит установить значение параметра INITRANS больше 1, чтобы пользователям не приходилось ждать только из-за того, что недостаточно места для записи ITE. Длина ITE превышает 20 байт, поэтому двузначные значения будут весьма необычным явлением. Очень немногим приложениям нужно устанавливать этот параметр, а потребности тех, которым это действительно нужно, можно более эффективно удовлетворить с помощью решения, описанного в следующем абзаце.

Потребность в сопровождении остатков - довольно распространенная причина соперничества за блокировки. Одно эффективное, хотя и весьма искусственное, решение состоит в том, чтобы сопровождать множество подостатков каждого основного остатка. Допустим, мы хотим вести текущую сумму общей стоимости заказов, сделанных в большой оперативной системе. По нашим расчетам строка, в которой хранится эта сумма, быстро должна стать объектом очереди на блокировку. Однако мы можем иметь десять таких строк и использовать некий метод, при помощи которого каждый процесс будет решать, какую строку обновлять:

UPDATE order balls

SET total valur = total value + :this order total , total orders = total orders + 1 WHERE sub balance id = MOD(uid, 10);

Единственный недостаток этого подхода состоит в том, что для выборки остатков нам приходится создать операцию подведения итога, но это можно инкапсулировать в представлении:

CREATE OR REPLACE VIEW order balances {total value, total orders) AS SELECT SUM{total value) , SUM{total orders) FROM order balls;

Этот пример специально сильно упрощен - в реальном приложении мы рассчитывали бы на применение к этим остаткам некоторой формы действительности по дате. Во избежание ошибок вполне можно было бы лишить привилегии SELECT на этой таблице всех пользователей, выдающих нерегламентированные запросы. Это даст гарантию, что они будут обращаться к представлению и не столкнутся с подостатками.



Отметим, что таблицы (и индексы), в которых многим сеансам одновременно может понадобиться обновлять элементы строк или индексов, как правило, страдают от конкуренции на уровне блоков (ожидания освобождения буфера на жаргоне настройщиков Oracle). Конкуренция на уровне блоков встречается, главным образом, на многопроцессорных платформах. Если таблица действительно короткая , конкуренцию можно легко устранить, вынудив СУБД помещать в каждый блок только одну строку. Для этого параметру PCTFREE присваивают искусственно большое значение, например 95. При этом напрасно расходуется дисковое пространство и в самом деле потребляется больше кэш-пространства в SGA, чем во всех остальных случаях, однако для таблицы в несколько десятков строк эта трата ничтожна по сравнению с выгодой, которую дает устранение конкуренции на блочном уровне для пропускной способности.

Примечание

Возможно, вам интересно, почему блочная конкуренция может отрицательно влиять на пропускную способность многопроцессорной платформы, а в однопроцессорной системе потенциальной проблемой не считается. Ответ на этот вопрос заключается в подходе Oracle к обращениям к блокам базы данных. Поскольку обращение любого типа может привести к внесению изменения в блок, Oracle устанавливает на каждый блок базы данных кратковременную блокировку (pin), которая действует только в течение обращениея к этому блоку из СУБД. Oracle также предусматривает отказ от услуг ЦП, как только встречается состояние ожидания, и гарантирует невозможность добровольного ожидания во время существования кратковременной блокировки. Поэтому даже если в однопроцессорной системе два процесса запрашивают или обновляют один и тот же блок, они не должны видеть кратковременные блокировки друг друга.

Однако в многопроцессорной среде, особенно с симметричной многопроцессорной структурой, где процессоры могут работать независимо, существует статистическая вероятность того, что СУБД Oracle, работающая на одном процессоре, вступит в конфликт с кратковременной блокировкой, установленной СУБД Oracle, работающей на другом процессоре. Чем чаще производится обращение к данному блоку, тем выше вероятность такого конфликта.




Выбор инструментальных средств

в этой главе:

Тш1Ы ттстру.метпалышх средств

Какие критерии отбора важны?

Инструметпальные средства для систем клиент /сервер

Проскишровапие для World Wide Web

В этой главе внимание сконцентрировано на выборе инструментальных средств и языков разработки, с помощью которых осуществляется сопровождение данных в базе данных и вьшолняются запросы к ним. Конечно, это делается не в каждом проекте - иногда заранее обуславливается, какими продуктами необходимо пользоваться. Многие организации принимают те или иные средства разработки в качестве стандартных, чтобы обеспечить согласованность приложений и рационально использовать навыки, опыт и усилия разработчиков. В этой главе мы рассмотрим категории инструментальных средств, которыми вы можете пользоваться (средства разработки экранных форм, генераторы отчетов и т.д.), опишем, какими соображениями следует руководствоваться при их выборе, и затронем специфические вопросы, касающиеся разработки систем клиент/сервер.

Типы инструментальных средств

Для выполнения различных функций в большинстве приложений понадобится та или иная комбинация инструментальных средств. Продавец какой-нибудь фирмы, возможно, убедил ваше руководство в том, что в последней версии продукта этой фирмы можно эффективно создать абсолютно все, но, как правило, вам будет нужна комбинация инструментальных средств для управления следующими компонентами; Формы

Экранные формы для ввода, сопровождения и запрашивания данных.



1 ... 153 154 155 [ 156 ] 157 158 159 ... 184

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика