- •1. Классификация бд по доступу к данным
- •2. Особенности рбд
- •3. Преимущества и недостатки рбд
- •4. Сравнение рбд с бд централизованного хранения
- •5. Архитектура рбд с глобальной схемой хранения
- •6. Мультибазовые рбд
- •7. Компонентная архтектура рбд
- •8. Исходная информация для проектирования бд
- •9. Сравнение различных стратегий распределения данных
- •10. Фрагментация и репликация: понятия
- •11. Корректность фрагментации
- •12. Типы фрагментаций
- •13. Прозрачность размещения данных. Виды прозрачности
- •14. Прозрачность фрагментации
- •15. Прозрачность расположения
- •16. Прозрачность локального отображения
- •17. Прозрачность именования
- •18. Прозрачность параллельности и отказов
- •19. Прозрачность выполнения
- •20. Правила Дейта
- •21. Понятие транзакции, проблемы, возникающие при транзакции, свойства транзакции
- •22. Управление параллельностью, проблемы параллельности
- •23. Проблема несогласованной обработки
- •24. Проблема потерянного обновления
- •25. Проблема зависимости от нефиксированных результатов
- •26. Упорядочиваемость и восстанавливаемость
- •Восстанавливаемость
- •27. Упорядочивание по просмотру
- •28. Двухфазная блокировка
- •30. Взаимная блокировка - это
- •31.(????) Управление блокировками
- •32. Уровни детализации блокируемых элементов
- •33. Структура и назначение языка xml
- •34. Узлы, атрибуты и элементы на xml
- •35. Просмотр и обновление базы данных средствами xml
- •36. Обработка представленных на xml данных циклами
- •37. Навигация в данных средствами xml
- •38. Обработка представленных на xml данных операторами языка linq
- •39. Особенности создания интерфейсов на wpf
22. Управление параллельностью, проблемы параллельности
Управление параллельностью
Далее обсудим проблемы, связанные с обеспечением параллельного доступа
к данным, а также познакомимся с технологиями, позволяющими разрешить эти проблемы.
Управление параллельностью
Процесс организации одновременного выполнения в базе данных различных операций, гарантирующий исключение их взаимного влияния друг на друга.
Необходимость управления параллельностью
Важнейшей целью создания баз данных является организация параллельного доступа многих пользователей к общим данным, используемым ими совместно. Обеспечить параллельный доступ относительно несложно, если все пользователи будут только читать данные, помещенные в базу. В этом случае работа каждого из них не оказывает никакого влияния на работу остальных пользователей. Однако, если два или больше пользователей одновременно обращаются к базе данных и хотя бы один из них имеет целью обновить хранимую в базе информацию, возможно взаимное влияние процессов друг на друга, способное привести к несогласованности данных.
Данная задача подобна задачам, стоящим перед любой многопользовательской компьютерной системой. В этом случае несколько пользователей получают возможность одновременно выполнять операции - благодаря использованию концепции многопрограммности, позволяющей двум или больше программам (или транзакциям) выполняться в одно и то же время. Например, многие системы включают подсистему ввода/вывода, способную выполнять обработку операций ввода/вывода, в то время как центральный процессор (ЦП) осуществляет другие операции. Подобные системы позволяют двум или более транзакциям выполняться одновременно. Система
начинает выполнение первой транзакции и продолжает ее выполнение до первой операции ввода/вывода. На время выполнения этой операции система приостанавливает выполнение первой транзакции и переходит к выполнению команд второй транзакции. Когда второй транзакции понадобится выполнить операцию ввода/вывода, управление будет возвращено первой транзакции и ее выполнение будет продолжено с той точки, в которой она была приостановлена. Выполнение первой транзакции будет продолжено до достижения следующей операции ввода/вывода. Выполнение операций двух транзакций чередуется, и таким образом достигается их параллельное выполнение. Кроме того, общая производительность системы (количество работы, выполняемой на протяжении заданного временного интервала) повышается, поскольку
процессор выполняет команды другой транзакции, вместо того чтобы бесполезно ожидать завершения запущенной операции ввода/вывода.
Однако, несмотря на то, что каждая из транзакций может сама по себе выполняться вполне корректно, подобное чередование операций способно приводить к неверным результатам, из-за чего целостность и согласованность базы данных будет нарушена. Рассмотрим три примера потенциальных проблем, которые могут иметь место при параллельном выполнении транзакций, - проблему потерянного обновления, проблему зависимости от нефиксированных результатов и проблему несогласованной обработки. Для иллюстрации указанных проблем мы воспользуемся отношением с данными о банковских счетах персонала. В этом контексте будут выполняться транзакции, которые мы будем считать объектами управления параллельностью.
