用于聊天服务器的MySQL表优化

时间:2013-08-27 09:33:57

标签: mysql optimization

您好我正在使用Netty和MySQL制作服务器。

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

我对数据库很陌生,而且我一直在为聊天编写模式。

我需要记录客户端发送的每个聊天的聊天室号码,发件人ID,收件人ID,内容和时间戳。 我想每个聊天室将发送50个聊天内容。每天至少会创建100个聊天室。

我正在考虑为每个创建的聊天室制作一张桌子。但是,这将每月制作约3000张桌子。 如果我在一张桌子上记录了所有聊天室,那么桌子就会很长。我猜测从该表中检索记录会占用大量资源。

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

1 个答案:

答案 0 :(得分:2)

每个聊天室都有一个数据库行,消息,用户和房间之间的外键关系应该没问题。

拥有rooms表:

id, name, created

users表:

id, username, password, created

messages表:

id, room_id, user_id, message, time

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

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替换为您上次检查邮件的时间,以便删除重复项。