perf(wallet): 避免同钱包预留占满数据库池

千并发验收的 pg_stat_activity 显示大量事务锁等待集中在同一验收钱包,等待行锁的请求持续占用 API Pool,导致 canceled acquire 和排队增长。

在每个 Store 内增加 256 槽钱包预留分片锁,同一钱包先在进程内串行再申请数据库连接;跨 API 节点仍由 PostgreSQL 行锁保证余额与幂等正确性。

验证:Go 全量测试、临时 PostgreSQL 并发账务集成测试、gofmt 和 git diff --check 通过。
This commit is contained in:
2026-07-31 03:55:22 +08:00
parent 36546bd5c4
commit add80f781e
3 changed files with 47 additions and 1 deletions
+2 -1
View File
@@ -21,7 +21,8 @@ import (
)
type Store struct {
pool *pgxpool.Pool
pool *pgxpool.Pool
walletReservationLocks walletReservationLockSet
}
const (