SuperAPI AI 工具集

benchmarking-transaction-patterns

测试与质量

查看项目

更新于 10-15 20:13

技能介绍

用途:指导用户对 CockroachDB 中同一事务业务流的两种写法——显式多语句事务(BEGIN/COMMIT)与单语句 CTE 事务——进行基准测试、解释和对比,重点在争用下的性能、公平测试方法与结果解读。

主要能力:说明两种模型差异。显式模型跨多次往返保持事务打开,扩大争用窗口;CTE 模型将逻辑折叠为单条原子语句,缩短事务时长、减少重试。因 CockroachDB 默认拒绝单语句多次修改同一表(sql.multiple_modifications_of_table.enabled),CTE 用 CASE 将借贷合并为一次 UPDATE。

使用方式:准备独立测试库与表(accounts、transfers),用多行 UPSERT 播种数据;用 pgbench 以相同并发、时长和参数分别运行显式与 CTE 脚本,例如 pgbench -n -c 64 -j 8 -T 120 -f explicit_transfer.sql "postgresql://root@localhost:26257/bankbench?sslmode=disable";两次运行之间重置余额以保证公平;对比吞吐量、重试总数、p50/p95/p99、最大延迟和失败数;用 COUNT 校验转移量、cockroach node status 检查节点存活。

适用场景:争用较重、操作天然原子、应用当前跨多语句执行读-决定-写、目标是更高吞吐与更稳定尾延迟时优先 CTE;工作流无法用单条 SQL 清晰表达、可读性或分阶段业务逻辑更重要、争用低时优先显式模式。

限制与注意:CTE 减少但不消除争用;基准须在专用测试集群运行,勿用于生产;运行间重置数据,否则只能算演示而非公平对比;需验证结果可迁移到实际负载。资料给出一次高争用参考结果:吞吐 591.1 对 1,035.1 txn/s(+75.1%),总重试 2,270,977 对 0。具体环境差异未提供。