Главная страница
Навигация по странице:

  • по лабораторной работе №10

  • Person . Contact выполнив транзакцию.

  • 2.3. Упражнение 3 – Просмотреть сведений о блокировках при выполнении транзакции и при её откате.

  • 2.4. Упражнение 4 – Применить настройки для блокировки транзакций

  • Список литературы

  • 0302_Попов_Билоблоцкий_Л10. Управление транзакциями и блокировками


    Скачать 293.06 Kb.
    НазваниеУправление транзакциями и блокировками
    Дата08.12.2022
    Размер293.06 Kb.
    Формат файлаdocx
    Имя файла0302_Попов_Билоблоцкий_Л10.docx
    ТипОтчет
    #835146

    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра САПР

    Отчет

    по лабораторной работе №10

    по дисциплине «Распределенные базы данных и базы знаний»

    Тема: Управление транзакциями и блокировками

    Студенты гр.




    Попов Е. В.

    Билоблоцкий В. В .



    Преподаватель




    Новакова Н.Е.


    Санкт-Петербург

    2022

    1. Цель работы

    Получить представление о транзакциях и блокировках.
    2. Ход выполнения работы

    2.1. Упражнение 1 –Обновить запись в таблице Person.Contact выполнив транзакцию.

    1) Скрипт, выполняющий транзакцию (рис.2.1.1).

    SQL-скрипт создающий таблицу с ограничениями
    /*

    Starts a transaction to read the record of

    Linda Gonzales and update her first name.

    Second select shows the uncommitted update.

    @@trancount shows the number of open transactions.

    */
    USE AdventureWorks
    -- START TRANSACTION HERE

    BEGIN TRANSACTION

    SELECT @@trancount AS 'Transaction Count'

    SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 342

    UPDATE Person.Contact SET FirstName = 'Lin' WHERE ContactID = 342

    -- END TRANSACTION HERE

    COMMIT TRANSACTION
    SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 342

    SELECT @@trancount AS 'Transaction Count'



    Рис.2.1.1. Выполнение транзакции

    2.2. Упражнение 2 – Откатить внесенные в таблицу изменения отменив транзакцию

    1) Скрипт, хранимую процедуру для GetDiscountsForCategory. (рис.2.2.1).

    SQL-скрипт, отменяющий транзакцию:

    /*

    Starts a transaction to read the record of

    Dominic Gonzalez and update his first name.

    Second SELECT shows the uncommitted update.

    @@trancount showS the number of open transactions.

    Then the transaction is rolled back and the record read again.

    */
    USE AdventureWorks
    BEGIN TRANSACTION

    SELECT @@trancount AS 'Transaction Count'

    SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 7454

    UPDATE Person.Contact SET FirstName = 'Dom' WHERE ContactID = 7454

    SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 7454

    SELECT @@trancount AS 'Transaction Count'

    -- END TRANSACTION HERE

    ROLLBACK TRANSACTION
    SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 7454

    SELECT @@trancount AS 'Transaction Count'


    Рис.2.2.1. Откат совершенной транзакции
    2.3. Упражнение 3 – Просмотреть сведений о блокировках при выполнении транзакции и при её откате.

    1) Скрипт, просматривающий сведения о транзакциях. (рис.2.3.1 – 2.3.2).

    SQL-скрипт, создающий хранимую процедуру:

    SELECT resource_type, request_mode, request_type, request_status,

    request_session_id

    FROM sys.dm_tran_locks
    /*

    Update a record in the Person.Contact table in the AdventureWorks database.

    */
    USE AdventureWorks
    BEGIN TRANSACTION

    UPDATE Person.Contact

    SET FirstName = 'Fran'

    WHERE ContactID = 6

    -- For the purpose of the exercise, COMMIT TRANASACTION or ROLLBACK TRANSACTION are not used.
    SELECT @@spid AS 'spid'

    -- Use the SPID to identify the connection when using sys.dm_tran_locks.

    ROLLBACK TRANSACTION



    Рис.2.3.1. Создание хранимой процедуры


    Рис.2.3.2. Монитор активности после транзакции
    После отката транзакции:



    Рис.2.3.3. Откат транзакции
    2.4. Упражнение 4 – Применить настройки для блокировки транзакций

    1) Скрипт, совершающий транзакцию с предварительной настройкой блокировки (рис.2.4.1.1).

    SQL-скрипт, совершающий транзакцию:

    /*

    Read and update a record in the Person.Contact table in the AdventureWorks database.

    */
    USE AdventureWorks
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SET lock_timeout 5000
    BEGIN TRANSACTION

    SELECT * FROM Person.Contact WHERE ContactID = 10

    UPDATE Person.Contact SET FirstName = 'Frances' WHERE ContactID = 6

    -- For the purpose of the exercise, COMMIT TRANSACTION or ROLLBACK TRANSACTION are not used.
    SELECT @@spid AS 'SPID'

    -- Use the SPID to identify the connection when using sp_lock.

    -- ROLLBACK TRANSACTION


    Рис.2.4.1.1 Совершение транзакции с предварительной настройкой блокировки

    2) Скрипт, запрос из системной таблицы (рис.2.4.1.2)

    SQL-скрипт, совершающий запрос:

    SELECT resource_type, request_mode,request_type, request_status, request_session_id

    FROM sys.dm_tran_locks



    Рис.2.4.1.2. Выполненный запрос


    3. Вывод

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


    Список литературы

    1. Образовательные ресурсы SQL Microsoft//Azure SQL for Beginners, [Электронный ресурс] Режим доступа: https://learn.microsoft.com/ru-ru/sql/sql-server/educational-sql-resources?view=sql-server-ver15 (дата обращения 13.10.2022).


    написать администратору сайта