SQL Server'da İşlemler ve Hata Yönetimi
Miriam Antona
Software Engineer
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
| Kirli okumalar | Tekrarlanamaz okumalar | Hayalet okumalar | |
|---|---|---|---|
| READ UNCOMMITTED | evet | evet | evet |
| READ COMMITTED | hayır | evet | evet |
Hesap 5'in ilk bakiyesi = $35.000
Transaction1
BEGIN TRAN
UPDATE accounts
SET current_balance = 30000
WHERE account_id = 5;
Transaction2
...
...
...
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SELECT current_balance
FROM accounts WHERE account_id = 5;
Beklemek zorunda!
Hesap 5'in ilk bakiyesi = $35.000
Transaction1
BEGIN TRAN
UPDATE accounts
SET current_balance = 30000
WHERE account_id = 5;

COMMIT TRAN;
Transaction2
...
...
...
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SELECT current_balance
FROM accounts WHERE account_id = 5;
| current_balance |
|-----------------|
| 30000,00 |
Transaction1
BEGIN TRAN
SELECT current_balance
FROM accounts WHERE account_id = 5;
Transaction2
...
...
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SELECT current_balance
FROM accounts WHERE account_id = 5;
| current_balance |
|-----------------|
| 35000,00 |
Artıları:
Eksileri:
Ne zaman kullanılır?:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
| Kirli okumalar | Tekrarlanamaz okumalar | Hayalet okumalar | |
|---|---|---|---|
| READ UNCOMMITTED | evet | evet | evet |
| READ COMMITTED | hayır | evet | evet |
| REPEATABLE READ | hayır | hayır | evet |
Transaction1
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
SELECT current_balance FROM accounts
WHERE account_id = 5;
| current_balance |
|-----------------|
| 35000,00 |
Transaction2
...
...
UPDATE accounts
SET current_balance = 30000
WHERE account_id = 5;
Beklemek zorunda!
Transaction1
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
SELECT current_balance FROM accounts
WHERE account_id = 5;
SELECT current_balance FROM accounts
WHERE account_id = 5;
| current_balance |
|-----------------|
| 35000,00 |
COMMIT TRAN
Transaction2
...
...
UPDATE accounts
SET current_balance = 30000
WHERE account_id = 5;
Beklemek zorunda!
Transaction1
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
SELECT current_balance FROM accounts
WHERE account_id = 5;
SELECT current_balance FROM accounts
WHERE account_id = 5;
COMMIT TRAN
Transaction2
...
...
UPDATE accounts
SET current_balance = 30000
WHERE account_id = 5;
(1 rows affected)
Artıları:
Eksileri:
REPEATABLE READ işlemi tarafından engellenebilirsinizNe zaman kullanılır?:
SQL Server'da İşlemler ve Hata Yönetimi