ApsaraDB for HBase, Log-Structured Merge (LSM) yapısını kullanarak verileri HLog ve belleğe yazar. Bu sayede ApsaraDB for HBase rastgele giriş/çıkış (I/O) işlemleri yapmaz; yazma işlemlerinde yüksek performans ve kararlılık sunar. Çoğu veritabanı çözümünde yazma işlemleri, performanstan ödün verilerek güvenilirlik için optimize edilir.
Satır başına düşen ağ ek yükünü azaltmak için birden çok yazma işlemini tek bir Uzak Yordam Çağrısında (RPC) toplayan HTable.put(List<Put>) yöntemini kullanın.
HTable.put(List<Put>)
AutoFlush özelliğini devre dışı bırakın
Autoflush özelliğini false olarak ayarlayarak yazma performansını önemli ölçüde artırabilirsiniz. Ancak, RegionServer üzerinde Autoflush çağrısı yapmadan önce 2 MB verinin tamponlanmasını (hbase.client.write.buffer) veya hbase.flushcommits() komutunun çağrılmasını beklemenizi öneririz. Veriler uzak veritabanına yazılmaz.
Tampon boyutunu HTable.setWriteBufferSize() ile ayarlayın.
Sunucu optimizasyonu
WAL bayrağı
Write-Ahead Log (WAL), her yazma işlemini onaylamadan önce diske kaydeder ve veri dayanıklılığını garanti eder. WAL özelliğini devre dışı bırakmak I/O işlemi sayısını azaltarak yazma aktarım hızını artırır. Bu durumda yalnızca MemStore üzerinde bellek içi yazma işlemleri yapılır.
Bu işlem, güvenilirlik yerine performansı ön plana çıkaran senaryolar için uygundur.
MemStore belleğini artırın
Yazma yoğunluklu iş yükleri için MemStore bellek tahsisini artırın ve BlockCache tahsisini azaltın. Bu yaklaşım, okuma optimizasyonunun tersidir.
HFile birikimini yönetin
Yüksek yazma aktarım hızlarında HFile dosyaları, birleştirme işleminin bunları toplayabileceği hızdan daha hızlı birikir.
HFile sayısını kontrol altında tutmak için aşağıdaki adımları uygulayın:
Canlı yazma trafiğiyle rekabet etmeden HFile dosyalarını birleştirmek üzere büyük birleştirmeyi yoğun olmayan saatlerde planlayın.
HFile sayısı kabul edilebilir bir zaman aralığında azaltılamıyorsa yazma yükünü dağıtmak için RegionServer düğümleri ekleyin.