2017-01-30 10 views
1

データが一連のテーブルに存在するかどうかわかりません。だから今のところ、私はそれらのテーブルすべてに対してDELETEを発行しています。そのため、CassandraではAPI呼び出しが1回で約30〜50件のDELETEが発生します。最近では、DELETEの大半が存在しないデータに対して発行されているようになっています。存在していないデータに対する何百万回のDELETEのために、カッサンドラの業績に悪影響が及ぶでしょうか?それが存在するかどうかわからないデータを削除する際に、「IF EXISTS」を使用する必要がありますか?Cassandra DELETE(IF EXISTSの有無にかかわらず)

答えて

3

IF EXISTSを使用しないで定期的な削除を発行する方が良いでしょう。この場合、コーディネーターはシリアル整合性とpaxosプロトコルを使用し始めます。これは、長い時間を要し、他のノードをバッチなどで実行します.IF NOT EXISTSは軽量トランザクションで、あなたが定期的に行う作業ではなく、1%の作業負荷で使用する必要があります。

あなたはデータをモデル化する方法と削除の仕方によって、削除するものが何であるかはまだわかりません。 )

+0

データが存在しない場合、私はまだ墓石(私の初期の懸念事項でした)を持っていますか?そうでなければ、nevsvは確認したいと思っています。 – nimblerex

+0

"存在しない場合"が存在する場合は、あなたはあなたのデータをモデル化するならば、tombonesを使うと安全です。 ...存在しない場合は、クラスター内のすべてのノードに行き、コーディネーター・ノードに大きな負荷をかけます。ワークロードの1%以下の場合にのみ存在しない場合に使用します。 –

+0

DELETEが私たちのリクエストの約55%であることをちょうどチェックしました。私たちはスキーマを再訪する予定です:)あなたのご意見ありがとうございます。 – nimblerex

0

IF EXISTSは、行が存在しない場合に失敗します。

削除は実際にパフォーマンスに影響しますが、存在しない行を削除すると何も行われませんが、この行を検索すると、そこにない列には墓石が作成されません。

関連する問題