Review 发现:SELECT 在事务外读 rows,事务内 UPDATE 时若并发编辑了该 post, 会用旧 content_md 覆盖新内容(非可重复读)。改为 SELECT 移入事务并加 FOR UPDATE,锁住待处理行直到 UPDATE 完成,消除丢失更新。 权衡:FOR UPDATE 锁最多 500 行直到事务结束,阻塞并发编辑;rebuild 是 admin 运维操作,可接受。
Review 发现:SELECT 在事务外读 rows,事务内 UPDATE 时若并发编辑了该 post, 会用旧 content_md 覆盖新内容(非可重复读)。改为 SELECT 移入事务并加 FOR UPDATE,锁住待处理行直到 UPDATE 完成,消除丢失更新。 权衡:FOR UPDATE 锁最多 500 行直到事务结束,阻塞并发编辑;rebuild 是 admin 运维操作,可接受。