【发布时间】:2020-12-05 06:09:50
【问题描述】:
如果我们使用 php,我们会进行同步 mysql 调用。我们每次运行一个 mysql 查询,然后等待结果,然后运行另一个,依此类推。 如果我们在 node.js 中执行,我们会异步执行,因此我们一次运行十个请求。
那么在这种情况下,如果我们一次运行十个查询,node.js 会比 php 快十倍吗?
【问题讨论】:
-
为什么不测试一下看看呢?
如果我们使用 php,我们会进行同步 mysql 调用。我们每次运行一个 mysql 查询,然后等待结果,然后运行另一个,依此类推。 如果我们在 node.js 中执行,我们会异步执行,因此我们一次运行十个请求。
那么在这种情况下,如果我们一次运行十个查询,node.js 会比 php 快十倍吗?
【问题讨论】:
这取决于您在 PHP 中选择的数据库抽象层。您可以在 PHP 中使用几个数据库抽象层来查询数据库。示例:PDO、mysqli 等。它们大多是同步的,但也有异步的。例如 mysqli 允许对数据库进行异步调用。如果您在 PHP 中使用此类异步驱动程序,那么它们一次也可以运行十个请求。但是,如果使用 PDO 等原生驱动,那么 nodejs 会更快。 PHP中有一个带有mysqli扩展名的异步查询示例:https://www.php.net/manual/ru/mysqli.reap-async-query.php
【讨论】:
没有
每台服务器只能共享其拥有的资源。
如果您只运行 1 个查询,它将使用完成它所需的所有资源。
如果您有 3 个线程,则必须共享这些资源,并且您可以拥有可以进一步延迟查询的锁。
此外,如果适合您的工作流程,您还可以尝试多查询以提高速度
【讨论】: