Cassandra Insert和Update的性能差异



Cassandra中通过更新和插入创建的行之间存在差异,它会影响ttl和具有"all nulls"非键列的行的行为。

除了这种行为,在创建/删除/选择此类行的过程中,这是否会对性能产生任何影响?

链接到描述此行为的JIRA:

https://issues.apache.org/jira/browse/CASSANDRA-8430

1。"执行计划":执行相同查询(按主键选择),source_elaped列:

创建为插入:

22661768167233023324142216233833393335194166。平均:2803

创建为更新:

16213498476936803905178142153764374734601987。平均:3312

也许看起来更新有点慢,但这并不是真正一致的,我相信随着执行次数的增加,它们应该是相同的。

2.存储:

创建为插入的行:

[user1]@184行[info=[ts=14866381377507000 ttl=3600,let=1486371737]:2017-01-01 14:00Z,bla,5,2|[blu=77777 ts=14863681377507000 ttl=3600 ldt=1486371737],[ble=0 ts=14866368137507000 ttl=148637173.7]

作为更新创建的行:

[user30]@122行[info=[ts=9223372036854775808]:2017-01-01 14:00Z,bla,5,2|[blu=777 ts=1486638139142000 ttl=3600 ldt=1486371739],[ble=1 ts=14866368139142000 ttl=3600 ldt=148637173.9]

我假设sstabledump确实代表了保存在文件中的数据。这里唯一的区别是,创建为插入的行是用行级别的ttl和let列生成的(ts设置为创建的时间)-这就是为什么具有所有null非键列的行可以选择创建为插入,而不能选择创建为更新。因此,使用insert创建的行将多使用几个字节的存储空间,这就是这里的全部区别。

3.墓碑:

创建为插入:

[user1]@48行[info=[ts=9223372036854775808]:2017-01-01 14:00Z,bla,5,2|[blu=ts=14863680407044000 ldt=1486368406],[ble=ts=14836840044000 ldt=1486368406]

创建为更新:

[user30]@0行[info=[ts=9223372036854775808]:2017-01-01 14:00Z,bla,5,2|[blu=ts=1486364004344000 ldt=1486368403],[ble=ts=1483684004444000 ldt=1486368403]

正如预期的那样,两个创建的tombstone看起来完全相同。

摘要:

根据我的观察,两种类型的行创建在性能上没有真正的区别。我很乐意在这里看到其他测试/观察结果/源代码评论。

最新更新