snowy-yang
9a34517454
perf: get_conn 每连接固定开销 1.6ms → 0.5ms(-70%)
为什么:同步层每次数据库操作都新建连接并执行 mkdir + PRAGMA
journal_mode=WAL。实测拆解(各 100 次中位数):
mkdir(exist_ok) 190us
sqlite3.connect 435us
PRAGMA WAL(新连接首语句) ~1000us ← 大头
get_conn 合计 1641us → 501us
登录路径走同步层 4 次查询(身份解析/验证/位置/日志),每次请求
固定省 ~4.6ms;下载任务的 ledger/日志调用同样受益。
改动(对齐 core/db.py 既有模式——异步层早已做过同款优化并记录过
「并发 PRAGMA 争排他锁报 database is locked」的实测坑,同步层漏同步):
- _WAL_READY 按路径缓存:journal_mode 持久化在库文件头,设一次即可;
_WAL_SETUP_LOCK 串行化首连切换(读路径不持 _DB_LOCK)
- mkdir 移出 happy path:connect 失败才兜底补建(用 DB_PATH.parent,
monkeypatch 场景下与 DATA_DIR 可能不同)
- exists() 检查在 connect 之前(connect 会创建空文件,之后恒真),
覆盖「删库重建后新文件回退 delete 模式」的边界
新增 tests/test_db_conn.py 6 例:WAL 首连生效、后续连接零 PRAGMA
(set_trace_callback 实证)、换路径重设、目录缺失自动建、删库重建
恢复 WAL、8 线程并发首连无报错。
门禁:ruff 全过 · pyright 0/0 · pytest 382 passed(375→382)。
2026-09-27 11:32:03 +08:00
..
2026-09-27 09:19:23 +08:00
2026-09-26 14:37:58 +08:00
2026-09-26 11:52:06 +08:00
2026-09-26 13:54:44 +08:00
2026-09-26 14:37:58 +08:00
2026-09-27 09:36:31 +08:00
2026-09-26 14:37:58 +08:00
2026-09-27 11:32:03 +08:00
2026-09-26 11:52:06 +08:00
2026-09-27 07:32:05 +08:00
2026-09-26 14:37:58 +08:00
2026-09-27 11:11:56 +08:00
2026-09-27 08:05:44 +08:00
2026-09-26 14:37:58 +08:00
2026-09-26 11:52:06 +08:00
2026-09-27 10:13:36 +08:00
2026-09-26 01:12:54 +08:00
2026-09-26 19:04:36 +08:00
2026-09-27 10:53:48 +08:00
2026-09-27 07:45:49 +08:00
2026-09-27 09:30:52 +08:00
2026-09-27 10:05:20 +08:00
2026-09-26 14:37:58 +08:00
2026-09-26 00:34:11 +08:00
2026-09-27 11:00:50 +08:00
2026-09-26 14:37:58 +08:00
2026-09-27 09:42:07 +08:00
2026-09-26 18:53:47 +08:00
2026-09-27 09:03:05 +08:00
2026-09-27 07:41:16 +08:00
2026-09-26 11:52:06 +08:00
2026-09-26 13:54:44 +08:00
2026-09-26 18:53:40 +08:00
2026-09-26 19:25:06 +08:00