Проблема параллелизма

Оператор DELETE

Оператор INSERT

Оператор UPDATE

Оператор SELECT

Оператор обеспечивает выборку данных из полей таблицы, указанных в предложении SELECT, в соответствии с условиями, заданными в предложении WHERE .

 

Пример:Выдать коды и адреса поставщиков, коды которых меньше 7.

 

SELECT SUPPLIER_ID, ADDRESS

FROM SUPPLIER
WHERE SUPPLIER_ID <7;

 

Результат:

SUPPLIER_ID ADDRESS
Киев
Минск

 

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

 

Пример. Изменить адрес компаний, которые имеют название КМ на Воронеж.

 

UPDATE SUPPLIER

SET ADRESS=”Воронеж”

WHERE COMPANY NAME=КМ;

 

В результате таблица SUPPLIER примет вид:

 

SUPPLIER_ID COMPANY_NAME ADDRESS COST_SUP
ABC Киев
A2 Минск
KM Воронеж
KMC Москва
A5 Москва

 

Оператор осуществляет вставку строки в конец указанной таблицы.

 

Пример.

1) INSERT INTO SUPPLIER

VALUES (12,”A6”,”Орёл”, 100);

 

В результате таблица SUPPLIER примет вид:

 

SUPPLIER_ID COMPANY_NAME ADDRESS COST_SUP
ABC Киев
A2 Минск
KM Воронеж
KMC Москва
A5 Москва
А6 Орел

 

 

 

Оператор служит для удаления одной или нескольких строк таблицы, определенных в предложении WHERE.

Если предложение WHERE отсутствует, то удаляются все строки таблицы.

 

Пример. Удалить из таблицы те строки, которые содержат информацию о поставщиках из Киева.

 

DELETE

FROM SUPPLIER

WHERE ADRESS=”Киев”;

 

В результате таблица SUPPLIER примет вид:

 

SUPPLIER_ID COMPANY_NAME ADDRESS COST_SUP
A2 Минск
KM Воронеж
KMC Москва
A5 Москва
А6 Орел

 

 

 

 

Лекция 6

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

Рассмотрим пример нарушения целостности БД двумя параллельно действующими транзакциями, представленный в табл. .

 

Время Операции транзакции А Операции транзакции В   Результат
t1 Читает запись i  
t2   Читает запись i
t3 К записи i прибавляет число 10      
t4   К записи i прибавляет число 15  

 

В момент t1 транзакция А читает запись i, которая содержит число 10.

В момент t2 другая транзакция читает это же число. В момент t3 транзакция А модифицирует прочитанное число, прибавляя к нему число 10. В результате в БД оказывается число 20. Но в следующий момент транзакция В модифицирует прочитанное число, прибавляя к нему число 15. Таким образам, в записи i оказывается число 25. Это результат параллельной работы этих транзакций. Очевидно, что результат неправильный, т.к. две транзакции в сумме прибавили число 25. Значит, окончательным результатом должно было быть число 35, а не 25.

Фактически результат модификации, выполненной транзакцией А, пропал.