分表分库后二级索引怎么办?

2021-01-21 14:39:49 +08:00
 huntcool001
比如说订单表, 拆分出 64 张表之后,用 id hash 后做分表键。order 表有 orderNo 索引,userId 索引,日期索引,商品 id 索引等,业务上显然是必须的。

这些二级索引怎么维护?

我能想到的最简单的就是 order 表插入之后,事务完成了就异步 /同步 Redis 里面维护对应的全量的二级索引。 本地缓存也可以维护一份部分的二级索引的缓存,来加速。不过这样做的话还是会有比较大的问题,比如说 Redis 挂了或者插入失败了。Redis 挂了丢了一秒的二级索引数据只有后期扫 order 表来补上, 本地缓存应该临时可以撑到 Redis 恢复。要再不行了就只有扫全部的库表了,数据库可能会挂了或者客户端连接池连接数耗尽。

理论上来说,最适合的还是 XA 分布式事务? 比如说阿里云的 X-PolarDB (以前的 DRDS)就是背后给你 XA 维护了各种二级索引。
840 次点击
所在节点    数据库
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/747038

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX