Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭК_Б_727111.doc
Скачиваний:
10
Добавлен:
17.08.2019
Размер:
3.23 Mб
Скачать

6. Параллельное выполнение транзакций.

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

Последовательность атомарных действий транзакций называется планом совместного выполнения транзакций. Основным требованием к плану является сохранение порядка атомарных шагов транзакции при параллельном выполнении.

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

Непоследовательный плана – это план в котором чередуются операции из некоторого набора одновременно выполняемых транзакций. Непоследовательный плана является корректным, если он приводит к получению тех же результатов, которые получаются при использовании некоторого последовательного плана. Такой план называется упорядоченным. /*Все три проблемы параллельного доступа были обусловлены неупорядоченностью плана выполнения транзакций. */

Пример. Перевод денежных средств между счетами А, В, С. Две транзакции.

T1: read (A); A:=A-10; write(A); read(B); B:=B+10; write (B);

T2: read (B); B:=B-20; write(B); read(C); C:=C+20; write (C);

Корректность работы заключается в сохранении постоянного значения суммой А+В+С.

Билет №25

1. Уточнение корней уравнения. Метод деления отрезка пополам, метод секущих.

Уточнить корень – значит найти его приближенное значение с заданной погрешностью e.

Самый простой метод, пригодный для любых непрерывных функций – метод деления отрезка пополам. Это самый простой метод вычисления корня уравнения. Разделим исходный отрезок [a,b] пополам c=(a+b)/2 .

Проверяя знаки f(a), f(b), f(c) выясним в каком из отрезков [a,c] или [c,b] содержится корень

x* є [a,c] , если f(a)f(c)<0 ;

x* є [c,b] , если f(c)f(b)<0 .

Выбранный отрезок принимаем за [a,b] и повторяем это до тех пор пока получаемый отрезок не сожмется до заданной степени точности. При n итерациях получим соотношение (b-a)/2n <= e, из которого можно вычислить число итераций, необходимое для достижения заданной степени точности n>= ln2(b-a)/e .

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

Метод секущих. Этот метод можно получить из метода Ньютона заменив производную f'(x) отношением разности функции к разности аргумента в окрестности рассматриваемой точки

f '(x) ~( f(x+h) - f(x))/h.

Подставляя это выражение в xk+1 = xk - f(xk)/f '(xk) получим

xi+1 = xi - f(xi)h / (f(xi+h)-f(xi)) (1)

Геометрически это означает, что приближенным значением корня считается точка пересечения секущей, проходящей через две точки функции f(xi) и f(xi+h), с осью абсцисс.

При использовании этого метода следует уменьшать величину h по мере приближения к корню.

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