Aracılığıyla paylaş


Eşzamanlılık Denetimi

Eşzamanlılık , iki işlemin aynı verileri aynı anda kullanabilmesi ve işlem yalıtımının artmasıyla genellikle eşzamanlılığın azalmasıdır. Bunun nedeni, işlem yalıtımının genellikle satırları kilitleyerek uygulanmasıdır ve daha fazla satır kilitlendiğinden, kilitli bir satır tarafından en azından geçici olarak engellenmeden daha az işlem tamamlanabilir. Azaltılmış eşzamanlılık genellikle veritabanı bütünlüğünü korumak için gereken daha yüksek işlem yalıtım düzeyleri için bir denge olarak kabul edilir, ancak imleç kullanan yüksek okuma/yazma etkinliğine sahip etkileşimli uygulamalarda sorun haline gelebilir.

Örneğin, bir uygulamanın SELECT * FROM Orders SQL deyimini yürüttüğüni varsayalım. Sonuç kümesinde gezinmek için SQLFetchScroll'ı çağırır ve kullanıcının siparişleri güncelleştirmesine, silmesine veya eklemesine izin verir. Kullanıcı bir siparişi güncelleştirdikten, sildikten veya ekledikten sonra uygulama işlemi işler.

Yalıtım düzeyi Repeatable Read ise, işlem nasıl uygulandığına bağlı olarak SQLFetchScroll tarafından döndürülen her satırı kilitler. Yalıtım düzeyi Serileştirilebilirse, işlem Orders tablosunun tamamını kilitler. Her iki durumda da işlem kilitlerini yalnızca onaylandığında veya geri alındığında serbest bırakır. Bu nedenle, kullanıcı siparişleri okumak için çok fazla zaman harcar ve bunları güncelleştirmek, silmek veya eklemek için çok az zaman harcarsa, işlem çok sayıda satırı kolayca kilitleyerek diğer kullanıcılar tarafından kullanılamaz duruma gelebilir.

İmleç salt okunur olsa ve uygulama kullanıcının yalnızca mevcut siparişleri okumasına izin verse bile bu bir sorundur. Bu durumda uygulama işlemi işler ve SQLCloseCursor (otomatik işleme modunda) veya SQLEndTran (el ile işleme modunda) çağırdığında kilitleri serbest bırakır.

Bu bölüm aşağıdaki konuları içerir.