提高nodejs和MySql

时间:2015-09-14 12:32:22

标签: mysql node.js performance

我正在重写nodejs中的php应用程序。

在查询mysql数据库时,我遇到了性能问题。

我正在执行以下查询:

START TRANSACTION;

SELECT id
FROM stock
WHERE id IN (
  SELECT id
  FROM stock
  WHERE warehouse = 1
) ORDER BY id
FOR UPDATE;

DELETE FROM stock WHERE warehouse = 1;

LOAD DATA LOCAL INFILE '/tmp/28718734728601.csv'
INTO TABLE stock FIELDS
TERMINATED BY ';'
ENCLOSED BY '"'
(sku, qty, warehouse);

COMMIT;

使用PDO在PHP中运行它需要大约3秒钟。 使用mysqlmysql2在Nodejs中运行它需要大约5秒钟。

查询是锁定stock表上的行,并且2/3秒锁定正常,但在我的上下文中有5个或更多。

有没有人对如何提高表现有任何建议/想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

  • 不要在SELECT中使用该子查询。 (1)效率低下,(2)不必要。

  • 甚至没有SELECT - 您没有从中获取任何值,DELETE将立即锁定行。

仓库#1中有多少行? LOAD是否正在重新加载所有#1值?