2016-04-22 6 views
0

同じレコード(または少数の値)を読み続けると、少なくとも数十万回の読み込みスループットを達成できるcassandraクライアントコードをユーザーに指摘できますか?レコードの)何度も何度も?私はrow_cache_size_in_mbが頻繁に使用されるレコードをメモリにキャッシュすると思われますが、それを10MBと言うように設定することで違いはないようです。row_cache最適化による高い読み取りスループットを持つCassandraクライアントコード

私はもちろんcassandra-stressを試しましたが、1KBのレコードで最大の読み取りスループットは(-col size=UNIFORM\(1000..1000\))〜15K/sです。

上記の数値が小さいと、小さなワーキングセットサイズで、少なくとも100万回の読み込みが可能なメモリ内ハッシュマップベースのキャッシュを簡単に書き込むことができます。どのようにして私は自動的にこれを行うのですか?あるいは、小さなワーキングセットのサイズであっても、メモリ内のマップに近いパフォーマンスを達成するはずがありませんか?

答えて

0

row_cache、counter_cache、およびkey_cacheをすべて有効な値に設定すると、「top」を使用してcassandraがディスクI/Oをまったく実行しないことを確認できます。 3つすべてがディスクの動作を保証するために必要なように見えます。しかし、ディスクI/Oがゼロであるにもかかわらず、スループットは1レコードを何度も何度も読み込んだとしても、< 20K/sです。これは、操作が完全にメモリ内であっても(つまり、ネイティブのハッシュマップのパフォーマンスと競合するように設計されていなくても)、cassandraが直列化と逆シリアル化のコストを負担することを(おそらく私のコメントでも指摘している)したがって、小さな作業セットの作業負荷に対してネイティブのハッシュマップ速度を取得し、マップが大きくなるとディスクに展開する場合は、独自のキャッシュをcassandra(または他のキー値ストアのようなもの)の上に書く必要がありますモンゴ、レディスなど)。

シンプルなget/putの小さな作業セットのワークロードでは、recandがcassandra、mongo、およびredisの中で最も速いことも確認しましたが、赤字さえも35K/sの読み取りスループット意図的にポインタを返すネイティブハッシュマップのパフォーマンスには至っておらず、200万/ s以上で快適に動作することができます)。

+0

ありがとうございます。あなたが言ったように、Cassandraのような完全なデータベースをスキーマに持たせると、メモリ内のパフォーマンスがネイティブのHashMapよりも遅くなることは明らかです。その理由は、セル/デザイナーだけでなく、Cassandraが結果を列/行にカプセル化するために余分なオブジェクトを作成するためです。この発言は他のNoSQLソリューションにも当てはまります – doanduyhai

0

同じレコード(または少数のレコード)を何度も何度も読み続けると、少なくとも数十万回の読み取りスループットを達成できるcassandraクライアントコードを私に指摘できますか?

このシナリオのためのいくつかのソリューションは、

ひとつのアイデアは、あなたがすべての利益を失うので、キャッシュからパーティション全体を無効にする行キャッシュを使用しますが、注意してください、任意の更新は/単一の列に削除することがありますされています。行キャッシュの最適な使用法は、小さなデータセット用であり、頻繁に読み込まれますが、ほとんど変更されません。

あなたのcassandra-stressのシナリオで同じパーティションに何度も何度も更新や書き込みを行うことはありませんか?

+0

ストレスツールは、別の第1段階でのみ書き込みを行い、次の段階で読み込みを行います。 2つの段階は、順次実行される別々のプロセスです。 – Eva

+0

私は基本的にそれらを実行する方法です:tools/bin/cassandra-stress -n write 10000; tools/bin/cassandra-stress -n read 10000。私は時には、さまざまな要求サイズのベンチマークに他のオプションを使用します。私は10と100MBの行キャッシュサイズを試しましたが、役に立たなかった。 – Eva

+0

私の気持ちは、10,000レコードの読み取りは、cassandra-stressツールで一度だけ実行されるため、キャッシュからあまりにも多くの利益を得ることはできません。実際に、最初に行にアクセスすると、ディスクからキャッシュにロードされますが、それ以降は同じ行を読み取らなければ、かなり無駄になります。私は10 000行を書き始めた後、10 000行を複数回(10回)読み込んでキャッシングから利益を得、元のキャッシュサイズ(100Mb)を大きくすることでキャンドアンドリアを実行することをお勧めします。どのバージョンのCassandraを使用していますか? – doanduyhai

関連する問題