分库分表索引设计:二级索引、全局索引的最佳设计实践(建议收藏)

8222232ea21463a92e86f327800a3526.png

若有收获,请记得分享和转发哦

分布式数据库架构下,索引的设计也需要做调整,否则无法充分发挥分布式架构线性可扩展的优势。今天我们就来聊聊 “在分布式数据库架构下,如何正确的设计索引?”

主键选择

对主键来说,要保证在所有分片中都唯一,它本质上就是一个全局唯一的索引。如果用大部分同学喜欢的自增作为主键,就会发现存在很大的问题。

因为自增并不能在插入前就获得值,而是要通过填 NULL 值,然后再通过函数 last_insert_id()获得自增的值。所以,如果在每个分片上通过自增去实现主键,可能会出现同样的自增值存在于不同的分片上。

比如,对于电商的订单表 orders,其表结构如下(分片键是o_custkey,表的主键是o_orderkey):

d04776194409f82b29ae5fd6fd42fccb.png

6c0346428cfd38627d5e065a36681c3c.png

5b0d89609b834f30d06570376b36cf96.png

f5b1db9c3722e80b546ef0779a3ffea7.png

9f82a4b6ef6378a9d118b9a8a8f7b29d.png

efbe762f8fda14035072c3e0a61d9cee.png

31349cb7b835aaec2b2f11b5dd00341c.png

e66bf88d45eeb985e8c3c78e4ee82e24.png

6facd40e43f5fd2b7aeb53cdd068605b.png

af35dd9077dd0eda17a6e4824dd51d46.png

6c4e89a623ea7079b7034a6d026968ea.png

  • 对于分布式数据库中的全局表,可以采用冗余机制,在每个分片上进行保存。这样能避免查询时跨分片的查询

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值