如何优化数据库连接数?

时间:2010-10-14 12:34:24

标签: java database query-optimization

我们有一个带有Tomcat servlet容器的Java(Spring)Web应用程序。 我们有像博客这样的东西。 但博客必须使用Ajax动态加载其帖子。 客户端的ajax脚本会检查每秒的新帖子。 即Ajax必须每秒向服务器询问新帖子,这对数据库来说非常重要。

但是,如果我们同时拥有数十万个连接呢? 我认为我们必须每秒都使用cron检索所有帖子,然后将其保存到某处。但是哪里? 主要思想是卸载数据库。 关于建筑的任何想法? 提前谢谢!

3 个答案:

答案 0 :(得分:3)

根据具体情况,还有其他的轮询架构可能更优化:

  

长轮询

     

长轮询是一种变体   传统的民意调查技术   允许模拟信息   从服务器推送到客户端。同   长轮询,客户要求   来自服务器的信息   与普通民意调查类似的方式。然而,   如果服务器没有   为客户提供的信息,   而不是发送空响应,   服务器保存请求并等待   有些信息可供使用。   一旦信息可用   (或在适当的超时后),a   完整的回复发送到   客户。那时客户通常会   立即重新请求信息   从服务器,使服务器   几乎总会有一个可用的   等待它可以使用的请求   提供数据以响应事件。   在web / AJAX上下文中,长轮询是   也称为Comet编程。

Long Polling

此技术的实施示例: Push Server

您还可以使用观察者模式注册请求,并在更新完成后通知他们。

答案 1 :(得分:0)

成千上万的并发用户每秒都会轮询我们的网站,这会产生大量的流量。如果你真的希望这种负载,你将不得不相应地设计你的平台,可能是通过集群多个Web,应用程序和数据库服务器。

请记住,对于数据库连接池,您不需要为每个用户建立数据库连接。

答案 2 :(得分:0)

我对Tomcat并不熟悉,但在WebSphere中我们可以设置连接池来准备一定数量的连接。

另外,您是否主要担心读取或写入次数相同?

另外,您可能还希望根据区域等对数据库进行“拆分”。这样,整个数据库中不会出现单个负载,但可以拆分甚至负载均衡。

还有“NoSQL”数据库可供查看。也许要考虑的事情。只是提出帮助的想法。