
[code]

    const mysql = require("mysql");
    const config = {
        host:'127.0.0.1',
        user:'root',
        password:'',
        database : "test",
        connectionLimit : 10
    }
    const pool = mysql.createPool(config);
    let strQuery = 'SELECT * FROM `test`';
    //①getConnectionからqueryを実行
    pool.getConnection(function(err,conn){
        if(err) throw err;
        conn.query(strQuery,function(error,results,fields){
            if(error) throw error;
            console.log(results);
            conn.release();
        });
    });
    //②直接queryを実行
    pool.query(strQuery,function(error,results,fields){
        if(error) throw error;
        console.log(results);
    });
    
[/code]

この二つのクエリの挙動は内部ではどう違うのでしょうか？


CC BY-SA 3.0
2017-07-02T13:47:18.137
36039
2018-06-10T00:09:47.147
24170
question
javascript mysql node.js
mysqlコネクションプールにおけるqueryの挙動の違いについて


<https://github.com/mysqljs/mysql#closing-all-the-connections-in-a-pool>

> ... the pool.query method is a short-hand for the pool.getConnection ->
> connection.query -> connection.release() ...

`pool.query()`は`pool.getConnection() -> connection.query() ->
pool.release()`の一連の流れを処理を実行するショートハンドなので、内部でコネクションプールの取得、クエリング、コネクションのクローズを一気にやっています。ひとつのコネクションに対して複数のクエリを発行する場合には、`pool.query()`を使わずに、`pool.getConnection()`でコネクションを握ってからコールバック内で複数のクエリ発行を処理するのが良いかと思います。


CC BY-SA 3.0
2017-09-15T07:13:52.027
37967
2017-09-15T07:13:52.027
13444
36039
answer