SuperAPI AI 工具集

designing-application-transactions

设计与创作

查看项目

更新于 10-15 20:13

技能介绍

用途:指导在 CockroachDB 上构建正确、高性能、可恢复的应用事务模式,覆盖从事务边界划分、重试逻辑到连接池与可观测性的完整流程。SQL 语法、模式设计与查询优化参见 cockroachdb-sql;在竞争下对事务写法做基准测试参见 benchmarking-transaction-patterns。

主要能力与要点:保持事务短小,不在事务内做远程调用、循环或昂贵计算;单条语句用隐式事务,多条语句用显式 BEGIN/COMMIT 并处理重试;只读事务标记 SET TRANSACTION READ ONLY;用原子 SQL、约束、UPSERT、CTE 替代读改写循环;热点行选择性使用 SELECT ... FOR UPDATE;用集合操作替代逐行循环;非关键查询用 AS OF SYSTEM TIME 跟随者读;用键集分页替代 OFFSET/LIMIT;使用预处理语句与显式列投影;设计分散负载的键与索引;配置连接池(如 HikariCP);业务编排与数据库事务分离;注意约 16MB 事务负载上限;用会话护栏限制读写行数。

重试与错误:CockroachDB 默认 SERIALIZABLE,40001 需带退避与抖动重试整个工作单元;40003 为不确定提交,勿盲目重放非幂等操作;08xx/57xx 为网络或服务端瞬时问题;23xxx 通常不应重试。cockroach_restart 保存点协议受支持,普通保存点不能作为重试机制。

适用场景:事务边界设计、客户端重试、并发控制选择、连接池配置、分页、报表与分析读、并发测试与监控。

限制:需熟悉 SERIALIZABLE 隔离级别与 ACID 语义,并具备应用源码与 CockroachDB 连接;键集分页不适合任意跳页;过度使用悲观锁可能引入等待链或死锁。具体收费、价格与平台信息暂未提供。