【问题标题】:Speeding up the performance of huge multiple queries statements in MySQL加快 MySQL 中大量多查询语句的性能
【发布时间】:2013-04-14 10:49:05
【问题描述】:

我有 node.js 脚本,它在服务器上作为 cron 作业运行。

它异步接收来自外部源的数据(多个并发请求)并使用多个查询语句更新数据库,其中 UPDATE 查询用分号分隔。

一个 8000-UPDATES 多查询运行大约 55 秒。

有没有办法以某种方式加快整个数据库更新过程?

单个查询很简单——喜欢

 UPDATE my_table SET field1 = smth WHERE id = some_id;

索引是为 id 字段创建的。

【问题讨论】:

  • 向我们展示您的查询和索引,以便我们了解查询的结构。有多少查询?
  • 是的,我第二次显示查询、模式和每个表的行数,没有这些信息只是猜测。
  • 表格有多少条记录?
  • 大约几十万
  • @zavg 我认为查询的长度是问题所在。如此长的查询需要大量时间才能传输到数据库。我认为将要发送的查询一一拆分可能会加快速度并减少内存使用量。

标签: mysql performance node.js node-mysql


【解决方案1】:

减少执行的查询数量将是您最大的胜利。也许是INSERT...ON DUPLICATE KEY UPDATE

INSERT INTO my_table (id, field1) 
    VALUES
        (1, 'smth'),
        (10, 'smth2'),
        (88, 'smth3'),
        (23, 'smth4'),
        (68, 'smth5')
    ON DUPLICATE KEY UPDATE
        id = VALUES(id),
        field1 = VALUES(field1);

【讨论】:

    猜你喜欢
    • 2012-07-29
    • 2010-11-17
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多