导入大量数据后,查询报错

不读Cache是方面,可能临时文件,不应该取一个最终文件名的名字。

嗯嗯是的,当前rewrite的实现逻辑是:

write阶段:

  1. ***.dat.tmp
  2. ***.dat(tempory)

commit阶段(apply进行rewrite):

  1. read ***.dat(cache tempory)
  2. rewrite ***.dat.tmp(final)
  3. rename(***.dat and ***.dat.tmp)
  4. delete ***.dat.tmp

大佬你微信是?

还有就是,不应该在ScalarColumnIterator里重置这个use_page_cache

1赞

lxhhust350@qq.com

感谢 @motto1314 @wtai 问题原因已确定,Fix方法还在讨论

原来如此,使用了具有脏数据的索引去读数据导致了page的定位错误,读出的page进行checksum校验当然不匹配了。看来page_cache潜在很大的风险呀!怎么保证其它地方不会缓存了脏数据?

page_cache缓存的正常都是正确的,不会存在脏数据。
sr的机制,数据文件本身写完不会被改变的,正常情况都不会存在脏数据的。