为什么一个事务需要start_ts和commit_ts两个时间戳呢?

commit_ts 是用于并发处理,比较哪个提交的数据会更加的新

start_ts 是用于读取某个时刻的数据,按照 MVCC 的理解,每个数据在不同的时间点会是不同的,所以必须指定某个版本…

建议你去读一下 tidb 事务相关的内容
https://docs.pingcap.com/zh/tidb/stable/transaction-overview