MSSQL Dersleri #20: Transaction Yönetimi ve Kilitler

Transaction Yönetimi ve Kilitler: BEGIN TRAN, COMMIT, ROLLBACK ve İzolasyon Seviyeleri

Transaction yönetimi, veritabanı yönetiminde çok önemli bir rol oynar. Bu makalede, Transaction yönetimi, BEGIN TRAN, COMMIT, ROLLBACK komutları ve İzolasyon Seviyeleri hakkında detaylı bilgi edineceksiniz.

Transaction Nedir?

Transaction, bir veritabanında birden fazla işlemi tek bir birim olarak gruplayan bir mekanizmadır. Transaction’lar, ya tamamıyla başarılı olur ya da tamamıyla başarısız olur. Bu, veritabanının tutarlılığını korur.

BEGIN TRAN, COMMIT ve ROLLBACK

Transaction’ları yönetmek için kullanılan temel komutlar şunlardır:

  • BEGIN TRAN: Transaction’ı başlatır.
  • COMMIT: Transaction’ı kalıcı hale getirir ve tüm işlemler veritabanına kaydedilir.
  • ROLLBACK: Transaction’ı iptal eder ve tüm işlemler geri alınır.
-- Transaction başlatma
BEGIN TRAN

-- İşlemler
UPDATE Employees SET Salary = Salary * 1.10 WHERE Department = 'Sales';

-- Transaction'ı kalıcı hale getirme
COMMIT

-- Transaction'ı iptal etme
-- ROLLBACK
Code language: SQL (Structured Query Language) (sql)

İzolasyon Seviyeleri

İzolasyon seviyeleri, Transaction’ların birbirleriyle nasıl etkileşimde bulunacağını ve birbirlerinden nasıl izole olacağını belirler. SQL Server’da dört ana izolasyon seviyesi vardır:

  • Read Uncommitted: En düşük izolasyon seviyesi. Bir Transaction, diğer Transaction’ların henüz commit edilmemiş verilerini okuyabilir.
  • Read Committed: Bir Transaction, sadece diğer Transaction’ların commit edilmiş verilerini okuyabilir.
  • Repeatable Read: Bir Transaction, aynı veriyi birden fazla kez okuduğunda aynı değeri alır. Ancak, diğer Transaction’lar tarafından eklenen yeni veriler görünmez.
  • Serializable: En yüksek izolasyon seviyesi. Bir Transaction, diğer Transaction’ların verilerini okumasını veya güncellenmesini engeller.
-- Izolasyon seviyesini ayarlama
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Kilitler

Transaction’lar, veritabanındaki verilere erişim sırasında kilitler kullanır. Kilitler, bir Transaction’ın verilere erişimini diğer Transaction’lardan engellemek için kullanılır.

SQL Server’da iki ana kilit tipi vardır:

  • Shared Lock (S Lock): Veriyi okuyan Transaction’lar tarafından kullanılır. Diğer Transaction’lar da veriyi okuyabilir, ancak güncelleme yapamazlar.
  • Exclusive Lock (X Lock): Veriyi güncelleyen Transaction’lar tarafından kullanılır. Diğer Transaction’lar hem okuma hem de güncelleme yapamazlar.
-- Kilitleri gösterme
SELECT request_session_id, resource_type, request_mode, request_status
FROM sys.dm_tran_locks;
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Performans

Transaction’ların performansı, Transaction’ların boyutu, izolasyon seviyesi ve kilitler kullanılarak etkileyebilir. İyi bir Transaction yönetimi, veritabanının performansını artırır ve tutarlılığını korur.

💡 Kıdemli DBA Triki: Transaction’ların boyutunu minimize etmek ve uygun izolasyon seviyelerini kullanmak, performansı artırır.

Transaction Yönetimi ve Güvenlik

Transaction’lar, veritabanının güvenliğini korur. Bir Transaction, veritabanındaki verilerin tutarlılığını sağlar. Ayrıca, Transaction’lar, veritabanındaki verilerin doğru ve güvenilir bir şekilde güncellenmesini sağlar.

⚠️ Canlı Ortam Uyarısı: Transaction’ları canlı ortamda kullanırken dikkatli olun. Yanlış bir Transaction, veritabanındaki verileri bozabilir.

Transaction Yönetimi ve Hata Yönetimi

Transaction’lar, hata yönetimi için de kullanılır. Bir Transaction, bir hata durumunda otomatik olarak iptal edilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Hata yönetimi
BEGIN TRY
    BEGIN TRAN
    -- İşlemler
    COMMIT
END TRY
BEGIN CATCH
    ROLLBACK
    -- Hata işleme
END CATCH
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Günlük Kayıtları

Transaction’lar, veritabanındaki değişiklikleri izlemek için günlük kayıtları kullanır. Günlük kayıtları, Transaction’ların ne zaman başladığını, ne zaman bittiğini ve ne tür işlemler gerçekleştirdiğini kaydeder.

-- Günlük kayıtlarını gösterme
SELECT transaction_id, begin_time, end_time, transaction_type
FROM sys.dm_tran_session_transactions;
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Geri Yükleme

