普通(非事务)SQL读取需要获取TSO吗?

【 TiDB 使用环境】线上、测试、调研
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】

【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。

普通sql 不也是事务嘛 无非是一个自动提交 一个手动提交, 都是需要获取TSO的

普通select

普通select 也是事务,需要获取tso

点查应该不需要TSO,其他需要TSO

如果类似oracle的SCN,普通select也会导致SCN增长

是否有大佬知晓呢?

TiDB 在事务开始时会获取 TSO 作为 start_ts、提交时获取 TSO 作为 commit_ts,依靠 TSO 实现事务的 MVCC,查询的mvcc,读申请1次tso.
写申请2次tso.TSO 授时服务可以保证按照递增的方式分配时间戳,任何一次申请得到的时间戳都不会重复

就是说任何一次查询都需要获取TSO,因为MVCC也依赖TSO

是的,要不怎么实现一致性

任何事务(显示 隐式)都要获取tso, 一般来说开始🈶starts,提交有coomit ts , 悲观dml还有for update ts.rc隔离级别需要每个sql都获取一个tso

rc隔离级别需要每个sql都获取一个tso,rr隔离级别呢?

和隔离级别应该没有关系,读取时事物需要获取 TSO

需要获取,mvcc