huntcool001
V2EX  ›  数据库

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

  •  
  •   huntcool001 · Jan 21, 2021 · 1604 views
    This topic created in 2001 days ago, the information mentioned may be changed or developed.
    比如说订单表, 拆分出 64 张表之后,用 id hash 后做分表键。order 表有 orderNo 索引,userId 索引,日期索引,商品 id 索引等,业务上显然是必须的。

    这些二级索引怎么维护?

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

    理论上来说,最适合的还是 XA 分布式事务? 比如说阿里云的 X-PolarDB (以前的 DRDS)就是背后给你 XA 维护了各种二级索引。
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3156 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:41 · PVG 20:41 · LAX 05:41 · JFK 08:41
    ♥ Do have faith in what you're doing.