从btree的角度来说说为什么插入频繁的mysql innodb表必须要自增id
必须自增id, 外界分布式自增id也不能作为priKey
1. innodb 是聚集索引 ,PRY Key和数据作为叶子节点
2. btree 的插入拆分中,当发现新增的id 处于 右节点和左节点中间时,或者左节点+无穷节点中间时.
单纯地增加一个页,而不会进行页拆分和数据迁移.
增加了性能.
为什么 biz_type-biz_id 索引比 biz_id-biz_type插入性能要好的原因也是如此.
这点其实和分布式的区分也类似. innodb支持范围查询,hbase也支持. 原因都在于他们都依赖了范围查询. 并且扩展拆分的算法也类似.
mysql 还支持 list 和 key ,hash索引. key需要自己变乱,否则热点都处于最新的节点. 分区意义就不大了.
canssendra 两者都支持.