Разница между использованием getConnection() и использованием пула непосредственно в node.js с модулем node -mysql?

В документации указано, что вы можете использовать пул непосредственно с помощью:

pool.query();

или получить соединение вручную, а затем запустить запрос:

pool.getConnection(function(err, connection) {
  // Use the connection
  connection.query( 'SELECT something FROM sometable', function(err, rows) {
    // And done with the connection.
    connection.release();

    // Don't use the connection here, it has been returned to the pool.
  });
});

Второй вариант - это много кода, которое необходимо повторять каждый раз, когда вам нужно выполнить запрос. Безопасно ли просто использовать пул напрямую? Отправляет ли pool.query() соединение обратно в пул, когда это будет сделано?

Ответы

Ответ 1

Вопрос любезно ответил разработчиком на github: https://github.com/felixge/node-mysql/issues/857#issuecomment-47382419

Безопасно ли просто использовать пул напрямую?

Да, если вы делаете запросы с одним запросом. Единственный причина, по которой вы не можете использовать это в своем примере выше, потому что вы делая несколько запросов, которые необходимо выполнить в последовательном порядке по то же соединение. При вызове pool.query() могут быть разные соединения каждый раз, поэтому такие вещи, как FOUND_ROWS(), не будут работать так, как вы планировали если соединение не совпадает с соединением, которое SQL_CALC_FOUND_ROWS запрос. Использование длинного метода позволяет удерживать на одно и то же соединение для всех ваших запросов.

Объединяет ли пул .query() соединение обратно в пул, когда он сделано?

Да