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

Оператор 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.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: