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

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

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コマンドを使用して、テーブル・プロパティを表示します。

cqlsh> 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 dclocal_read_repair_chance = 0.1
  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 read_repair_chance = 0.0
  AND speculative_retry = '99.0PERCENTILE';
memtable_flush_period_in_ms=0の場合、memtableは以下の場合にフラッシュされます。
  • フラッシュのしきい値に達した場合
  • 停止時
  • nodetool flushの実行時
  • commitlogsが一杯になったとき

テーブル・サイズの制限

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

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/dse.yaml

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/dse/conf/dse.yaml

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

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