自增主键是否会降低数据库insert性能?如果会的话为什么还有很多公司采用?
高洛峰
高洛峰 2016-10-31 09:44:22
0
1
620

首先自增主键在insert的时候,因为是自增,那么是不是要有一个自增值锁来防止这个自增值出现重复?有的话那岂不是会影响性能?

我观察过BAT以及国内很多大型互联网公司的网站,比如说京东的商品id,百度的用户id,新浪微博的用户id,贴吧的帖子id都是自增主键(长期观察可以发现他们随时间增长,应该是自增),当然也有反例,比如说QQ空间的说说(内部名称应该是mood,因为说说最早以前是由心情模块改来的)说说id用的就是类似于UUID这样的主键(其实格式很像md5)。

他们这样设计有什么考虑吗?(好处坏处都有哪些?)


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
三叔

其他数据库没用过,不做评价。 
对于MySQL来说,使用自增还是比较划算的,因为底层数据结构(B+树)的原因,如果是自增ID的话,那么数据插入时最多就是引起节点的分裂,而如果是使用非自增ID,则有可能会导致节点移动和分裂。 
如果使用MySQL又使用UUID作为主键的话,那么插入效率必然大幅下降。 
当然,使用自增也会带来问题,就是日后如果要做水平切分的话,那么有可能会产生冲突的主键, 所以也可以选择不使用数据库的自增,而是自己生成全局唯一的递增整数作为主键。

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan