Как правильно обрабатывать постоянные соединения в пуле соединений mysql

Если я использую функцию пула соединений node-mysql, это не будет представлять проблему в моем приложении, потому что соединения повторно используются после connection.end()? Вот почему я обеспокоен: когда вы определяете переменную в SQL или запускаете транзакцию, переменная или транзакция сохраняются до тех пор, пока соединение не будет закрыто. Поскольку соединение на самом деле никогда не закрывается, а используется повторно, переменные и транзакции могут просочиться в другую подпрограмму, которая не ожидает переменную или ожидает, что транзакция существует; он ожидает свежей связи.

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

Транзакции могут представлять еще большую проблему, если одна подпрограмма не сможет откатить или зафиксировать транзакцию перед вызовом end(), Если следующая подпрограмма, которая должна была использовать это соединение, не будет иметь дело с транзакциями, тогда все запросы будут добавлены к транзакции и остановлены, и никогда не будут выполнены. Когда я пишу свое приложение, я мог бы быть осторожным, чтобы такая ошибка никогда не возникала, но бывают ошибки, и если это произойдет, отладку будет крайне сложно (я бы не знал, какая подпрограмма неправильно обрабатывает соединения, что плохо, плохо).

Вот некоторые из моих проблем, когда я думаю об использовании пула. Конечно, я не единственный, кто задумывался об этих проблемах, поэтому, пожалуйста, пролите немного света на то, как правильно обрабатывать соединения в пуле, если вы будете так добры.:)

Большое спасибо.

1 ответ

Все транзакции будут происходить в контексте одного соединения. После того, как вы завершили или разорвали соединение, вы больше не можете работать с этой транзакцией. Общий шаблон - открывать, запрашивать, закрывать, и если у вас нет длительной транзакции, у вас не возникнет проблем с запросами или переменными, перетекшими в другие соединения.

В случае длительной транзакции вам нужно будет управлять этим объектом подключения, чтобы убедиться, что он существует и используется только кодом, который работает в этой транзакции.

Другие вопросы по тегам