你好,

我已经使用 Comet 实现了一个聊天应用程序。该请求在服务器上“挂起”,直到新消息到达。然后,它带着新消息返回给客户端,并再次发送给服务器。

我的问题是:

为了检查新消息,我每 600 毫秒轮询一次数据库。我执行一个简单的查询“select...from messages where messageId > ' + lastMessageId”。

此外,为了维持在场,我经常在每个用户“ Lastekealivetime”中非常(非常)更新数据库。

SQL Server 事务日志变得越来越大,并且在某个时刻,我的聊天应用程序停止工作。

聊天用户不是注册用户,他们只是可以随时离开页面的随机用户。

谢谢Yaron

有帮助吗?

解决方案

你能使用通用的缓存对象最后存活的信息?这似乎是它的少量信息,你可以避开很多的SQL更新。

其他提示

以下是防止事务日志失控的方法: http://support.microsoft.com/kb/873235

该文章中的选项包括:

  • 做收缩手术。
  • 更改日志大小。
  • 配置自动扩容。
  • 改变恢复模式。
  • 定期备份日志文件。

和更多。

作为旁注,可能值得设置用户列表及其最后活动日期,并将其作为对象存储在应用程序状态中。以这种方式访问​​会更快,并且您可以不太频繁地保留这些值。

从全模式事务日志转换为简单模式应该解决您的日志增长的问题。

不过,我还要补充一点,它通常是一个好主意,以避免投票,如果你可以,因为它没有可扩展性。你可能会考虑切换到使用服务代理或SqlDependency的事件驱动模型。还有其它的方法,以保持有效指示,太。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top