NodeJS与Laravel与Mysql数据库相比,在性能方面更好



我正在使用MYSQL数据库开发REST后端,现在我需要在服务器端语言之间做出选择,因为它消耗的服务器资源(CPU和RAM(更少。

例如,假设我有一个 POST 端点(注册一个新用户帐户(和另一个 GET 端点(以 JSON 格式获取用户信息(。 而且我预计我的网站会有很高的流量,哪种编程语言会消耗更多的服务器资源?

我用谷歌搜索了NodejS和Laravel之间的比较,我发现一些网站显示了基准测试,偏爱laravel和其他网站显示NodeJS更好。

使用基本的获取/设置数据库操作,无论您选择哪种语言,都不会有大量时间。

根据非性能标准选择语言,并在出现特定性能问题时解决它们。

当您标记负载平衡时,我假设您的应用程序已经可以水平扩展。

我像这样构建了自己的sql脚本编写器,这对我的项目来说非常快,因为我以前的PHP后端太慢了(就我而言(

const mysqlLib = require('mysql');
const ENV = require('../configs/env').ENV;
const database = ENV.database;
const mysql = mysqlLib.createPool(database);
function executeQuery(query) {
return new Promise((resolve, reject) => {
mysql.query(query, (err, result, fields) => {
if (err) {
console.log(query);
return reject(err);
}
resolve(result);
});
});
}
function executeQueryGetFirst(query) {
return new Promise((resolve, reject) => {
mysql.query(query, (err, result, fields) => {
if (err) {
console.log(query);
return reject(err);
}
result = JSON.parse(JSON.stringify(result));
if (result.length == 0) {
resolve(null);
} else {
resolve(result[0]);
}
});
});
}
var Database = {
getById(table, id) {
var query = '';
query += 'SELECT * FROM ' + table + ' ';
query += 'WHERE Id = ' + id;
query += ' LIMIT 1';
return executeQueryGetFirst(query);
},
getAllById(table, id) {
var query = '';
query += 'SELECT * FROM ' + table + ' ';
query += 'WHERE Id = ' + id;
return executeQuery(query);
},
getByAttributes(table, attributes) {
var query = 'SELECT * FROM ' + table;
var whereQuery = '';
for (prop in attributes) {
if (whereQuery != '') {
whereQuery += ' AND ';
}
if (attributes[prop] == null) {
whereQuery += prop + ' IS NULL';
} else {
whereQuery += prop + ' = "' + attributes[prop] + '"';
}
}
query += ' WHERE ' + whereQuery;
query += ' LIMIT 1';
return executeQueryGetFirst(query);
},
getAllByAttributes(table, attributes) {
var query = 'SELECT * FROM ' + table;
var whereQuery = '';
for (prop in attributes) {
if (whereQuery != '') {
whereQuery += ' AND ';
}
if (attributes[prop] == null) {
whereQuery += prop + ' IS NULL';
} else {
whereQuery += prop + ' = "' + attributes[prop] + '"';
}
}
query += ' WHERE ' + whereQuery;
return executeQuery(query);
},
getAll(table) {
var query = 'SELECT * FROM ' + table;
return executeQuery(query);
},
add(table, attributes) {
var insertName = '(Id';
var insertData = '(NULL';
for (prop in attributes) {
var value = attributes[prop];
if (value != null) {
value = '"' + value + '"';
}
insertName += ', ' + prop;
insertData += ', ' + value;
}
insertName += ')';
insertData += ')';
var query = 'INSERT INTO ' + table + ' ' + insertName + ' VALUES ' + insertData;
return executeQuery(query);
},
updateByID(table, id, attributes) {
var query = 'UPDATE ' + table;
var setQuery = '';
for (prop in attributes) {
if (setQuery != '') {
setQuery += ', ';
}
setQuery += prop + ' = "' + attributes[prop] + '"';
}
query += ' SET ' + setQuery + ' WHERE Id = ' + id;
return executeQuery(query);
},
updateByAttributes(table, findAttributes, attributes) {
var query = 'UPDATE ' + table;
var setQuery = '';
var whereQuery = '';
for (prop in attributes) {
if (setQuery != '') {
setQuery += ', ';
}
setQuery += prop + ' = "' + attributes[prop] + '"';
}
for (prop in findAttributes) {
if (whereQuery != '') {
whereQuery += ', ';
}
whereQuery += prop + ' = "' + findAttributes[prop] + '"';
}
query += ' SET ' + setQuery + ' WHERE ' + whereQuery;
return executeQuery(query);
},
deleteById(table, id) {
var query = 'DELETE FROM ' + table + ' WHERE Id = ' + id;
return executeQuery(query);
},
deleteByAttributes(table, attributes) {
var query = 'DELETE FROM ' + table;
var whereQuery = '';
for (prop in attributes) {
if (whereQuery != '') {
whereQuery += ' AND ';
}
whereQuery += prop + ' = "' + attributes[prop] + '"';
}
query += ' WHERE ' + whereQuery;
return executeQuery(query);
}
}
Database.executeQuery = executeQuery;
Database.executeQueryGetFirst = executeQueryGetFirst;
exports.Database = Database;

环境配置

var ENV = {
isDev: true,
database: {
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '',
database: 'your_database'
}
}
exports.ENV = ENV;
exports.ENV.port = ENV.isDev ? 15001 : 8887;

最新更新