N2M*_*N2M 4 cassandra datastax-enterprise datastax
我一直在使用cassandra-stress工具来评估我的cassandra集群已有一段时间了.
我的问题是我无法理解为我的特定用例生成的结果.
我的架构看起来像这样:
CREATE TABLE Table_test(
ID uuid,
Time timestamp,
Value double,
Date timestamp,
PRIMARY KEY ((ID,Date), Time)
) WITH COMPACT STORAGE;
Run Code Online (Sandbox Code Playgroud)
我已经解析了一个自定义YAML文件和使用的参数信息n=10000
,threads=100
其余的都是默认选项(cl=one
,mode=native cql3
,等).Cassandra集群是一个3节点的CentOS VM设置.
自定义yaml文件的一些细节如下:
insert:
partitions: fixed(100)
select: fixed(1)/2
batchtype: UNLOGGED
columnspecs:
-name: Time
size: fixed(1000)
-name: ID
size: uniform(1..100)
-name: Date
size: uniform(1..10)
-name: Value
size: uniform(-100..100)
Run Code Online (Sandbox Code Playgroud)
我到目前为止的观察如下:
n=10000
和时间:fixed(1000)
,插入的行数为1000万.(10000*1000 = 10000000)10000(i.e n)
,其中一次取100个分区(这意味着100*1000 = 100000个键值对),其中一次处理50000个键值对.(这是因为select: fixed(1)/2
~50%)输出消息也确认相同:
使用[100..100]分区和[50000..50000]行(分区中总行数为[100000..100000])生成批次
对于具有上述相同配置的连续运行,我得到的结果如下:
Run Total_ops Op_rate Partition_rate Row_Rate Time
1 56 19 1885 943246 3.0
2 46 46 4648 2325498 1.0
3 27 30 2982 1489870 0.9
4 59 19 1932 966034 3.1
5 100 17 1730 865182 5.8
Run Code Online (Sandbox Code Playgroud)
现在我需要了解的内容如下:
提前致谢.
行速率是您已插入数据库的CQL行数.对于你的表,CQL行是一个类似的元组(ID uuid, Time timestamp, Value double, Date timestamp)
.
该分区率是分区C*的数量必须构建.分区是在Cassandra中保存和排序数据的数据结构,具有相同分区键的数据最终位于同一节点上.此分区速率等于在时间窗口中插入的分区键中的唯一值的数量.对于您的表,这将是唯一的值(ID,Date)
Op Rate是必须完成的实际CQL操作的数量.从您的设置中,它运行未记录的批次以插入数据.每个插入包含大约100个分区(ID和日期的唯一组合),这就是OP Rate*100~ = 分区率的原因
总OP应包括所有操作,读写.因此,如果您有任何读取操作,那么也将包括在内.
我建议您更改批量大小以匹配您的工作负载,或根据您的实际数据库使用情况将其保持为1.这应该提供更现实的方案.此外,运行时间远远超过100次操作非常重要,以便真正了解系统的功能.当数据集的大小增加超过机器中的RAM量时,会出现一些最大的困难.