Базы данных SQL-DDL и SQL-DML. Изучение транзакций. Программирование на языке SQL. Консольное приложение (Цикл лабораторных работ). Вариант № 2, страница 7

         where soundtrack.author = :composer_id AND soundtrack.film =         film.f_id

         ORDER BY film.year_of_creation DESC), :composer_id,:numawar);

    end

END

^

SET TERM ; ^

commit;

Результаты запросов:

1)  Актёры, которые играли в фильмах вместе с Leonardo DiCaprio :

      NAME_           SURNAME_                           FILM_

=========== ========================= =========================

Kate                Winslet                                      Titanic 

2)  Средние рейтинги фильмов, в которых Оскары получали канадские режиссёры:

     FILM_                                                               MARK                          

==================================== =========================

Titanic                                                                 7

3) в результате выполнения процедуры с параметрами (6,6) в таблице PREMIUM появляется запись:

      FILM_ID                    MAN_ID                     AWARD_ID                          

================= =================== =========================

4                                 9                                    6

2.4.Выводы

В результате работы был изучен SQL-DML и основные возможности IBExpert. Реализованы индивидуальные SQL-запросы, которые были сохранены в БД в виде представлений и хранимых процедур. Результаты запросов корректны.

Раздел 3. Изучение работы транзакций

3.1. Цели работы

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

3.2. Программа работы

1) Изучить основные принципы работы транзакций.

2) Провести эксперименты по запуску, подтверждению и откату транзакций.

3) Разобраться с уровнями изоляции транзакций в Firebird.

4) Спланировать и провести эксперименты, показывающие основные возможности транзакций с различным уровнем изоляции.

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

3.3. Выполнение работы

1) Read Committed (зафиксированное чтение).

Этот уровень изоляции позволяет транзакции читать только подтверждённые изменения, сделанные другими транзакциями. Даже если другая транзакция подтверждает после того, как транзакция, использующая read committed, началась, эти изменения могут быть прочитаны.

Example 1:

1я сессия, уровень изоляции Read Committed:

SELECT * from film ;

Результат:

F_ID   NAME            YEAR_OF_CREATION      DURATION  BUDGET       SITE

1          The Lord of the Rings: The Fellowship of the Ring 2001    178      93000000        3

2          The Lord of the Rings: The Two Towers      2002    179      94000000        3

3          Titanic 1997    194      200000000      4

4          Avatar 2009    162      237000000      5

5          The Terminator 2: Judgment Day      1991    137      102000000      1

6          Catch Me If You Can            2002    141      52000000       

7          Manhattan      1979    96        39000000       

2я сессия:

INSERT INTO film (f_id,name,year_of_creation,duration,budget)

VALUES (8, 'Gullivers Travels',2010,85,112000000);

Если не подтвердить 2ю сессию, то результат 1й не изменится. После подтверждения 2й сессии, результат 1й:

F_ID   NAME            YEAR_OF_CREATION      DURATION  BUDGET       SITE

1          The Lord of the Rings: The Fellowship of the Ring 2001    178      93000000        3