gpt4 book ai didi

performance - cassandra 使用 Collection 读取性能

转载 作者:行者123 更新时间:2023-12-04 21:39:14 25 4
gpt4 key购买 nike

我在 cassandra 中定义了以下列族

CREATE TABLE metric (
period int,
rollup int,
tenant text,
path text,
time bigint,
data list<double>,
PRIMARY KEY ((tenant, period, rollup, path), time)
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='NONE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};

数据列表的大小会影响 cassandra 的读取性能吗?如果是,我们如何衡量它..?

问题是从 cassandra 查询 Data-Set1 以获取给定路径/周期/汇总组合的 8640 行(其中每行的数据列表中的元素数量为 90)所花费的时间超过查询所需的时间数据集 2 是 8640 行数据(其中每行数据列表中的元素数量为 10)。

此外,如果我对 10 个用户同时访问 Data-Set1 运行性能测试,那么我开始在后端看到 cassandra 超时,并且它在垃圾收集中花费了大量时间,但是当我通过查询执行相同操作时,情况不会发生数据集2。

所以我得出的结论是数据列表中的元素数量会影响性能。

您是否在 cassandra 堆栈中看到类似的性能问题....?

最佳答案

我不认为一个系列中的 90 件元素会有那么大的交易,但在你的情况下,我想是的。问题在于,当您查询集合列时,Cassandra 不能只返回集合的一部分。它必须返回整个列(集合)。那个手术不是免费的,但我认为 90 次 double 不是什么大问题。

要尝试的一件事是打开跟踪。这应该让您了解 Cassandra 在您运行查询时正在做什么。

aploetz@cqlsh:stackoverflow> tracing on;

通常,打开追踪功能会导致您进入杯子。

it spends a lot of time in Garbage collection



您是否使用任何特殊的 JVM 设置?每个节点有多少内存?中断正常操作的 GC 表明(对我而言)您的 JVM 堆设置可能存在问题。 DataStax 文档位于 Tuning Java Resources表示您应该根据节点的 RAM 使用以下准则来调整堆大小:
System Memory       Heap Size

Less than 2GB 1/2 of system memory
2GB to 4GB 1GB
Greater than 4GB 1/4 system memory, but not more than 8GB

关于performance - cassandra 使用 Collection 读取性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30902639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com