Когда я должен начинать и заканчивать свое SQL-соединение node.js и должен ли я использовать пул с самого начала? - PullRequest
0 голосов
/ 21 октября 2019

Я запускаю свое первое веб-приложение Express. Я не совсем понимаю логику того, когда и где начинать соединение SQL и когда я должен его завершить.

Скопируйте и вставьте проекты онлайн, чтобы начать, у меня было соединение и закрытие внутри того же самогофайл db.jsКажется, что независимо от того, где это требуется, оно мгновенно создает соединение. Находится ли он в точке входа APP.JS, или просто потому, что это требуется для определенного файла модели.

Поэтому удаление метода connection.end () решило мою проблему невозможности вставить запрос из-заmsgstr "невозможно поставить запрос в очередь после вызова quit". Но если я подключаюсь и заканчиваю вручную после вставки функции, мне нужно создать НОВЫЙ объект базы данных, или connect () даже не будет работать.

Где я ДЕЙСТВИТЕЛЬНО должен "начать" соединение. Из требуется в app.js? Имеет ли это значение, поскольку оно начинается с любого места? Когда я набираю команду connection.end ()? Это не настольное приложение, поэтому уничтожение сервера узлов в VS Code в любом случае завершает его.

Я просто не понимаю, документация Node.js на самом деле не объясняет это для меня. Должен ли я использовать пул? Где я могу закрыть соединение? Почему так или иначе? Я действительно пытался гуглить, но ничего не выходит за рамки соглашений "почему и где".

1 Ответ

1 голос
/ 22 октября 2019

Как правило, соединения с базой данных должны создаваться непосредственно перед тем, как ваш запрос будет выполнен и закрыт сразу после.

Долгоживущие соединения с базой данных могут истощать сервер ресурсов и могут приводить к исчерпанию лимита соединений (обычно ограничение клиента устанавливается драйвером клиента). Чем более параллельное использование у вас в приложении, тем более вы склонны к долгоживущим соединениям, вызывающим проблемы.

Создание соединения с нуля является ресурсоемким процессом. Таким образом, вам определенно следует использовать пул соединений, который делает «создание» соединения быстрой операцией простого захвата доступного соединения из пула.

Выпустив соединение как можно скорее обратно в пул, выосвободить его для использования другими работниками.

https://softwareengineering.stackexchange.com/a/142068/167591

...