数据库与缓存
主键id设计
围绕数据库主键 ID 的选型,内容从自增 ID、传统 UUID、雪花算法和 UUIDv7 四类方案展开,重点放在唯一性、顺序性、分布式适配和索引写入性能的取舍上。自增 ID 在单库单实例中简单、可读、范围查询友好,但会暴露业务增长、存在中心化生成瓶颈,并不适合多节点高并发场景。文章解释了聚簇索引和 B+Tree 的存储特性:主键顺序会影响数据物理组织,随机 UUID 作为主键容易造成页分裂、碎片化和更大的索引体积,因此更适合作为业务唯一标识而非数据库主键。雪花算法通过时间戳、机器 ID 和序列号组合实现趋势递增与高并发生成,但需要处理机器时钟回拨、节点配置和生命周期限制。UUIDv7 被作为重点方案分析,它用 48 bit 毫秒时间戳作为前缀,后缀保留随机熵,在保持标准 UUID 128 bit 格式和全局唯一性的同时,让插入更接近顺序写入,尤其适合 PostgreSQL 原生 uuid 类型存储。需要注意的是,同一毫秒内 UUIDv7 仍可能发生局部乱序,但影响通常远小于 UUIDv4;如果业务需要精确按时间筛选或频繁使用时间条件,仍建议保留 create_time 字段及索引。整体适合后端开发和数据库设计人员在单库、分布式、高并发写入等不同场景下评估主键策略。


![rocketmq 配置环境[python]](https://cdn.jacin.me/discourse/original/1X/103b1317f100dc47d73f47b37b6aee7f70194850.jpeg)

