由更新和插入创建的行在 Cassandra 中存在差异,它会影响 ttl 和具有“全空”非键列的行的行为。
除了这种行为,这对创建/删除/选择此类行期间的性能有任何影响吗?
链接到描述此行为的 JIRA:
1.“执行计划”:执行相同的查询(按主键选择),source_elapsed列:
创建为插入:
2266、1768、1672、3302、3324、1422、1623、3833、3933、3519、4166。平均:2803
创建为更新:
1621、3498、4769、3680、3905、1781、4215、3764、3747、3460、1987。平均:3312
也许看起来更新有点慢,但这并不是真正一致的,我相信执行次数越多,它们应该是相同的。
2. 存储:
创建为插入的行:
[user1]@184行[info=[ts=1486368137507000 ttl=3600, let=1486371737] ] : 2017-01-01 14:00Z, bla, 5,2 | [蓝光=77777 ts=1486368137507000 ttl=3600 ldt=1486371737],[ble=0 ts=1486368137507000 ttl=3600 ldt=1486371717]
行创建为更新:
[user30]@122行[info=[ts=-9223372036854775808]]:2017-01-01 14:00Z, bla, 5,2 | [蓝光=777 ts=1486368139142000 ttl=3600 ldt=1486371739], [ble=1 ts=1486368139142000 ttl=3600 ldt=1486371739]
我假设 sstabledump 确实代表了保存在文件中的数据。这里唯一的区别是,作为插入创建的行是使用 ttl 生成的,并在行级别上让列(并且 ts 设置为创建的时间)-这是因为可以使用 create as insert 和选择具有所有空非键列的行不可选择创建为更新。因此,使用插入创建的行将多使用几个字节的存储空间,这就是这里的全部区别。
3.墓碑:
创建为插入:
[user1]@48 行[info=[ts=-9223372036854775808]]: 2017-01-01 14:00Z, bla, 5,2 | [蓝光= ts=1486368407044000 ldt=1486368406], [ble= ts=1486368407044000 ldt=1486368406]
创建为更新:
[user30]@0 行[info=[ts=-9223372036854775808]]: 2017-01-01 14:00Z, bla, 5,2 | [蓝光= ts=1486368403444000 ldt=1486368403], [ble= ts=1486368403444000 ldt=1486368403]
正如预期的那样,两个创建的墓碑看起来完全相同。
概括:
根据我的观察,两种类型的行创建之间的性能没有真正的区别。我很高兴在这里看到其他测试/观察/源代码审查。
归档时间: |
|
查看次数: |
2378 次 |
最近记录: |