TiDB 长事务会带来哪些风险,生产环境该如何管控长事务?

长事务风险

  1. 占用 MVCC 版本,造成版本堆积,Region 扫描变慢,CPU、内存上涨。
  2. 锁持有时间久,容易锁冲突、死锁,阻塞业务 DML。
  3. 阻碍 GC,旧快照无法回收,存储空间膨胀。
  4. 事务未提交会占用乐观锁的事务 ID,影响全局 TSO 推进。

生产管控手段

  1. 设置 tidb_max_transaction_size、tidb_long_trx_threshold 告警阈值,监控告警长事务。
  2. 开启 tidb_gc_life_time 合理 GC 窗口,避免过大。
  3. 业务拆分大事务,拆成分批小事务;禁止业务交互式长事务。
  4. 系统变量 tidb_max_execution_time 限制 SQL 执行时长。
  5. 监控 information_schema.tidb_trx,及时发现并 kill 异常长事务。
1 个赞