const mysql = require("mysql2");
const connection = mysql.createConnection(
{
host: "127.0.0.1",
user: "root",
password: "",
database: "db_server"
});
connection.connect((error) =>
{
if(error)
console.log("MySQL error: " + error);
else
{
console.log("Подлючение с базой MySQL установленно!");
}
});
function ObjectToInsertQuery(db_table, object)
{
let sql_str = "INSERT INTO `test`";// (`id`, `intValue`, `floatValue`, `stringValue`) VALUES (NULL, '1', '2.1', 'dwa');"
let keys = "", values = "", is_first = true;
for([key, value] of Object.entries(object))
{
if(!is_first)
{
keys += ",";
values += ",";
}
keys += `\`${key}\``;
values += `'${value}'`;
is_first = false;
}
return `INSERT INTO \`${db_table}\` (${keys}) VALUES (${values});`;
}
function SpeedTestInsertSQL(max_req)
{
let object =
{
numberInt : 65535,
numberFloat : 3.14,
string : "Hello world"
};
let query_str = ObjectToInsertQuery("test", object);
//console.log(query_str);
let date = new Date();
let start_time = date.getTime();
let work_count = 0;
for(let i=0; i<max_req; i++)
{
connection.query(query_str, (error, result) =>
{
// Очередь? Таймер запускается после выполнения 1-го запроса
if(work_count == 0)
{
date = new Date();
start_time = date.getTime();
}
if(++work_count >= max_req)
{
date = new Date();
console.log(`\x1b[33m[MySQL] INSERT at ${work_count} times waste ${(date.getTime() - start_time)} ms.` );
}
});
}
}
function SpeedTestReadSQL(max_req)
{
let date = new Date();
let start_time = date.getTime();
let work_count = 0;
for(let i=0; i<max_req; i++)
{
let query_str = `SELECT * FROM \`test\` WHERE \`id\` = 1`;
connection.query(query_str, (error, result) =>
{
if(work_count == 0)
{
date = new Date();
start_time = date.getTime();
}
if(++work_count >= max_req)
{
date = new Date();
console.log(`\x1b[32m[MySQL] SELECT at ${work_count} times waste ${(date.getTime() - start_time)} ms.` );
}
});
}
}
function main()
{
for(let i=1; i<4; i++)
SpeedTestInsertSQL(Math.pow(10, i));
for(let i=1; i<4; i++)
SpeedTestReadSQL(Math.pow(10, i));
}
setTimeout(main, 30000);