每秒的SQL查询

我正在使用聊天应用程序,需要您的帮助.
如果有人在线数据库中,我会存储信息.现在,我有了一个功能,该功能可以显示您的朋友列表以及chatpartner是否在线.问题原理:我想经常检查是否有人上网.到目前为止,我有一条SQL语句,每秒钟定时一次,以检索数据并将其显示在客户端上.问题:整个应用程序开始滞后并且速度变慢(这很有意义).现在,我需要您的帮助.我该如何改善.我想到了不同的事情.首先,我想每隔5分钟左右检查一次,如果有人在线.但我不想等待5分钟,直到看到正确的在线/离线列表.因此,这个机会实际上是不可能的.我的下一个想法是,在更新表时(因为有人在线)仅检索数据.我想到了一个触发器,但是有可能编写一个触发器,该触发器在更新时被调用,但是在我的C#代码中调用了Method?
我真的不知道,希望您能帮助我.

您对这种应用有何建议?

问候

解决方法:

这有一段评论的时间.

您的结构根本无法扩展.实际上,每当您的体系结构中有客户机程序轮询*服务器时,您都应该考虑“这是潜在的可伸缩性问题”.如果他们每天下载一次昨天的结果,那可能没问题.每秒一次-您的服务器将只是响应这些请求.

解决方案是,当某人联机或脱机时,让服务器与该相关客户端联系.至少有两种方法可以做到这一点. “内置到数据库”方法将具有触发器.我不喜欢为此目的使用触发器,因为这种类型的逻辑会创建麻烦且难以找到的依赖项.

相反,我更喜欢将“用户现在登录”和“用户现在退出”之类的操作包装到存储过程中.此存储过程将更新相关表,并通知相关客户端朋友可用.

当然,这意味着您的客户端必须能够处理来自服务器的异步消息.这是真正可扩展的系统所需的功能之一.

上一篇:MySQL触发器不起作用


下一篇:我正在通过PHP使用Django用户身份验证.这种基于cookie的身份验证方案是否安全?