2017-12-14 8 views
3

CassandraでTTLを使用した複数列のデータオーバーヘッドはどのように機能しますか?カサンドラ(<a href="https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html" rel="nofollow noreferrer" title="here">here</a>)のデータを期限切れのドキュメントにおいて

期限切れデータ(TTLおよび満了時間を記録する)標準データと比較して、メモリ内、ディスク上の8バイトの追加オーバーヘッドを有することが記載されています。

テーブルレベルでTTL(生存時間)を設定すると、各データ入力に対して、メモリに8バイト、ディスクに列の数を掛けたオーバーヘッドがあることを意味します、またはそれは列の数から独立していますか?

たとえば、データが1列以上に挿入され、実際のデータエントリが挿入されているにもかかわらず、TTLが1つの列には定義されていないとしても、hereの例では、 - 列ベース。

答えて

2

いいえ、もうこれ以上はありません。そのドキュメントは古く、関連する3.0以前のものです。

現在、パーティション内のすべての列またはパーティション内の行が、挿入時に同じTTLセットを持っている場合は、そのために一度だけ設定されます。それらが格納されていれば、sstables minTimestampから8バイトではなく、符号なし変数intとしてエンコードされたデルタで書き込まれます。

2

カサンドラdocumentationによると、CREATE TABLE部に、それは言う:ゼロが無効 ある秒で

DEFAULT_TIME_TO_LIVE

TTL(生存時間)、。指定すると、テーブルの各列の有効期間(TTL) マーカーに値が設定されます。デフォルト値は0です。テーブル TTLを超えた場合は、テーブルにトゥーンストーンが表示されます。

テーブルのTTLを定義すると、各列(プライマリキーを除く)に対して有効であることを意味します。

+0

これは、各ローに対して、8バイト以上のオーバーヘッドにカラム数を乗じた値になることを意味します。 (その考えの後に) –

+0

はい、ただし、主キーを構成する列は例外です。 –

関連する問題

 関連する問題