如果我有一个 User
表(以全局 id
作为主键),基于 DB1
跨 10 个数据库 ( DB10
- username
) 进行分片,另一个表尝试引用 User
表使用 User
表行的全局id
,我无法知道该用户位于哪个数据库(1-10)。
这个问题有什么解决办法吗?
最佳答案
或者:
更改您的分片方案,以便根据用于查找此数据的 key 进行分片。如果是按ID,则始终按ID进行,并按ID分片(DB = ID % 10)
将
User
表的主键设置为username
。强制其唯一性并使用用户名
作为其他表中的外键,而不是合成标识符。创建一个可引用的查找表,将
id
映射到分片。
关于mysql - 我无法仅根据全局标识符判断一行位于哪个数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770134/