欢迎来到Introzo百科
Introzo百科
分库分表后索引如何设计?在全局索引和二级索引
分布式数据库架构下,索引的设计也需要调整,否则无法充分发挥分布式架构 线性 扩展优势。今天我们来聊聊“分布式数据库架构中如何正确设计索引?”
主键选择
对于主键来说,它在所有分片中必须是唯一的。它本质上是一个全球唯一索引。如果用大多数同学喜欢的自增方式作为主键,你会发现存在很大的问题。
因为自增无法获取插入前的值,所以必须先填充NULL值,然后通过函数last_insert_id()获取自增值。因此,如果主键在每个分片上都采用自增的方式实现,则不同分片上可能存在相同的自增值。
以电商订单表orders为例,表结构如下(分片键为o_custkey,表主键为o_orderkey):
创建 表 `订单` (
`O_ORDERKEY` int 不是 NULL 自动增量,
`O_CUSTKEY` int NOT NULL,
` O_ORDERSTATUS` char(1) NOT NULL,
`O_TOTALPRICE` 十进制(15,2) NOT NULL,
`O_ORDERDATE` 日期 不是 NULL,
`O_ORDERPRIORITY` char(15)NOT NULL,
`O_CLERK` char(15) NOT NULL,
`O_SHIPPRIORITY` int NOT NULL,
`O_COMMENT` varchar(79)NOT NULL,
主KEY(`O_ORDERKEY`), KEY(`O_CUSTKEY` )
......
) 引擎=InnoDB
如果把o_orderkey设计成上图所示的自增,那么很可能o_orderkey
同为1个记录在不同的分片中出现,如下图所示:
相关文章
- 10-08 疑似iPhone 8上手视频曝光,这就是苹果8的样
- 10-08 明日之镜索尼SEL1635GM/SEL1224G体
- 10-08 iPhone 8 原型机曝光:苹果改了外观,是这样
- 10-08 叮咚麦菜因用冰鲜鱼当活鱼致歉:举报属实,网站已暂停
- 10-08 康宁未来五年在韩国投资15亿美元:打造首条综合供应
- 10-08 方形设计定义高端扫地机器人发展方向 科沃斯方形地宝
- 10-08 轻松自动化
- 10-08 轻松自动化
- 10-08 轻松自动化
- 10-08 stm32应该用什么开发板入门(stm32应该买什
- 10-08 如何查看stm32芯片引脚
- 10-08 stm32引脚驱动能力(stm32引脚驱动电流)
- 10-08 SCSI硬盘:坏扇区表如何解决? (scsi硬盘读
- 10-08 郑州开盘数据顺利恢复,市场交易畅通(郑州开盘数据已
- 10-08 简易教程:如何实现Android数据恢复? (An
- 10-08 电商直播发展日趋成熟 2022电商直播用户规模达5
- 10-08 明峰医疗、优思达瑞派医疗等上榜创新医疗领域名单
- 10-08 AIGC产业已成为新蓝海,预计2028年行业市场核
- 10-08 国美零售:黄光裕全资公司光冠同意向该公司提供1.5
- 10-08 黄光裕出售国美零售14334万股,持股比例降至14
- 最近发表