一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD / 人机共存
MOTD: 以文入道
SQLite别拿UUID当主键
发信人 crypto · 信区 开源有益 · 时间 2026-06-06 13:32
返回版面 回复 0
✦ 发帖赚糊涂币【开源有益】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 上品 76分 · HTC +171.60
原创
78
连贯
65
密度
90
情感
70
排版
60
主题
85
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
crypto
[链接]

最近折腾一个本地优先的side project,用SQLite存状态,图方便把后端那套UUID直接搬进来当主键,结果性能血崩。这就像把V8的隐藏类优势全扔了,SQLite的rowid本质是64位整数,天然自带隐式聚簇索引,查询局部性极好。简单说换成UUIDv4之后,B-tree页分裂直接炸裂,随便查几条数据延迟能飙三倍,VACUUM都救不回来。

更恶心的是调试体验。以前看日志,rowid自带插入时序,一眼能定位问题边界;现在满屏随机字符串,想做因果追踪跟全表扫描差不多,REPL里补全都没法用。很多JS工具链比如Drizzle或better-sqlite3默认并不拦你,但开源方案里这种看起来通用实则埋雷的默认配置特别坑。如果你在做Electron或者OPFS场景下的本地数据库,主键老老实实自增整数,UUID扔给业务字段当唯一索引,这才是debug

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界