Doris 3.1 存算分离 部分列更新

Viewed 48
  1. 部分列更新是如何知道要更新的key是否已经存在呢。读的元数据?如果key在冷数据,会把冷数据那一行读出来?
  2. 如果更新的key不存在,新增行,还会有写放大吗?
  3. 开启行存感觉是天坑,写入耗时翻倍,存储翻好几倍。
1 Answers
  1. 会通过存量数据上的主键索引查key是否存在,如果查到了会把那一行数据中需要补齐的列数据读出来,如果有行存,只用从行存列读一次,如果需要的数据不在本地cache中,会从远端对象存储读。
  2. 如果更新的key不存在,新增行,会有读放大(会在主键索引里查一次)和写放大(需要把剩下的列用默认值或null填充形成完整的一行)。
  3. 开启行存后会有写入IO和存储成本增加。存储成本和数据特征能相关。