我将 cassandra 表定义为:
CREATE TABLE db.table (
value text,
time timestamp,
sid text,
PRIMARY KEY (sid, time)
) WITH CLUSTERING ORDER BY (time ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
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';
Run Code Online (Sandbox Code Playgroud)
表很大,这里是数据文件:
root@server:/home# ls -l /var/lib/cassandra/data/db/table/*-Data.db -h
-rw-r--r-- 1 cassandra cassandra 8.7G Aug 16 00:14 /var/lib/cassandra/data/db/table/db-table-ka-200785-Data.db
-rw-r--r-- 1 cassandra cassandra 2.2G Nov 5 21:28 /var/lib/cassandra/data/db/table/db-table-ka-208079-Data.db
-rw-r--r-- 1 cassandra cassandra 20G Nov 20 20:55 /var/lib/cassandra/data/db/table/db-table-ka-208702-Data.db
-rw-r--r-- 1 cassandra cassandra 18G Dec 17 17:31 /var/lib/cassandra/data/db/table/db-table-ka-210089-Data.db
-rw-r--r-- 1 cassandra cassandra 455M Dec 18 14:15 /var/lib/cassandra/data/db/table/db-table-ka-210153-Data.db
-rw-r--r-- 1 cassandra cassandra 4.4G Dec 27 09:27 /var/lib/cassandra/data/db/table/db-table-ka-210477-Data.db
-rw-r--r-- 1 cassandra cassandra 3.9G Jan 7 14:50 /var/lib/cassandra/data/db/table/db-table-ka-210834-Data.db
-rw-r--r-- 1 cassandra cassandra 4.1G Jan 16 04:47 /var/lib/cassandra/data/db/table/db-table-ka-211203-Data.db
-rw-r--r-- 1 cassandra cassandra 997M Jan 19 08:56 /var/lib/cassandra/data/db/table/db-table-ka-211292-Data.db
-rw-r--r-- 1 cassandra cassandra 1.1G Jan 20 23:24 /var/lib/cassandra/data/db/table/db-table-ka-211389-Data.db
-rw-r--r-- 1 cassandra cassandra 1.1G Jan 22 00:03 /var/lib/cassandra/data/db/table/db-table-ka-211479-Data.db
-rw-r--r-- 1 cassandra cassandra 285M Jan 22 11:33 /var/lib/cassandra/data/db/table/db-table-ka-211495-Data.db
-rw-r--r-- 1 cassandra cassandra 51M Jan 22 12:16 /var/lib/cassandra/data/db/table/db-table-ka-211500-Data.db
-rw-r--r-- 1 cassandra cassandra 16M Jan 22 12:31 /var/lib/cassandra/data/db/table/db-table-ka-211501-Data.db
-rw-r--r-- 1 cassandra cassandra 16M Jan 22 12:46 /var/lib/cassandra/data/db/table/db-table-ka-211502-Data.db
Run Code Online (Sandbox Code Playgroud)
表是用户将一些指标存储为时间序列。插入的每一行都设置了一个月的 TTL。
我在这里注意到的第一件事是存在比 TTL 早得多的 sstable,可能是因为时间序列数据的压缩策略不是最优的。现在更改表并将压缩策略更改为 DTCS 是否安全?对于一个月的 TTL,哪些压缩子属性应该是最好的?
由于所有数据都使用相同的 TTL 插入,我想最好在 table 上设置默认 TTL。根据 Datastax:
表上的默认 TTL 是另一个自然适合时间序列数据的方法。它允许您避免仅出于删除逻辑删除和/或 TTLed 单元格的目的而运行的成本高昂的压缩。实际上,它允许压缩逻辑更有效,当最新的单元时间戳足够旧以指示所有 sstable 已超过其保质期时,只需删除 sstable。此数据在写入时保存在表元数据中,便于检查。当默认 TTL 与时间序列工作负载结合使用时,您可以进一步减少与数据密度相关的压缩负载。当与 DTCS 结合使用时,您几乎可以消除与系统压实侧高密度相关的几何载荷。
现在这样做安全吗?
聚类顺序的方向对于获取最后一个值不是最佳的。
select * from table where sid='XXX' limit 1
给出第一个条目,而不是最后一个。此时是否可以将聚类顺序更改为 DESC?
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |