Sistem Yönetimi
100%

MySQL InnoDB Depolama Motoru Mimarisi ve ACID Garantileri

İlişkisel veritabanlarında veri tutarlılığını sağlayan InnoDB depolama motorunun mimarisi, Transaction logları ve ACID prensipleri.

Genel Bakış

MySQL, arka planda verileri diske yazmak ve diskten okumak için "Depolama Motorları" (Storage Engines) kullanır. Eski sürümlerde varsayılan motor MyISAM iken, günümüzde yüksek güvenilirlik ve performans sunan InnoDB standart depolama motorudur.

Sorun

Bir e-ticaret sitesinde müşteri ürün satın aldığında arka planda iki şey olmalıdır: 1) Müşterinin bakiyesi düşmeli, 2) Ürünün stok sayısı bir azaltılmalı. Eski tip veritabanlarında bakiye düştükten hemen sonra sunucunun elektriği kesilirse, stok eksilmez. Kullanıcının parası gitmiştir ama sistemde stok hala duruyordur. Bu tür veri tutarsızlıkları kurumsal sistemler için kabul edilemez.

Çözüm: ACID Prensipleri ve İşlemler (Transactions)

InnoDB motoru, veritabanı dünyasında ACID (Atomicity, Consistency, Isolation, Durability) olarak bilinen 4 temel prensibi garanti eden "Transaction" desteği sunar. Bu işlemler, bir dizi SQL komutunun tek bir blok olarak ele alınmasını sağlar (Hepsi ya tam gerçekleşir, ya da hiç gerçekleşmez - Rollback).

Örnek Transaction Bloğu (SQL):

START TRANSACTION;
UPDATE uyeler SET bakiye = bakiye - 100 WHERE id = 5;
UPDATE urunler SET stok = stok - 1 WHERE id = 10;
COMMIT; -- Elektrik kesintisi öncesi bu komut çalışmazsa veriler eski haline döner.

Teknik Detaylar

InnoDB bu güvenilirliği iki hayati log dosyası ile sağlar:
Redo Log: Veri değişikliği olduğunda, InnoDB önce bu değişikliği hızlıca diske sıralı (sequential) olarak Redo Log dosyasına yazar. Eğer veri henüz asıl tablo dosyasına işlenmeden elektrik kesilirse, sistem açıldığında Redo loglar okunarak işlemler tamamlanır (Durability garantisi).
Undo Log: Bir transaction başlatıldığında, değiştirilecek verinin eski hali buraya kopyalanır. Eğer işlem sırasında bir hata çıkar ve ROLLBACK edilirse, InnoDB Undo logdaki eski veriyi tabloya geri yazar (Atomicity garantisi). Ayrıca InnoDB, eski sistemlerin aksine tüm tabloyu kilitlemek yerine Satır Seviyesinde Kilitleme (Row-Level Locking) yaparak aynı tabloda binlerce işlemin eşzamanlı çalışmasına olanak tanır.

Sonuç

InnoDB, ilişkisel veri bütünlüğünü donanım arızalarına rağmen matematiksel olarak garanti altına alan muazzam bir mühendislik ürünüdür. Yüksek tutarlılık gerektiren finans, muhasebe ve e-ticaret uygulamalarının vazgeçilmez temelidir.

İlgili Wiki'ler

Tümünü Gör