首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天服务器的MySQL表优化

聊天服务器的MySQL表优化
EN

Stack Overflow用户
提问于 2013-08-27 09:33:56
回答 1查看 529关注 0票数 1

嗨,我正在用Netty和MySQL做一个服务器。

我的服务器的主要任务是记录用户的信息和聊天。

我对数据库非常陌生,我一直在为聊天编写模式。

我需要记录聊天室号码,发送者ID,接收者ID,内容和时间戳,每次聊天从客户端发送。我想每个聊天室会发送大约50个聊天。每天至少会建立100个聊天室。

我正在考虑为每个建立的聊天室做一个桌子。然而,这将使每月约3000张桌子。如果我把所有的聊天室都记录在一张桌子上,这张桌子就会很长。我猜从那个表中检索记录将花费大量的资源。

这部分是我被困的地方。记录聊天时,通常的做法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-27 09:43:57

每个聊天室都应该有一个数据库行,其中包含消息、用户和聊天室之间的外键关系。

有一个rooms表:

代码语言:javascript
复制
id, name, created

users表:

代码语言:javascript
复制
id, username, password, created

messages表:

代码语言:javascript
复制
id, room_id, user_id, message, time

然后使用一些非常简单的联接来检索您想要的数据。例如,要检索聊天室中的最新消息:

代码语言:javascript
复制
SELECT u.username, m.message, m.time FROM messages
LEFT JOIN rooms r ON m.room_id = r.id
LEFT JOIN users u ON m.user_id = u.id
WHERE r.name = 'chatroomName'
AND m.time > lastPolledTime

用上次检查邮件的时间替换lastPolledTime,以便删除重复的消息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18461832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档