libmdbx 0.12.3 zaten yayınlandı ve bunlar onun haberleri

libmdbx

libmdbx, son derece hızlı, kompakt, güçlü, tümleşik ve izin verilen şekilde lisanslanmış bir işlemsel anahtar-değer veritabanıdır.

bu libmdbx 0.12.3'ün yeni sürümünün piyasaya sürülmesi (MDBX), kompakt, yüksek performanslı gömülü bir anahtar/değer veritabanı uygulaması.

libmdbx'tir LMDB DBMS'nin derinlemesine elden geçirilmesi ve güvenilirlik açısından selefini geride bırakması, özellik seti ve performans. LMDB ile karşılaştırıldığında libmdbx, kod kalitesine, API kararlılığına, test etmeye ve kendi kendini kontrol etmeye çok önem verir.

libmdbx 0.12.3'ün başlıca yeni özellikleri

Bu yeni versiyonda bunu bulabiliriz diske eşzamanlı yazma ve yazma arasında dinamik bir seçim uyguladı normal, ardından seçenek tarafından kontrol edilen fdatasync() MDBX_opt_writethrough_threshold. Dayanıklı kiplerde, veriler diske iki şekilde temizlenebilir: O_DSYNC ile açılan bir dosya tanıtıcı yoluyla baştan sona yazma ve fdatasync() tarafından takip edilen normal yazma.

İlk yöntem az sayıda sayfa yazarken daha uygundur ve/veya disk/ortam ile iletişim kanalında sıfıra yakın bir gecikme varsa. Çok fazla sayfa yazmanız gerekiyorsa ve/veya etkileşim kanalında önemli bir gecikme varsa (veri merkezleri, bulutlar) ikinci yöntem kullanışlıdır. Eklenen MDBX_opt_writethrough_threshold seçeneği, yazma yöntemini hacme ve belirli kullanım koşullarına göre dinamik olarak seçmek için çalışma zamanında bir eşik belirlemenizi sağlar.

Öne çıkan bir diğer değişiklik ise derleme seçeneği eklendi MDBX_MMAP_USE_MS_ASYNC bu, mevcut işletim sistemlerinin büyük çoğunluğunda gerekli olmayan bir msync(MS_ASYNC) sistem çağrısının kullanımını devre dışı bırakmanıza olanak tanır.

onun yanında varsayılan olarak MDBX_MMAP_USE_MS_ASYNC=0(engelli) Linux ve birleşik sayfa önbelleği olan diğer sistemlerde. Bu davranış (msync(MS_ASYNC) kullanmadan), sabit kodlanmış LMDB mantığına karşılık gelir. Sonuç olarak, basit/saf kıyaslamalarda libmdbx, gerçek kullanımdakiyle aynı şekilde LMDB'den daha iyi performans gösterir.

Her ihtimale karşı, Windows'ta libmdbx'in Windows'ta yavaş (kötü uygulanmış) dosya kilitlerini kasten kullandığından, libmdbx'in birçok küçük işlem içeren senaryolarda LMDB'nin gerisinde kalması beklendiğini bir kez daha belirtmek/hatırlamakta fayda var. işletim sistemi), ancak kullanıcıları veritabanı bozulmasına yol açan çok sayıda yanlış eylemden korumanıza olanak tanır.

MDBX_WRITEMAP ayırma/yeniden kullanım modunda, sayfalar bir sayfa hatası oluşturur ve sayfa içeriği gerekli olmasa bile sayfa diskten okunur (üzerine yazılır). Bu, sanal bellek alt sisteminin çalışmasının bir sonucudur ve normal MADV_REMOVE işleme yöntemi tüm dosya sistemlerinde çalışmaz ve genellikle elde edilen tasarruftan daha pahalıdır.

Buna ek olarak şunu da belirtmekte fayda var. libmdbx artık bu tür sayfaların "önceden yaz" özelliğini kullanıyor, birleşik sayfa önbelleğine sahip sistemlerde verilerin "itilmesine" neden olarak, o sayfaya bellekten erişirken diskten okuma ihtiyacını ortadan kaldırır. Yeni işlevsellik, RAM'deki ön okuma ve sayfa varlığı durumu önbelleğinin mincore() aracılığıyla otomatik olarak işlenmesiyle birlikte çalışır.

Okuma ve yazma tahsisleri için sayfalar tahsis edilirken arızadan önce yazmanın uygulandığından da bahsedilmektedir. Bu, aşağıdaki durumlarda sistem maliyetlerinde çok sayıda azalmaya ve ilgili kullanım durumlarında performansta önemli bir artışa yol açar: veritabanının boyutu ve veri miktarı RAM'den önemli ölçüde daha büyük olduğunda; MDBX_WRITEMAP modu kullanılır; Küçük olmayan işlemler (bir işlem sırasında yüzlerce veya binlerce sayfa tahsis edilir).

Diğer değişikliklerden göze çarpan:

  • Alternatif adlara sahip LCK dosyalarının olmaması için kontrol eklendi.
  • page_alloc_slowpath() içinde GC kayıtlarının otomatik olarak birleştirilmesi için geliştirilmiş destek.
  • GC'yi aramak için tek bir imleç içeriyordu. GC çağrı ile ilgili değiştirilmiş dahili bayraklar.
  • BigFoot etkinken GC'yi güncellemeden önce rezervasyonun iyileştirilmiş hazırlığı.
  • Çakışmayan birleştirilmiş listeler için pnl_merge() kullanımı optimize edildi.
  • dpl_append() içindeki sayfaların sıralı listesi için optimize edilmiş destek.
  • @MAIN'de kullanıcı girişi işlenirken mdbx_chk performansı iyileştirildi.
  • Değiştirilmiş LRU işaretleri
  • Ek yükü azaltmak için yeniden tasarlanmış birleşik sayfa önbelleği "tutarsızlık" denetimi.
  • Veritabanının boyutuna bağlı olarak MDBX_opt_rp_augment_limit tarafından sağlanan otomatik kurulum.
  • Hata öncesi yazmayı etkinleştirmeye/devre dışı bırakmaya zorlamak için MDBX_opt_prefault_write_enable seçeneği eklendi.
  • SubDb için yazdırılamayan adlar için destek eklendi.
    Clang'da yanlış ls_model modunun kullanılmasına neden olan bir hata nedeniyle "FOO'ya karşı yeniden yerleştirme R_X86_64_TPOFF32 -shared ile kullanılamaz" sorununu düzeltmek için açık bir tls_model("yerel-dinamik") seçeneği eklendi.

Son olarak, onun hakkında daha fazla bilgi edinmekle ilgileniyorsanayrıntıları kontrol edebilirsiniz Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.