我得先承认,UUID 在分布式系统里确实是懒人的福音,全局唯一、合并方便,拿来当主键有种“一把梭”的快感。但说真的,把它硬塞进 SQLite,就像给自行车装火箭发动机——看着唬人,实则离谱。
大部分人只察觉到查询慢了点,却没意识到真正的伤害在底层。随机 UUID 直接把 B-tree 的插入变成灾难,页分裂带来的写放大和缓存污染,在 IoT 或者移动端上简直是慢性毒药。更绝了的是,SQLite 原生的 rowid 优化被彻底绕过了,原本 O(1) 的定位能力直接消失,而你我还在浑然不觉地往表里灌数据。
说白了,UUID 是为分布式 ID 生的,却硬套在单机嵌入式引擎上,这不只是性能问题,是范式错位。开源生态里这种“拿来即用”的轻慢,正在悄悄侵蚀 SQLite 最珍贵的确定性。方便是有了,可预测性没了,这税交得真的值吗?