ACID’in Isolation’ına Yakından Bakış

Gökhan Şengün
Aug 25, 2017 · 2 min read

İlk iki flood’da RDBMS’lerin ACID özelliklerine değinmiştik. Bu flood’da ise ACID’in Isolation özelliğine biraz derinlemesine dalacağız.

Önceki flood’dan görülebileceği gibi Isolation özelliği, veri bütünlüğünü sağlamak üzere aynı kaydın işlendiği Transaction’ları seri olarak koşturmaktadır. Seri olarak koşturulan Transaction’lar paralel işleme özelliğini kullanamayacaklarından performans problemi yaratabilir.

Kurduğumuz sistemin iş kurallarına göre veri tabanı tabloları üzerinde yapılan işlemlerin birbirinden katı bir şekilde izole edilmesi gerekmeyebilir. Örneğin bir Dashboard’da sistemdeki toplam kullanıcı sayısını göstermek üzere yaptığımız bir sorgunun, performans gerekçesiyle aynı anda sisteme yeni bir kullanıcıyı dahil etmek için koşturduğumuz bir Transaction’dan etkilenmemesini isteyebiliriz. Buna karşın yine iş kuralları çerçevesinde, Dashboard’da anlık olarak muhakkak gerçek değeri vermemiz gerektiğinde, yeni kullanıcıyı sisteme dahil eden Transaction’ın toplam kullanıcı sayısını verecek sorguyu etkilemesini de isteyebiliriz.

Farklı ihtiyaçlara göre, kullanıcılar ve RDBMS arasında bir protokol oluşturmak üzere, SQL Standardında 4 izolasyon seviyesi Serializable, Repeatable Read, Read Committed ve Read Uncommitted olarak tanımlanmıştır. Verilen Transaction Isolation Level’leri somutlaştırmak ve seçimi kolaylaştırmak adına literatürde genel olarak 3 durum verilir ve iş ihtiyaçlarınızın bu durumlara uygunluğuna göre Transaction’larınızda ilgili izolasyon seviyesini seçmeniz beklenir.

İlk durum ‘Dirty Read’dir, bir Transaction’ın aynı anda işletilmekte olan başka bir Transaction bitmeden o Transaction’ın etki ettiği dataları okuyabilmesi anlamına gelir (yukarıda verilen ilk Dashboard örneği).

‘Nonrepeatable Read’, bir Transaction’ın aynı kaydı iki kere okuduğunda farklı değerler (ilk okumadan sonra sonlanan başka bir Transaction’dan dolayı) elde edebileceği anlamına gelir.

‘Phantom Read’ ise bir Transaction’ın ilk yaptığı sorgudan dönen kayıtların aynı sorguyu aynı Transaction içerisinde ikinci kez yapması ile farklı sayıda kayıt (yine ilk sorgudan sonra başka Transaction tarafından tabloya eklenen kayıtlar dolayısıyla) dönebilmesi anlamına gelir.

Uygulamamızın yukarıdaki üç duruma tahammül edip edemeyeceğine göre aşağıdaki tablodan Transaction Isolation Level belirlenir.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store