MySQL 从一个表中 SELECT 并在另一个表中 INSERT - 性能

标签 mysql performance node.js

情况是:在一个http GET请求中,我需要从一张表中选择我需要的信息并发送给客户端,同时我需要检索用户IP并插入数据库。我使用 Node.js 进行此实验。

问题是:有没有办法将这两个 Action 结合在一起?或者我是否必须连接并进行两个单独的查询?有没有办法渲染页面并在后台执行其他 INSERT 操作?最快的选择是什么?

app.get('/', function({
    connect.query("SELECT column1, column2 FROM table;", function(err, ... 
        render("index", ...);
    });

    connect.query("INSERT INTO table2 SET ip=11111111;");
});

最佳答案

@skv 建议的过程方法很好,但您必须等待写入,然后才能进行读取并最终将结果返回给用户。

我主张采用另一种方法。

  • 在内部将 IP 地址和时间戳放入数组或列表之类的队列中。
  • 从数据库中读取数据并将结果返回给用户
  • 创建一个后台作业,该作业将蚕食内部数组并执行插入

这有几个好处

  • 用户更快地获得结果
  • 如果系统被突发调用,则可以稍后完成写入
  • 可以以数十或数百个插入的批量方式完成写入,从而减少写入一行所需的时间。

关于MySQL 从一个表中 SELECT 并在另一个表中 INSERT - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21980924/

相关文章:

arrays - clojure数组处理中如何去掉clojure/lang/RT.aset和clojure/lang/RT.intCast?

c++ - 查找 3D 坐标是否已被使用的最快方法

javascript - Firebase 云函数 onCall 在更改区域后不起作用

node.js - 如何访问(node.js)服务器日志并在AngularJS前端显示

javascript - 穆尔特 : Setting different destinations in the destination Property

php - 从 wp_posts 表(以及所有关联表)中删除 wp_postmeta 中的 meta_value 与特定值匹配的所有帖子

mysql - 复杂的 MySQL 命令出现问题。我可以做这样的复合陈述吗?

mysql - 如何在没有 MariaDB 语法错误的情况下进行替换

php - 创建一个算法/公式来轮播网站上的广告

ruby-on-rails - unicorn 中每个 worker 的最大请求数