我没有遇到这个问题,但我总是想到..当然这只是在复制数据、使用 memcached 和分区之后......
如果我有 photo_tbl 并且结构如下所示
user_id
group_id
date_added
.... and many more
在用户个人资料上,我们通过运行以下查询来显示用户照片
SELECT ...... FROM photo_tbl WHERE user_id=? order by date_added desc
在群组页面上,我们通过运行以下查询来显示群组照片
SELECT ...... FROM photo_tbl WHERE group_id=? order by date_added desc
在这种情况下,如果行是数十亿,并且如果需要在不影响上述两个查询的性能的情况下使用什么键进行分片..?
如果我的分片键是 user_id ,对于组,我必须去多个数据库才能获得所需的结果(通过更改应用程序逻辑)。如果它在 group_id 的用户配置文件上,我必须去多个数据库才能获得所需的结果。