如何优化ajax查询到mysql

时间:2013-10-19 02:52:45

标签: php jquery mysql ajax

我创建了一个网页,每2秒钟必须从数据库中检索一次数据,以便向用户显示价格和数量的动态变化市场。

我收到了以下代码:

  $.ajax({
      type: "get",
      url: "getData.php",
      data: {
          item: 'H',
          type: 'price'
      },
      success: function (high) {

          $.ajax({
              type: "get",
              url: "getData.php",
              data: {
                  item: 'L',
                  type: 'price'
              },
              success: function (low) {

                  var dist = high - low;
                  // do something with the high and low prices... 
                  // keep retrieving data based on the high and low prices... 
                  //more ajax called are nested inside here...
              }
          });
      }
  });

这个嵌套的ajax调用会导致服务器cpu过度使用吗?

在我的getData.php文件中,我总是有require_once('connect.php');它连接到数据库。它是否会导致很多mysql连接,因为我有时会得到错误'超过最大mysql连接数'?我该如何解决?我是否合并了类似的ajax调用并使用parseJSON?

谢谢。

2 个答案:

答案 0 :(得分:1)

与数据库一样,数据库本身应该是您的主要性能问题。不要增加连接,而是尽量减少数据库在服务器上的服务器影响:

  • 如果可能,请确保您的查询已编入索引并使用索引(而不是表扫描)。使用explain语句来测试它。有时,对数据库模式的微小更改可能会产生巨大的差异
  • 尝试确保查询位于数据库查询缓存中,即。它们实际上只会在数据发生变化时执行。否则结果应该是内存不足。为此,查询缓存需要足够大,并且需要注意一些查询条件,例如Mysql函数等
  • 您可能最好只是简单地查询。虽然更大的查询本身可能表现良好,但如果你将它们分解,可以从查询缓存中提供更多的查询,它们通常会自行缩短。

希望这有帮助,如果您需要更多帮助,您可能需要发布一些示例查询和模型(并且可能将其放在dba.stackexchange.com上)

答案 1 :(得分:0)

我不确定你在使用这些AJAX调用的上下文中,但是在其他AJAX调用中嵌套AJAX调用不会导致更多的I / O使用,因为AJAX调用不是循环。你基本上和

一样
$.ajax{
    //do something
}
$.ajax{
    //do something else
}

除非您要求为第二次通话启动而满足条件。

您想编辑MySQL“my.cnf”文件以消除您遇到的错误:

max_connections = 100

这里的默认值是100.听起来你正在运行一个AJAX怪物,所以将其更改为更高的数字