46
บบบบบ 14 บบบบบบบบบ Transaction บบบ Locking บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบ บบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบ 100 บบ บบบบบ บบบบบบบบบ 10 % บบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบ บบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบ Multi-user บบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบ บบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบ บบบบบบบบบบบบ บบบบบบบบบบบบบบบบ Transaction บบบ Locking บบบบบบบบบบบบบบบบบ บบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบ

DBMS ไทย บทที่ 14 รู้จักกับ Transaction และ Locking

Embed Size (px)

DESCRIPTION

DBMS ไทย บทที่ 14 รู้จักกับ Transaction และ Locking

Citation preview

14 Transaction Locking

14 Transaction Locking 100 10 %

Multi-user

Transaction Locking (Transaction)

(Transaction) SQL Server SQL Management Studio GO

2 2,000 2,000 2,000 2,000

4 Atomic Tblproducts 10 % 100 99 SQL Server Consistent Isolation Durable

3

1. Explicit Transaction

BEGIN TRANSACTION.COMMIT TRANSACTION ROLLBACK TRANSACTION BEGINTRAN, COMMIT TRAN ROLLBACK TRAN BEGIN TRAN BEGIN TRAN SQL Server

BEGIN TRAN SQL Server COMMIT TRAN ROLLACK TRAN 1 COMMIT TRAN BEGIN TRAN ROLL BACK TRAN

BEGIN TRAN Note

BEGIN TRAN COMMIT TRAN ROLL BACK TRAN SQL Server Explicit Transaction ALTER DATABASE

GRANT

CREAT DATABASE

LOAD DATABASE

CREAT INDEX

LOAD TRANSACTION

CREAT PROCEDURE

RECONFIGURECREAT TABLE

REVOKE

CREAT VIEW

SELECT INTO

DISK INIT

TRUNCATE TABLE

DROP

UPDATE STATISTICS

DUMP TRANSACTIONSP_DBOPTION Master

Explicit

Stored Procedure (Commit) (Roll back) CREATE PROCEDURE Test_Transaction @cnt int=NULLASBEGIN

BEGIN TRAN

UPDATE TblProducts/* TBlProducts UniPrice 10%*/

SET UniPrice=UnitPrice*1.1

IF@cnt IS NULL/* @cnt NULL */

ROLLBACK REAN

ELSE

/* @cnt NULL */

COMMIT TRAN

END

cnt NULL UPDATE

2. Implicit Transaction

ON Implicit Transaction BEGIN TRAN

COMMIT ROLL BACK SQL Server COMMIT ROLL BACK Implicit Transaction 3. Automatic Transaction

SQL Server 2 UPDATE TblProducts SET UnitPrice = UnitPrice*1.2

/**/

UPDATE TblProducts SET UnitPrice = UnitPrice*1.2

/**/

UnitPrice 20 % UnitPrice 20 %

Stored Procedure COMMIT ROLL BACK

Note

COMMIT TRAN SQL Server BEGIN TRAN ROLL BACK TRAN COMMIT TRAN ROLL BACK TRAN (Checkpoints)

(Transaction log) SQL Server

SQL Server Durable SQL Server SQL Server (Transaction log)

Transaction savepoints

transaction savepoints Savepoints Explicit Savepoints

SAVETRANSACTION

ROLLBACKTRANSACTION

Savepoints SAVETRANSACTION CREATPROCEDURE Test_Transaction2@cnt int=NULL AS

BEGIN

BEGIN TRAN

UPDATE TblProDucts SET Unitprice = Unitprice*1.2 /* Unitprice 20%*/

SAVETRAN UpdatePrice

UPDATE TblProDucts SET Unitprice = Unitprice*1.1 /* Unitprice 10%*/

IF @cnt IS NULL /* cnt null UpdatePrice*/

ROLLBACK TRANSACTION UpdatePrice

COMMIT TRAN

END

Srored Procedure

Stored Procedure Stored Procedure TransProc 1. Stored Procedure TransProc CREATE PROCEDURE TransProc@PriKey int,@CharCol char (3)

AS

BEGINTRANSACTION InProc

/**/

INTSERT INTO TestTrans VALUES(@PriKey,@CharCol)

INTSERT INTO TestTrans VALUES(@PriKey+1,@CharCol)

COMMIT TRANSACTION InProc

/**/

2. TestTrans Stored Procedure 1 Stored Procedure 2 ROLLBACKTRAN Stored Procedure 2 ROLLBACK TRAN

/* TestTrans*/

CREATE TABLE TestTrans(Cola int PRIMARY KEY,Colb char(3)NOT NULL)

/* TestTrans Storedprocedure 1 */

BEGIN TRANSACTION OutOfProc

EXEC TranProc 1,aaa

/* 2 */

SELECT*FROM TestTrans

ROLLBACK TRANSACTION OutOfProc/**/

SELECT *FROM TestTrans

SQL Server (COMMIT) BEGIN TRAN OutProc

INSERT INTRO TestTrans VALUES(1,Kim)/* TestTrans*/

BEGIN TRAN inProc

INSERT INTRO TestTrans VALUES(2,Doe)/* TestTrans*/

COMMIT TRAN OutProc

COMMIT TRANS InProc OutProc BEGIN TRAN COMMITTRAN

ROLLBACK TRAN

BEGIN TRAN OutProc

INSERT INTO TestTrans VALUES(1,Kim)

