東京キャビネットのテーブルエンジンを評価しています。100 万レコードに達すると、挿入速度が大幅に低下します。バッチ サイズは 100,000 で、トランザクション内で実行されます。xmsiz を設定しようとしましたが、まだ使用できません。東京内閣でこの問題に直面した人はいますか?
詳細
東京キャビネット - 1.4.3
Perl バインディング - 1.23
OS : Ubuntu 7.10 (Windows XP 上の VMWare Player)
東京キャビネットのテーブルエンジンを評価しています。100 万レコードに達すると、挿入速度が大幅に低下します。バッチ サイズは 100,000 で、トランザクション内で実行されます。xmsiz を設定しようとしましたが、まだ使用できません。東京内閣でこの問題に直面した人はいますか?
詳細
東京キャビネット - 1.4.3
Perl バインディング - 1.23
OS : Ubuntu 7.10 (Windows XP 上の VMWare Player)
同様に、シャードごとに約 100 万件のレコードというレンガの壁にぶつかりました (クライアント側でのシャーディング、空想は何もありません)。さまざまな ttserver オプションを試しましたが、違いがないように見えたので、カーネル側を調べたところ、
echo 80 > /proc/sys/vm/dirty_ratio
(以前の値は 10 でした) は大幅に改善されました。以下は、1 分ごとに出力されるデータの合計サイズ (8 つのシャードで、それぞれが独自のノードで) です。
合計: 14238792 レコード、27.5881 GB サイズ 合計: 14263546 レコード、27.6415 GB サイズ 合計: 14288997 レコード、27.6824 GB サイズ 合計: 14309739 レコード、27.7144 GB サイズ 合計: 14323563 レコード、27.7438 GB サイズ (ここでは、すべてのシャードの dirty_ratio 設定を変更しました) 合計: 14394007 レコード、27.8996 GB サイズ 合計: 14486489 レコード、28.0758 GB サイズ 合計: 14571409 レコード、28.2898 GB サイズ 合計: 14663636 レコード、28.4929 GB サイズ 合計: 14802109 レコード、28.7366 GB サイズ
7~8倍程度の改善であることがわかります。その時点でのデータベース サイズはノードあたり約 4.5GB (インデックスを含む) で、ノードには 8GB の RAM があります (つまり、dirty_ratio が 10 の場合、カーネルは約 800MB 未満のダーティーを維持しようとしたことになります)。
次に試みるのは、ext2 (現在: ext3) と noatime であり、すべてを ramdisk に保持します (これはおそらく 2 倍のメモリ量を浪費しますが、それだけの価値があるかもしれません)。
キャッシュオプションを設定しただけで、大幅に高速になりました。
dbtune関数でbnumパラメーターを変更すると、速度も大幅に向上すると思います。