Задать вопрос

Как увеличить скорость mysql на node.js?

Здравствуйте.
Проблема со скоростью сохранения в mysql на node.js.
Установил следующее расширение - https://www.npmjs.org/package/mysql.
Имеется код:
var mysql = require('mysql'),
	post_term = {
		"name": 'test',
		"second_name": 'test',
		"third_name": 'test'
	},
	time = 0,
	start_time = 0;

var connection = mysql.createConnection({
	host     : '***',
	database : '***',
	user     : '***',
	password : '***'
});

start_time = Date.now();

connection.query('INSERT INTO terms SET ?', post_term, function(err, result){
	if(err)
		throw err;

	time = Date.now() - start_time;
	console.log('Time: '+time);
});


Время работы такого кода на моем ноутбуке составляет 370 миллисекунд.
Аналогичный код на php, отрабатывает за 0.000133283 миллисекунд.
<?php

	$link = mysql_connect($host, $user, $pass);
	if (!$link) {
	    die('Не удалось соединиться : ' . mysql_error());
	}

	$db_selected = mysql_select_db($db_name, $link);

	if (!$db_selected) {
	    die ('Не удалось выбрать базу: ' . mysql_error());
	}

	$start = microtime(true);

	$query = "INSERT INTO terms (name, second_name, third_name) VALUES ('test', 'test', 'test')";
	$result = mysql_query($query, $link);

	if (!$result) {
		die('Неверный запрос: ' . mysql_error());
	}

	echo number_format(microtime(true) - $start, 6);
?>


Что я делаю неправильно? Почему node работает настолько долго?

Верное время работы php скрипта - 138.12ms.
В расчетах возникла ошибка из-за того, что значения microtime(в php) брались в микросекундах, а не в секундах.
  • Вопрос задан
  • 2994 просмотра
Подписаться 3 Оценить Комментировать
Ответ пользователя Philipp К ответам на вопрос (3)
zoonman
@zoonman
⋆⋆⋆⋆⋆
Возможно, php устанавливает соединение на уровне сокетов, а нода лезет через весь стэк.
Попробуйте задать socketPath для соединения.
Ответ написан