Скачиваний:
24
Добавлен:
11.04.2015
Размер:
9.53 Mб
Скачать

Вопрос 5.

Проблема потерянного обновления возникает в том случае, когда две и более транзакции практически одновременно производят изменение одних и тех же элементов данных. Предположим, что две транзакции х и у обращаются к одному и тому же элементу данных и.производят считывание значения этого элемента Затем транзакция х осуществляет изменение этого элемента данных и изменение значение записывает в БД. Транзакция у обрабатывает первоначальное значение элемента данных и не имеет информации о том, что в БД хранится его модифицированное значение. В процессе выполнения эта транзакция повторно изменяет значение элемента данных и записывает полученное значение вместо значения, ус­тановленного транзакцией х. Таким образом, происходит потеря обновления элемента данных, которое было выполнено транзакцией х.

Проблема потерянного обновления может возникнуть даже в том случае, когда транзакции обновляют разные элементы данных, но входлящие в один и тот же кортеж. Дополнительно предпологается, что приложение разработано таким образом, что что в него полностью передается строка, в которой модифицируется отдельные элементы данных. Пусть транзакция х считывает с троку z содержащие атрибуты z1,z2…zn Через некоторый интервал времени транзакция у считавает эту же строку, изменяет в ней элемент z2 и передает обновленную строку на дисковое устройство. После этого транзакция х изменяет значение другого элемент z1 строки z и модифицированную строку записывает поверх значений этой же строки , но установленных транзакцией у. Это приводит к потере обновления, которое было выполнено транзакцией у.

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

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

Возникновение проблемы чернового чтения

Транзакция х

Транзакция у

Логическое з-ие

значение

БД

Незафиксиро­ванное з-ие БД

Значение для транзакции у

ВЕGIN TRAN x

-

10

-

-

UPDАТЕ table1SЕТ sит = 15

ВЕGIN TRAN у

10

15

-

SELЕСТ cod

FROM table

SELЕСТ @рг = sит FROM table

10

15

15

ROLLBACK TRANx

UPDАТЕ table1SЕТ adv=sит

10

-

15

Для транзакции у возникает

проблема

чернового чтения

Пример. Наиболее концептуально просто эта проблема иллюстрируется примером одновременного выполнения двух транзакций х и у, активизируемых сотрудниками отдела материально-технического снабжения университета. Транзакция х запрашивает 350 пачек бумаги Т.к. в базе данных sklad указано, что в наличии имеется 500 пачек, то ее запрос удовлетворит в базу данных записывается модифицированное значение, равное 150 пачкам бумаги. Но транзакция х не фиксируется, а менеджер 1 приступает к обсуждению потребительских свойств бумаги с сотрудником подразделения А. В это время транзакция К2 запрашивает 300 пачек бумаги, то так как в базе данных хранится модифицированное значение, равное 150 пачкам бумаги, то транзакция у получает отказ и завершается. После этого сотрудник подразделения А отказывается от приобретения 350 пачек бумаги, производится откат транзакции х, и в базе данных восстанавливается прежнее значение, равное 500. Однако транзакция у уже завершена, и решение об отказе полнении поставки 300 пачек бумаги было принято на основе незафиксированных или черновых данных, сформированных транзакцией х.

Вопрос 7. Проблема неповторяемого чтения связана с нарушением принципа повторяемого чтения, в соответствии с которым запрос, повторно выполняемый в одной и той же транзакции, должен постоянно возвращать определенный набор данных и должен игнорировать изменения, вносимые в базу данных другими завершенными и незавершенными транзакциями.

Пример. Предположим, что транзакции х и у обращаются к одному и тому же элементу данных со1, имеющему значение 100, и производят считывание этого значения в оперативную память. Затем транзакция у обращается к другому элементу данных sum. В течение этого интервала времени транзакция х модифицирует элемент данных со1 со значения 100 на значение 40. Повторное выполнение запроса на чтение, входящего в транзакцию у, приводит к результату, равному 40. Необходимо отметить, что значения 100 и 40 соответствуют состоянию предметной области. Однако разные значения одного и того же элемента данных со1 могут привести к некорректным данным отчетного документа, формируемого в процессе выполнения транзакции у.

Вопрос 8. Проблема строк-фантомов возникает в том случае, когда одна из параллельно выполняемых транзакций, например у, производит формирование отчета, предполагающего расчет интегральных характеристик sит, аvg, min, тах, count, а в промежутках между этими расчетами другая транзакция вводит в базу данных новые строки. Для транзакции у появление этих строк является непрогнозируемым и они позиционируются в качестве строк-фантомов.

Пример. Транзакция у производит вычисление среднего значения avg= 150 После этого транзакция у выполняет другие операторы, а в этот промежуток времени транзакция х включает в базу данных новые строки. Повторное вычисление среднего значения по атрибуту sum транзакции y выдает результат равный 96

Соседние файлы в папке ответы