数据库对千万数据的最佳存储解决方案

nwsw7zdq  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(229)

我有一个消息表,我的当前消息可以分配给一些人查看,所以我想到用两个表来实现这个功能,下面是我的主要消息表:

  1. create table tbMessages (
  2. `iMessageId` int unsigned not null auto_increment,
  3. `sContent` varchar(1000) not null default '',
  4. `dtCommitTime` datetime not null default '0000-00-00 00:00:00',
  5. primary key `pk_iMessageId` (`iMessageId`)
  6. )engine=innodb default charset=utf8mb4;

我需要设置指定的人来查看消息,所以我设计了一个tbmessages表来表示用户和消息之间的关系。下面是我的tbusermessages表:

  1. create table tbUserMessages (
  2. `iSeqId` int unsigned not null auto_increment,
  3. `iUserId` int unsigned not null default 0 comment 'user id',
  4. `iMessageId` int unsigned not null default 0,
  5. `dtCommitTime` datetime not null default '0000-00-00 00:00:00',
  6. primary key `pk_iSeqId` (`iSeqId`)
  7. )engine=innodb default charset=utf8;

然后,我发现每次创建或说推送消息时,都需要在tbusermessages表中插入n条记录。由于可以批量选择多个用户团队,因此可能会发生这种情况。每一条消息都会被创建并被额外写入。在tbusermessages表中输入1亿条数据,维护成本太高,一旦删除消息,就需要删除表中的所有记录。这将导致卡卡住。还有其他更好的设计吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题