Sen sordun
bir READ_UNCOMMITTED işleminin başka bir işlemden kaydedilmemiş verileri okuyabileceği şekilde, kaydedilmemiş veriler nerede depolanır?
Sorunuzu cevaplamak için InnoDB Mimarisinin neye benzediğini bilmeniz gerekir.
Aşağıdaki resim Percona CTO Vadim Tkachenko tarafından yıllar önce oluşturuldu
InnoDB İşlem Modeli ve Kilitleme Üzerine MySQL Belgelerine Göre
KOMİT, mevcut işlemde yapılan değişikliklerin kalıcı hale getirildiği ve diğer oturumlara görünür hale geldiği anlamına gelir. Öte yandan bir ROLLBACK deyimi, geçerli işlem tarafından yapılan tüm değişiklikleri iptal eder. Hem COMMIT hem de ROLLBACK, geçerli işlem sırasında ayarlanmış olan tüm InnoDB kilitlerini serbest bırakır.
COMMIT ve ROLLBACK veri görünürlüğünü yönettiğinden, READ COMMITTED ve READ UNCOMMITTED değişiklikleri kaydeden yapılara ve mekanizmalara güvenmek zorundadır
- Geri Alma Segmentleri / Boşluğu Geri Al
- Günlükleri Yeniden Yap
- İlgili Tablolara Karşı Boşluklar Kilidi
Geri Alma Segmentleri ve Geri Alma Alanı, değişiklikler uygulanmadan önce değişen verilerin neye benzediğini bilir. Günlükleri Yeniden Yap, verilerin güncellenmesi için hangi değişikliklerin ileriye doğru döndürüleceğini bilir.
Ayrıca sordun
Neden bir READ_COMMITTED işleminin taahhüt edilmemiş verileri okuması, yani "kirli okuma" yapması mümkün değildir? Bu kısıtlamayı hangi mekanizma uygular?
Günlükleri Yeniden Yap, Alanı Geri Al ve Kilitli satırlar devreye girer. Ayrıca InnoDB Tampon Havuzu'nu ( innodb_max_dirty_pages_pct , innodb_buffer_pool_pages_dirty ve innodb_buffer_pool_bytes_dirty ile kirli sayfaları ölçebileceğiniz ) dikkate almalısınız .
Bunun ışığında, OKU TAAHHÜT hangi verilerin kalıcı olarak göründüğünü bilecektir. Bu nedenle, taahhüt edilmemiş kirli sayfaları aramaya gerek yoktur. TAAHHÜT OKUYUN, yapılan kirli bir okumadan başka bir şey olmayacaktır. OKUL UNCOMMITTED, hangi satırların kilitleneceğini ve verilerin görünür olmasını sağlamak için hangi yineleme günlüklerinin okunup yoksayıldığını öğrenmeye devam ederdi.
İzolasyonu Yönetmek için Satırların Kilitlenmesini tam olarak anlamak için lütfen InnoDB İşlem Modelini ve Kilitlemeyi okuyun