如何解决用于大型数据库建议的 Postgres 分区
我正在重建系统并将所有数据从 MysqL 迁移到 postgres(以及作为缓存层的 redis)。 结构如下:
- 少于 5000 行的用户表
- 包含数十亿行的项目表
- 不到一百万行的字符表
- 少于 20 万行的帐户表
- 每个项目行都有一个用于 chars(char_id) 的外键
- 每个字符行都有一个用于帐户的外键(acc_id)
- 每个帐户行都有一个用户外键(user_id)
我还向 items 表添加了 users(user_id) 外键。这是为了避免每次我只想按用户 ID 查找项目时都必须加入项目 + 字符 + 帐户和用户。 我想知道访问项目行的最有效方法。将来,当服务器无法处理整个表时,该表很可能会被分片到远程服务器。
我在某些地方读到分区是一个好主意,而其他人则说索引/视图就足够了。 所以我的想法是按 user_id 对项目进行分区,因为查询几乎总是限于该用户的数据。一个典型的查询是为特定用户选择大约 100 个项目,这些项目位于正确类型的字符上,并且该字符也必须位于正确类型的帐户上(两个连接)。
我的第一个问题是,按用户分区,好吗?如果是这样,理想的布局。如果没有,有什么替代方案?观看次数?
第二个问题是,我应该将字符和帐户详细信息放在每个项目行上吗?如果这意味着更快的查询,我不介意浪费空间。
有很多话要说,我希望一切都有意义。如果没有,请不要犹豫,询问更多详细信息。提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。