BEGIN TRAN InProc

INSERT INTO TestTrans VALUES(2,Doe)

ROLLBACK TRANInProc

/**/

ROLLBACK TRAN InProc

ROLLBACK TRAN BEGIN TRAN OutProc

INSERT INTO TestTrans VALUES(1,Kim)

BEGIN TRAN InProc

INSERT INTO TestTrans VALUES(2,Doe)

ROLLBACK TRAN

ROLLBACK TRAN OutProc

(Locking)

SQL Server 8 1 ( SECLECT) ( INSERT, DELETE, UPDATE )

RID

Key Isolation Level Serialization ()

Page 8

Extent 8 SQL Server

Table WHERE

DB

SQL Server SHARED ( S) Shared EXCLUSIVE ( X) INTER ( I) Exclusive Intent SQL Server SQL Server 3

Intent Shared(IS)

Intent exclusive(IX)

Shared with Intent exclusive(SIX)

UPDATE ( U) EXCLUSIVE Schema 2 - Schema Modification ( Sch-M) ( Data Definition Language - DDL) ALTER TABLE

- Schema Stability ( Sch-S) Transaction SQL Schema Stability Exclusive Lock (X)

Exclusive(X) Exclusive Shared Shared UPDATE Exclusive Shared

IS S U IX SIX X

Intent shared (IS)Yes Yes Yes Yes Yes No

Shared(S)Yes Yes Yes No No No

Update(U)Yes Yes No No No No

Intent exelusive(IX)Yes No No Yes No No

Shared with intent exclusive(SIX)Yes No No No No No

Exclusive(X)No No No No No No

Note

Intent exclusive (IX) Intent Shared (IS) Intent exclusive (IX) Schema Stability (Sch-S) Schema Modification (Sch-M) Schema Modification Schema Stability(Sch-S) Bulk Update(BU)

2 Management Studio

Management >Activity Monitor

Sp_Lock spid dbid objid indid type Database, Table, Extent, Key, Page Row

mode S Shared, X Exclusive,U Update, I Intent status GRNT WAIT CNVT

Deadlock

Deadlock 2 1 A 2 B Deadlock SQL Server 1205

Deadlock Deadlock Deadlock Deadlock1. One TblOrderDetails

BEGIN TRAN

UPDATE TblPrducts SET ProductCount = ProductCount+3

WHERE OrderID=10265 AND ProductID=5

Exclusive TblOrderDetails

2. Two TblOrderDetails

BEGIN TRAN

UPDATE TblPrducts SET UnitPrice=UnitPrice * 1.2 WHERE ProductID=4

Exclusive TblProducts

3. One TblOrderDetails UPDATE TblOrderDetails SET ProductCount = ProductCount+3 WHERE OrderID=10265 AND ProductID=5

TblOrderDetails Exclusiv Tow SQL Server Deadlock

SQL Server Deadlock SQL Server SQL Server 1205

Deadlock

Deadlock Deadlock

Deadlock Deadlock

Exclusive Deadlock Isolation Level Isolation Level Read Committed Read Uncommitted ( Isolation Level )

Deadlock (Kill) sp_look

Deadlock sp_look 54 WAIT 53

sp_look sp_who spid loginname spid Management Studio Kill DBCC OPENTRANT

DBCC OPENTRAN (databaseldatabaseID) [WITH TABLERESULTS]

ID WITH TABLERESULTS

DBCC OPENTAN (Orders) WITH TABLERESULTS

Orders Management Studio

1. Management>Activity Monitor View Processes

2. kill Process

Kill

spid

KILL spid

SQL Server Deadlock () SQL Server Deadlock () LOCK_TIMEOUT 1222 Lock request time-out period exceeded LOCK_TIMEOUT 1,800

SETLOCK_TIMEOUT 1800

4 1. Lost Updates

2 2. Uncommitted Dependency (Dirty Read) 3. Inconsistent Analysis (Nonrepeatable Read)

1

4. Phantoms

1 2

SELECT * FROM TblOrders WHERE ShippedDate > 10/9/05And ShippedDate < 10/9/08

ShippedDate > 10/9/05 And ShippedDate < 10/9/08

Isolation Levels

Isolation Isolation Levels 4 SQL Server Isolation Levels 5 1. Read Uncommitted

Shared 2. Read Committed

Isolation Levels SQL Server Read Committed Shared Isolation Levels Repeatable Read Serialization

Isolation Levels Shared Repeatable Read Serialization

Exclusive 3. Repeatable Read SQL Server Shared Read Committed Shared 4. Snapshot

Read Committed Shared Read Committed

Repeatable Read Serialization Serialization 5. Serialization Isolation Levels SQL Server Repeatable Read Single User SQL Server Key-range SQL Server Repeatable ReadIsolation LevelsDirty read Nonrepeatable Phantom

Read uncommitted

Read committed

Repeatable read

Snapshot

Serializable

SELECT

SQL Server SELECT NOLOCK,READUNCOMMITTED SELECT Exclusive HOLDLOCK,SERIALIZABLE Isolation Levels Serialization SELECT Shared UPDLOCK SELECT Update PAGLOCK SELECT TABLOCK,TABLOCKX SELECT SELECT TABLOCK Shared TABLOCKX Exclusive ROWLOCK READPAST SELECT Isolation Levels READ COMMITTED SELECT

SELECT * FROM TblProducts WITH (NOLOCK)

TblProducts Shared Shared