• SQL模擬死結產生


    引用自:http://jengting.blogspot.tw/2012/06/sql.html

    根據 MSDN 將死結數量降至最低 裡的圖型模擬死結產生 ~~

    [SQL] 模擬死結產生


    在 SSMS 內開啟兩個 T-SQL 查詢(兩個執行緒),利用下面語法來執行,請先執行 T-SQL 查詢 1,再執行 T-SQL 查詢 2。

    步驟簡易說明:

    • Step 1:建立一個 T-SQL 查詢 1,開啟一個交易,並進行更新 Supplier 資料
    • Step 2:建立另一個 T-SQL 查詢 2,開啟一個交易,並進行更新 Part
    • Step 3:回到 T-SQL 查詢 1,更新 Part
    • Step 4:回到 T-SQL 查詢 2,更新 Supplier

    藉此產生一個死結。

    • 建立測試資料
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    IF OBJECT_ID('Supplier') IS NOT NULL
      DROP TABLE Supplier
     
    IF OBJECT_ID('Part') IS NOT NULL
      DROP TABLE Part
     
    CREATE TABLE Supplier
      (
        SPLNO char(5),
        SPLName char(10),
        CONSTRAINT [PK_Supplier] PRIMARY KEY CLUSTERED ([SPLNO] ASC)
      )
     
    CREATE TABLE Part
      (
        SPLNO char(5),
        Product char(50),
        CONSTRAINT [PK_Part] PRIMARY KEY CLUSTERED ([SPLNO] ASC,[Product] ASC)
      )
     
    INSERT INTO Supplier VALUES('00000','Microsoft')
    INSERT INTO Part VALUES('00000','SQL Server 2012')
    • T-SQL 查詢 1
    1
    2
    3
    4
    5
    BEGIN TRANSACTION
    UPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000' -- Step 1
    WAITFOR DELAY '00:00:05'
    UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012' -- Step 3
    COMMIT TRANSACTION
    • T-SQL 查詢 2
    1
    2
    3
    4
    5
    BEGIN TRANSACTION
    UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012' -- Step 2
    WAITFOR DELAY '00:00:05'
    UPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000' -- Step 4
    COMMIT TRANSACTION
    • 死結錯誤訊息
     
    訊息 1205,層級 13,狀態 45,行 1
    交易 (處理序識別碼 52) 在 鎖定 資源上被另一個處理序鎖死並已被選擇作為死結的犧牲者。請重新執行該交易。
  • 相关阅读:
    CSS选择器
    HTML2
    html
    http协议
    python--Selectors模块/队列
    Linux系统管理02----目录和文件管理
    Linux系统管理01-----系统命令
    02作业 linux第一章和第三章命令
    01作业 Linux系统管理应用
    01:计算机硬件组层与基本配置------02计算机系统硬件核心知识
  • 原文地址:https://www.cnblogs.com/oisiv/p/5536755.html
Copyright © 2020-2023  润新知