1

ノードを学んでいます。

Express と Node-Mysql を使用して、mysql データベースにクエリを実行し、結果を JSON としてクライアントに返すことができました。

ただし、速度が遅すぎます。LIMIT が 100 の単純なクエリの場合、応答を取得するのに約 6 秒かかります。

私のロガーによると、DB クエリの実行には約 8 ミリ秒しかかからないため、node-mysql に問題があるとは思いません。

しかし、私が行っている他の唯一のことは、結果セットを応答オブジェクトに渡して json に変換することです。

これが私のコードです。

ルート:

app.get( "/exercises", function( req, res ){
    exercises.get( req.query, function( result ){
        res.json( result );
    });
});

モデル:

module.exports.get = function( params, cb ){
    var sql = "SELECT * FROM exercises LIMIT 100";
    db.do( sql, function( result ){
        var response = {};
        response.data = result[ 0 ];
        response.meta = result[ 1 ][ 0 ];
        cb( response );
    });
};

DB:

module.exports.do = function( sql, vals, cb ){
    var selectStart = +new Date();
    pool.acquire(function( err, db ){
        db.query( sql, vals, function( err, result ) {
            cb( result );
            console.log( "Query Execuction: %d ms", +new Date() - selectStart );
            pool.release( db );
        });
    });
};

私が間違っている可能性があることを誰かが知っていますか/結果セットをクライアントに送信するのに時間がかかるのはなぜですか?

(事前に)ご協力いただきありがとうございます。

4

1 に答える 1

0

私はプールに詳しくないので、残念ながらまだコメントできません。私が気づいたことの 1 つはdb.do、2 つの引数で呼び出しているのに、3 つかかることです。これにより、コールバックしようとすると「未定義は関数ではありません」が発生するはずです。

于 2013-02-06T22:14:13.520 に答える