ApsaraDB for HBase は、Log-Structured Merge(LSM)モードに基づいて、HLog およびメモリにデータを書き込みます。つまり、ApsaraDB for HBase はランダムな入出力(I/O)操作を実行しないため、書き込み操作の高パフォーマンスと安定性が実現します。ほとんどのデータベースソリューションでは、書き込み操作はパフォーマンスを犠牲にして信頼性のために最適化されています。
バッチ書き込み機能は、リモートプロシージャコール(RPC)の数を減らすために提供されています。
HTable.put(List<Put>) 自動フラッシュ
自動フラッシュ を false に設定することで、書き込みパフォーマンスを大幅に向上させることができます。ただし、2 MB のデータがバッファリングされる(hbase.client.write.buffer)か、hbase.flushcommits() コマンドが呼び出されるまで待ってから、RegionServer で 自動フラッシュ を呼び出すことをお勧めします。データはリモートデータベースに書き込まれません。
HTable.setWriteBufferSize(writeBufferSize) を使用して、バッファサイズを設定できます。
サーバーの最適化
WAL フラグ
Write Ahead Log(WAL)を無効にすることで、書き込みパフォーマンスを大幅に向上させることができます。これは、WAL が無効になっている場合、HLog への書き込みが実行されないため、I/O 操作の数が削減されるためです。Memstore へのメモリ内書き込みのみが実行されます。
この操作は、信頼性よりもパフォーマンスが優先されるシナリオに適用できます。
Memstore のメモリサイズを増やす
Memstore の値を増やし、BlockCache の値を減らすことで、書き込みパフォーマンスを向上させることもできます。これは読み取りの最適化とは逆です。
多数の HFile ファイルが生成されているかどうかを確認する
書き込み速度が高い場合、多数の HFile が生成されます。これは、HFile のマージ速度が書き込み操作の速度よりも遅いためです。
リソースを効率的に使用するために、オフピーク時にメジャーコンパクションを実行することをお勧めします。HFile の数を減らすことができない場合は、ノードを追加することをお勧めします。