【发布时间】:2020-04-23 08:28:43
【问题描述】:
我在 MySQL 中有一个聊天数据库。
'用户'表
user_id(PK), 用户名
'聊天'表
chat_id(PK)、user1_id(FK)、user2_id(FK)
'消息'表
message_id(PK)、chat_id(FK)、user_from(FK)、message_text、message_date
由于我希望消息表中有数百万条记录,因此我想到了对其进行分区。这是一个好方法吗?这里必须使用什么类型的分区?我想如果我按 chat_id 分区,那么对于两个用户之间的每次聊天,我都会得到一个分区。在实践中,因此每次都会检索分区中的所有记录,因为它们都属于同一个聊天。但是,这意味着如果我有 100 万条聊天记录,我就有 100 万个分区。但是,由于chat_id 是外键,MySQL 不允许按chat_id 进行分区。
【问题讨论】:
标签: mysql database database-design database-partitioning