主要观点总结
本文探讨了mysql中表主键id的选择问题,对比了uuid、自增id和雪花id等不同的主键生成策略,通过实例演示了不同策略在大数据量插入时的性能表现,并深入分析了不同主键策略在mysql索引结构中的优缺点。
关键观点总结
关键观点1: 问题提出与建表
文章首先提出问题,即mysql表主键选择uuid、自增id还是雪花id等策略。然后建立三张表分别使用不同的主键策略,为后续的性能测试做准备。
关键观点2: 性能测试与分析
通过jdbcTemplate进行大数据量的插入测试,发现uuid和随机不重复id在数据插入中的性能较差,主要原因是导致大量的随机IO和频繁的页分裂。
关键观点3: 索引结构对比
文章对比了使用自增id和uuid的索引结构,分析了各自在数据插入时的内部机制,以及可能遇到的问题。
关键观点4: 总结与建议
总结全文内容,强调在实际开发中根据mysql的官方推荐最好使用自增id,并指出其他值得优化的点。
文章预览
在 mysql 中设计表的时候,mysql 官方推荐不要使用 uuid 或者不连续不重复的雪花 id(long 形且唯一,单机递增),而是推荐连续自增的主键 id,官方的推荐是 auto_increment ,那么为什么不建议采用 uuid,使用 uuid 究竟有什么坏处? 本篇博客我们就来分析这个问题,探讨一下内部的原因。 本篇博客的目录 mysql 程序实例 使用 uuid 和自增 id 的索引结构对比 总结 一、mysql 和程序实例 1.1.要说明这个问题,我们首先来建立三张表 分别是 user_auto_key , user_uuid , user_random_key ,分别表示自动增长的主键,uuid 作为主键,随机 key 作为主键,其它我们完全保持不变。 根据控制变量法,我们只把每个表的主键使用不同的策略生成,而其他的字段完全一样,然后测试一下表的插入速度和查询速度: 注:这里的随机 key 其实是指用雪花算法算出来的前后不连续不重复无规
………………………………