Cassandra v1.2.5 では、単一の行からデータを読み取るときにパフォーマンスが低下します。列はほとんどまたはゼロですが、以前は多くの異なる列が追加および削除されていました。
テストするには、次のことを行います。
- 新しい列ファミリーを作成する
- 行の読み取り速度を 100 回測定 - ゼロ列が返される読み取りあたりの平均ミリ秒で 4.6 ミリ秒
- 行に 500000 列を追加します
- 行から 500000 をすべて削除しました
- 読み取り速度を再度 100 回測定します。0 列が返された場合の読み取りあたりの平均ミリ秒は 282.4 ミリ秒です。
そのため、その後、読み取りが以前よりも約 70 倍遅くなり、500000 列を追加および削除しました。
圧縮、フラッシュ、修復を試みますが、何も役に立ちません。速度がわずかに向上し、最大 208.7 ミリ秒になりました
読み取りパフォーマンスを回復する唯一の方法は、行を完全に削除することです。他の行への書き込みと読み取りは依然として高速です。
この読み取り速度の低下はなぜ起こるのでしょうか? そして、どのように修正するのですか?