dbms ไทย บทที่ 14 รู้จักกับ transaction และ locking
DESCRIPTION
DBMS ไทย บทที่ 14 รู้จักกับ Transaction และ LockingTRANSCRIPT
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