Transaction’lar, veritabanındaki verileri geri yüklemek için de kullanılır. Bir Transaction, veritabanındaki verileri geri yüklemek için otomatik olarak geri alınabilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri geri yükleme
RESTORE DATABASE MyDatabase
FROM DISK = 'C:\Backups\MyDatabase.bak'
WITH REPLACE, NOREWIND, NOUNLOAD, STATS = 10;
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Yedekleme

Transaction’lar, veritabanındaki verileri yedeklemek için de kullanılır. Bir Transaction, veritabanındaki verileri yedeklemek için otomatik olarak yedeklenebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri yedekleme
BACKUP DATABASE MyDatabase
TO DISK = 'C:\Backups\MyDatabase.bak'
WITH INIT, NAME = 'MyDatabase-Full Database Backup';
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Taşıma

Transaction’lar, veritabanındaki verileri taşımak için de kullanılır. Bir Transaction, veritabanındaki verileri taşımak için otomatik olarak taşınabilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri taşıma
INSERT INTO NewDatabase.dbo.Employees (EmployeeID, FirstName, LastName, Salary)
SELECT EmployeeID, FirstName, LastName, Salary
FROM OldDatabase.dbo.Employees;
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Analizi

Transaction’lar, veritabanındaki verileri analiz etmek için de kullanılır. Bir Transaction, veritabanındaki verileri analiz etmek için otomatik olarak analiz edilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri analizi
SELECT Department, AVG(Salary) AS AverageSalary
FROM Employees
GROUP BY Department;
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Güvenliği

Transaction’lar, veritabanındaki verileri güvenli hale getirmek için de kullanılır. Bir Transaction, veritabanındaki verileri güvenli hale getirmek için otomatik olarak güvenli hale getirilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri güvenliği
ALTER TABLE Employees
ADD CONSTRAINT chk_Salary CHECK (Salary > 0);
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Performansı

Transaction’lar, veritabanındaki verileri performanslı hale getirmek için de kullanılır. Bir Transaction, veritabanındaki verileri performanslı hale getirmek için otomatik olarak performanslı hale getirilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri performansı
CREATE INDEX idx_EmployeeID ON Employees (EmployeeID);
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Tutarlılığı

Transaction’lar, veritabanındaki verileri tutarlı hale getirmek için de kullanılır. Bir Transaction, veritabanındaki verileri tutarlı hale getirmek için otomatik olarak tutarlı hale getirilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri tutarlılığı
BEGIN TRAN
UPDATE Employees SET Salary = Salary * 1.10 WHERE Department = 'Sales';
COMMIT
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Güvenliği

Transaction’lar, veritabanındaki verileri güvenli hale getirmek için de kullanılır. Bir Transaction, veritabanındaki verileri güvenli hale getirmek için otomatik olarak güvenli hale getirilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri güvenliği
ALTER TABLE Employees
ADD CONSTRAINT chk_Salary CHECK (Salary > 0);
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Performansı

Transaction’lar, veritabanındaki verileri performanslı hale getirmek için de kullanılır. Bir Transaction, veritabanındaki verileri performanslı hale getirmek için otomatik olarak performanslı hale getirilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri performansı
CREATE INDEX idx_EmployeeID ON Employees (EmployeeID);
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Tutarlılığı

Transaction’lar, veritabanındaki verileri tutarlı hale getirmek için de kullanılır. Bir Transaction, veritabanındaki verileri tutarlı hale getirmek için otomatik olarak tutarlı hale getirilebilir. Bu, veritabanındaki verilerin tutarlılığını korur.

-- Veri tutarlılığı
BEGIN TRAN
UPDATE Employees SET Salary = Salary * 1.10 WHERE Department = 'Sales';
COMMIT
Code language: SQL (Structured Query Language) (sql)

Transaction Yönetimi ve Veri Güvenliği

NasuhAkay
NasuhAkay

Nasuh Akay, 20 yılı aşkın IT deneyimine sahip; kurumsal teknoloji çözümleri, ERP sistemleri, yazılım geliştirme, veri yönetimi ve dijital dönüşüm alanlarında çalışmalar yürüten bir teknoloji profesyonelidir.

Kariyeri boyunca farklı sektörlerde edindiği deneyimlerini; teknoloji, yazılım, veri mimarisi ve iş süreçlerinin geliştirilmesi üzerine yoğunlaştırmıştır.

Bu blogda ERP çözümleri, SQL Server, yazılım geliştirme, yapay zekâ, dijital dönüşüm ve teknoloji dünyasındaki gelişmeler üzerine bilgi, deneyim ve teknik paylaşımlarını okuyucularla buluşturmaktadır.

Amacı, karmaşık teknik konuları anlaşılır bir dille ele almak, gerçek hayatta karşılaşılan problemlere yönelik uygulanabilir çözümler sunmak ve teknoloji alanındaki bilgi birikimini paylaşmaktır.

Articles: 755

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir