DSE In-Memory(DSEインメモリー)を使用するテーブルの作成または変更

CQLディレクティブを使用して、DSE In-Memory(DSEインメモリー)を使用するテーブルを作成または変更します。

dse.yaml

dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/dse.yaml
tarボール・インストール installation_location/resources/dse/conf/dse.yaml

CQLディレクティブを使用して、DSE In-Memory(DSEインメモリー)を使用するテーブルを作成または変更し、dse.yamlを使用して、テーブルのサイズを制限します。

DSE In-Memory(DSEインメモリー)を使用するテーブルの作成

DSE In-Memory(DSEインメモリー)を使用するテーブルを作成するには、CQLディレクティブをCREATE TABLE文に追加します。文でコンパクション・ディレクティブを使用して、MemoryOnlyStrategyクラスを指定し、キーと行のキャッシュを無効にします。

CREATE TABLE customers (
  uid text,
  fname text,
  lname text,
  PRIMARY KEY (uid) 
) WITH compaction= { 'class': 'MemoryOnlyStrategy' }
     AND caching = {'keys':'NONE', 'rows_per_partition':'NONE'};

DSE In-Memory(DSEインメモリー)を使用する既存のテーブルの変更

ALTER TABLE文を使用して、インメモリーを使用するように従来のテーブルを変更します。または、インメモリー・テーブルを従来のテーブルに変更します。たとえば、employeeというテーブルにDESCRIBEコマンドを使用します。DESCRIBEコマンドの出力に次のような行が含まれていないため、employeeが従来のテーブルであることを確認します。

compaction={'class': 'MemoryOnlyStrategy'} >

DSE In-Memory(DSEインメモリー)を使用するようにemployeeテーブルを変更します。

ALTER TABLE employee WITH compaction= { 'class': 'MemoryOnlyStrategy' }
  AND caching = {'keys':'NONE', 'rows_per_partition':'NONE'};
テーブルを変更したら、既存のSSTableを再度書き込みます。
nodetool upgradesstables -a <keyspacename> <tablename>

同時にアップグレードするSSTableの数を設定するには、--jobsオプションを使用します。デフォルト設定は2です。この設定にすると、クラスターへの影響を最小限に抑えられます。利用可能なすべてのコンパクション・スレッドを使用するには、0に設定します。

cqlshでDESCRIBE TABLEコマンドを使用して、テーブル・プロパティを表示します。

DESCRIBE TABLE employee;
次の出力はテーブルがDSE In-Memory(DSEインメモリー)を使用していることを示しています。
CREATE TABLE employee (
  uid text PRIMARY KEY,
  fname text,
  lname text
) WITH bloom_filter_fp_chance = 0.01
  AND caching = '{"keys":"NONE", "rows_per_partition":"NONE"}'
  AND comment = ''
  AND compaction = {'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.MemoryOnlyStrategy', 
'max_threshold': '32'}
  AND default_time_to_live = 0
  AND gc_grace_seconds = 864000
  AND max_index_interval = 2048
  AND memtable_flush_period_in_ms = 0
  AND min_index_interval = 128
  AND nodesync = {'enabled' : 'true'}
  AND speculative_retry = '99.0PERCENTILE';
memtable_flush_period_in_ms=0の場合、memtableは以下の場合にフラッシュされます。
  • フラッシュのしきい値に達した場合
  • 停止時
  • nodetool flushの実行時
  • commitlogsが一杯になったとき

テーブル・サイズの制限

max_memory_to_lock_fraction構成オプションまたはmax_memory_to_lock_mb構成オプションをdse.yaml ファイルで使用すると、すべてのインメモリー・テーブルで使用するシステム・メモリーの量を指定できます。
max_memory_to_lock_fraction システム・メモリーに対する割合を指定します。デフォルト値の0.20は、システム・メモリーの最大20%を使用することを指定します。
max_memory_to_lock_mb メモリーの最大容量をMBで指定します。

テーブルでのキャッシングの無効化

DataStaxでは、DSE In-Memory(DSEインメモリー)オプションを使用するよう構成されたテーブルでキャッシングを無効にすることを推奨しています。キャッシングが無効になっていない場合、警告がログに書き込まれます。テーブル・キャッシング・プロパティを以下のように設定して、キャッシング・タイプを両方とも無効にします。
ALTER TABLE customers WITH caching = {'keys':'NONE', 
  'rows_per_partition':'NONE'};