11 puan yazan GN⁺ 2024-11-14 | 1 yorum | WhatsApp'ta paylaş
  • SQLite hakkında insanların sıkça yanlış anladığı noktalardan biri, “SQLite yalnızca tek bir bağlantıya izin veren bir veritabanıdır” diye düşünmeleri ve bu yüzden kullanmaktan kaçınmalarıdır
  • Bu hem kafa karıştırıcıdır (burada "bağlantı" ne anlama geliyor?) hem de birçok açıdan yanlış bir iddiadır
  • Okuma işlemleri (Read Operations)
    • SQLite, birden fazla eşzamanlı okuma işlemini tamamen destekler
    • Birden fazla “bağlantı” üzerinden aynı anda veri okunabilir ve bu süreçte çakışma ya da sorun yaşanmaz
  • Yazma işlemleri (Write Operations)
    • SQLite, yazma işlemleri sırasında veritabanı düzeyinde bir yazma kilidi (Write Lock) kullanır
    • Aynı anda birden fazla yazma işlemine izin vermez; bu nedenle bir anda yalnızca bir “bağlantı” yazma işlemi gerçekleştirebilir
    • Genel olarak bunun sorun olmamasının nedeni, IMMEDIATE TRANSACTION başlatılabilmesidir
    • Bu durumda SQLite, yazma kilidini elde etmek için kuyrukta yeniden deneme yapabilir
      • (Bu yöntem, yazma kilidi serbest bırakıldığında yazma işleminin otomatik olarak gerçekleştirilebilmesini sağlar)

1 yorum

 
savvykang 2024-11-15

https://www.sqlite.org/lockingv3.html

5.0 Veritabanı dosyasına yazma
Veritabanına yazmak için, önce yukarıda açıklandığı gibi sürecin bir SHARED kilidi edinmesi gerekir. SHARED kilidi edinildikten sonra RESERVED kilidi edinilmelidir. RESERVED kilidi, sürecin gelecekte bir noktada veritabanına yazacağını gösterir. Aynı anda yalnızca bir süreç RESERVED kilidini tutabilir. Ancak diğer süreçler, RESERVED kilidi tutulurken veritabanını okumaya devam edebilir.