为什么Node JS中的Mysql查询执行比直接的Mysql查询执行要慢得多?

时间:2014-04-25 02:09:52

标签: mysql node.js performance database-performance node-mysql

查询: select id, event_time from events where event_time > 1395797406712 and event_time < 1398389406712 order by event_time asc

此查询返回~25k行(总大小为500KB)。

当我使用node-mysql驱动程序在Node.js中查询上述查询时,执行需要约3-4秒。 (我使用了console.time和console.timeEnd)

当我直接在mySql中查询它时,它说需要大约200毫秒。

是什么导致这种巨大的差异,以及如何改进Node.js实现以与直接的Mysql查询内联?

2 个答案:

答案 0 :(得分:2)

原来这是亚马逊的后端问题。我们正在使用Elastic Beanstalk,EC2和RDS实例位于同一区域,但不在同一可用区。一旦我将它们设置为相同,即us-east-1a,node.js中的查询大约需要200毫秒。

答案 1 :(得分:0)

您使用的是row streaming吗?

如果没有,node-mysql正在构建一个25k元素对象,其中包含与之关联的所有分配和迭代以及赋值。而且它是用javascript(而不是很好地优化的本机代码)来实现的,因为node-mysql是纯粹的javascript。

行流将允许您一次收集一条记录计算所需的信息,就像您在大多数其他环境中看到的传统类型的基于游标的MySQL适配器一样。