考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

问题描述 投票:0回答:5

我已阅读以下内容:

mysql和mysql2 gem有什么区别

到目前为止,我只使用了 MongoDB 和 NodeJS,我希望能够学习 MySQL 来满足我的任何关系数据库需求。在研究 MySQL 和 NodeJS 时,我找到了 MySQL2 的存储库,它与 MySQL 网站没有任何关系。我猜想已经创建了一些 API,可以更快地使用 NodeJS 和 Ruby 等语言进行开发。从 NodeJS 的角度来看,我猜测我仍然在服务器上运行常规 MySQL 数据库,但我需要使用这些新的 API 与其进行交互。喜欢:

https://github.com/sidorares/node-mysql2/blob/master/README.md

我见过一个网站,他们进行性能基准测试,NodeJS 和 MySQL 的性能非常低,而 NodeJS 和 MySQL2 的性能非常高。

此信息来源: php-nodejs-mysql-and-mongo

该帖子的图片:

enter image description here

我是否只是在我的服务器上使用常规 MySQL 数据库并使用此 mysql2 API,或者是否有与此 API 一起使用的不同 MySQL 实现?

mysql node.js relational-database mysql2
5个回答
48
投票

这只是普通人编写的 2 个不同的 API。差异在于命令的语法,也许还在于性能,只需安装两者,根据您的目标进行自己的测试,然后选择您认为更适合您的一个。

这是 NPMCompare 的比较


30
投票

摘自https://www.npmjs.com/package/mysql2

“MySQL2 的 API 大部分与 mysqljs 兼容并支持大多数功能。MySQL2 还提供这些附加功能

  • 更快/更好的性能
  • 准备好的陈述
  • MySQL 二进制日志协议
  • MySQL 服务器
  • 对编码和排序的扩展支持
  • 承诺包装
  • 压缩
  • SSL 和身份验证开关
  • 自定义流
  • 池”

仅前两个功能更好:更快和安全


8
投票

我在项目中实现

npm i mysql
依赖时遇到了很多问题。 首先,如果您遵循 MVC 架构,那么在服务器和客户端之间提取和
mysql
数据时,
send
会变得乏味。
npm i mysql2
简化了这个过程,就像执行查询一样简单

mysql依赖

connection.query(sql,(err,res)=>{*some fn here*})
返回所有行,包括查询的成功结果。 而 mysql2 依赖项
connection.execute(sql)
仅返回查询结果,而不返回行。


5
投票

另一个区别是,

mysql
npm 模块仍然不支持 MySQL 8 中引入的
caching_sha2_password
身份验证,而
mysql2
npm 模块则支持。 这就是我迁移到 mysql2 的原因。


4
投票

如果您查看图中 mysql 和 mysql2 使用的源代码,您会发现它们都使用 mysql api。唯一的区别是标记为 mysql 的他每次都会关闭连接。因此,要点是不要每次都关闭连接。 mysql2 api 应该更快,但我还没有看到任何相关数据。

有用于图形数据的“mysql2”代码。注意 api 仍然是 mysql 而不是 mysql2:

var sys = require('sys'),
http = require('http'),
mysql = require('mysql')
client = null;

client = mysql.createClient({
          user: 'root',
          password: '',
});
client.query('USE mongo');

http.createServer(function(req, res) {
        client.query(
                  'SELECT * FROM basic WHERE id = '+Math.floor(Math.random()*100000),
                  function selectCb(err, results, fields) {
                    if (err) {
                      res.writeHead(200, {'Content-Type': 'text/html'});
                          res.write('Bad');
                          res.end();
                      throw err;
                    }

                    res.writeHead(200, {'Content-Type': 'text/html'});
                        res.write('Gooood');
                        res.end();
                  }
                );
}).listen(8080);
© www.soinside.com 2019 - 2024. All rights reserved.