Начинаем работать с MySQL в NodeJS. Часть 2
Начинаем работать с MySQL в NodeJS. Часть 2
В прошлой статье мы рассмотрели азы подключения к серверу базы данных MySQL из NodeJS. А в этой рассмотрим работу с пулом подключений MySQL.
Объединение подключений в пул
Приведенный ранее код не предназначен для использования в реальных условиях (на продакшене). В промышленном сценарии мы должны использовать пул соединений для повышения производительности MySQL и не перегружать сервер MySQL слишком большим количеством подключений.
Драйвер MySQL в NodeJS предоставляет встроенную функцию объединения соединений в пул. Предположим, вы хотите создать пул с 5 соединениями.Вот как это можно сделать:
var pool = mysql.createPool({
connectionLimit: 5,
host: 'localhost',
user: 'root',
password: 'password',
database: 'world_db'
});
Чтобы получить соединение из пула, необходимо использовать метод getConnection():
pool.getConnection(function(err, connection) {
// здесь работаем с полученным соединением
});
Чтобы вернуть соединение обратно в пул после того, как вы закончите с ним работать, вы можете вызвать connnection.release(). После вызова этого метода, соединение будет доступно в пуле и готово к повторному использованию каким-то другим кодом.
pool.getConnection(function(err, connection) {
// выполняем запрос
// ...
connnection.release(); // освобождаем соединение
});
Чтобы закрыть соединение и удалить его из пула, необходимо использовать метод connection.destroy(). Новое соединение будет создано в пуле, если оно понадобится в следующий раз.
Важно отметить, что пул будет создавать соединения лениво. Что это означает? Например, если вы настроили пул с 5 подключениями, но одновременно используете только 2 подключения, то пул создаст непосредственно только 2 подключения.
Чтобы закрыть все соединения в пуле, можно использовать метод end() объекта пула следующим образом:
pool.end(function(err) {
if (err) {
console.log(err.message);
}
// закрываем соединения
});
Таким образом из этой и предыдущей статьи мы рассмотрели два способа открытия соединения с БД MySQL в NodeJS, а в следующей рассмотрим непосредственно выполнение SQL-запросов с полученным соединением.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.