SQLite geliştiricileri paralel yazma desteğiyle HC-tree arka ucu geliştirdi

SQLite proje geliştiricileri, satır düzeyinde kilitlemeyi destekleyen ve sorguları işlerken yüksek düzeyde paralelleştirme sağlayan deneysel bir HCtree arka ucunu test etmeye başladı. Yeni arka uç, veritabanına çok sayıda eşzamanlı yazma isteğini işlemesi gereken istemci-sunucu sistemlerinde SQLite kullanmanın verimliliğini artırmayı amaçlıyor.

Verileri depolamak için SQLite'ta yerel olarak kullanılan b-ağacı yapıları bu tür yük için tasarlanmamıştır, bu da SQLite'ın yalnızca bir iş parçacığına yazılmasını sınırlar. Bir deney olarak geliştiriciler, depolama için yazma işlemlerinin paralelleştirilmesine daha uygun olan HC ağacı yapılarını kullanan alternatif bir çözüm geliştirmeye başladı.

Birden fazla işlemin eşzamanlı olarak yürütülmesine izin vermek için, bir HCtree kaydı, sayfa düzeyinde kilitleme kullanan ve MVCC'ye (Çok Sürümlü Eşzamanlılık Kontrolü) benzeyen ancak sayfa kümeleri yerine anahtarlara ve anahtar aralıklarına dayalı işlem kontrollerini kullanan bir işlem bölümleme mekanizması kullanır. Okuma ve yazma işlemleri, bir veritabanı anlık görüntüsüyle bağlantılı olarak gerçekleştirilir; değişiklikler, yalnızca işlem tamamlandıktan sonra ana veritabanında görünür hale gelir.

Müşteriler üç açık işlem işlemini kullanabilir:

  • “BEGIN”—işlemler diğer müşterilerin erişim verilerini dikkate almaz. Bir işlem içinde yazma işlemleri gerçekleştiriliyorsa, işlem ancak yürütülmesi sırasında veritabanında başka bir yazma işlemi yapılmamışsa gerçekleştirilebilir.
  • "EŞzamanlı olarak başlayın" - işlemler diğer müşterilerin erişimi hakkında bilgi toplar. Bir işlem içerisinde yazma işlemleri gerçekleştiriliyorsa, anlık görüntünün oluşturulduğu andan itibaren veritabanında başka işlemler yürütülmüşse, işlem gerçekleştirilebilir.
  • “ÖZEL BAŞLA” - bir işlem açıldıktan sonra, tamamlanana kadar diğer işlemlere ait işlemleri engeller.

HCtree, işlemleri başka bir veritabanına taşımanıza ve ikincil veritabanlarını birincil veritabanıyla senkronize tutmanıza olanak tanıyan ana-bağımlı çoğaltmayı destekler. HCtree ayrıca veritabanı boyutundaki sınırlamayı da ortadan kaldırır; HCtree, 32 bitlik veri sayfası tanımlayıcıları yerine 48 bitlik olanları kullanır, bu da maksimum veritabanı boyutunu 16 tebibayttan 1 ekbibite (milyon tebibayt) çıkarır. HCtree arka ucuna sahip SQLite'ın performansının klasik tek iş parçacıklı arka uçtan daha düşük olmaması bekleniyor. HCtree desteğine sahip SQLite istemcileri, hem HC ağacı tabanlı veritabanlarına hem de eski SQLite veritabanlarına erişebilecektir.

Kaynak: opennet.ru

Yorum ekle