2017-04-04 4 views
2

Cassandra 2.1.17に問題があります。私は約40kの "行"を持つテーブルを持っています。私が問題を抱えている1つのパーティションには、おそらく約5k個のエントリがあります。カサンドラクエリのタイムアウトが小さいデータセットで

表は以下のとおりです。

create table billing (
    accountid uuid, 
    date timeuuid, 
    credit double, 
    debit double, 
    type text, 
    primary key (accountid,date) 
) with clustering order by (date desc) 

だから挿入し、このテーブルからの削除がたくさんあります。

私の問題は、どういうわけか、パーティションからある特定のポイントを過ぎてデータを選択できなくなったために、何とか壊れているように思えるということです。

cqlshから、私はこのようなsoemthingを実行できます。

SELECT accoutid、date、credit、debit、type FROM請求先accountid = XXXXX-xxxx-xxxx-xxxxx ... AND日付< 3d466d80-189c-11e7-8a57-f33cbced2fc5制限2;

最初に私は10000の選択制限をしました。それは、それらを通ってページングする約5000行まで動作し、最後にタイムアウトエラーを与えます。

次に、最後のtimeuuidから2番目の値を使用して、制限2を選択すると、制限1が機能しなくなります。

最後のtimeuuidを<として使用し、1に制限すると失敗します。

私はここで何ができるのか探していますが、私は何が間違っているのか分かりませんし、何が起こったのかをどのように修正/診断できるかはわかりません。

私は修理に疲れており、圧縮を強制しています。それでも問題はあるようです。

ありがとうございました。

+0

ご回答いただきありがとうございます。私はこのリンクを、私が、このテーブルをcassandraといくつかのオプションの中でどのように使用しているかについて詳しく説明しています。一般的に私はあなたの誰もが墓石が問題だと思います。それが事実でない場合、コメントを返そうとします。ここに私が見つけたリンクがあります。 https://lostechies.com/ryansvihla/2014/10/20/domain-modeling-around-deletes-or-using-cassandra-as-a-queue-even-when-you-know-better/ – zooppoop

答えて

2

あなたが選択したときにたくさんの墓石を打っているように見えます。事は彼らがそこにいる間、カンドンドラはまだそれらを乗り越えなければならない。多くの要因があります。たとえば、挿入文を含むttl、削除が多い、ヌルを挿入するなどです。

テーブルにgc_grace_secondsを調整して修復を頻繁に行う必要があります。しかし、注意して、それを低くするようにしないでください(1回の修理はこの時間の前に終わらなければなりません)。

すべてうまくここで説明しています: https://opencredo.com/cassandra-tombstones-common-issues/

3

私はあなたがこのパーティションであまりにも多くの墓石を得たと思います。

墓石とは何ですか?レコードはカサンドラは、「墓石」と呼ばれる特殊な値を作成し、削除されたことを覚えておくことが

。墓石には他の値と同じようにTTLがありますが、他の値ほど簡単には圧縮されません。カサンドラはデータの再適用のような矛盾を避けるためにそれを長くしています。墓石を見てどのように

nodetoolのcfstatsは、問題を解決する方法

あなたにあたり平均スライス上のあなたが持っているどのように多くの墓石のアイデアを提供しますか?

墓石を保存する期間は、gc_grace_secondsです。この問題を解決するには、それを減らしてからメジャーコンパクションを実行する必要があります。

4
  1. テーブルで手動圧縮を実行して開始してください。
  2. cadandra configのread_request_timeout_in_msパラメータを増やすことができます。
  3. 多くの削除や更新がある場合は、レベル別圧縮戦略に移行することを検討してください。
+0

ありがとうあなたはアドバイスのために役立つかどうかを試してみるでしょう。はい、テーブルに多くの削除があります。私は、このようなテーブルのために別の圧縮スケジュールや他のものを持つようにこのテーブルを設定する方法があるのだろうかと思います。現在、テーブルはキューのように使用されています。 – zooppoop

+0

STCSとLCSの両方で再生できるパラメーターがあります。まず、STCSのコンパクショントリガーまたはLCSの小さなテーブルサイズのしきい値を下げることから始めます。 – nevsv

+0

LeveldCompactionStrategyはこのユースケースの方が優れていますが、あまりにも多くの墓石(100,000以上)があると助けになりません – DineMartine

関連する問題