2017-12-13 9 views
0

データベースとしてSQL Serverを使用するNode.js REST APIのパフォーマンスを向上させようとしています。このAPIは非常に遅い場合があります(たとえば、1.5秒の応答時間)。Node.js mssqlモジュールが非常に遅い

コードを掘り下げたところ、JavaScriptコード自体が非常に高速(1ms未満で実行)であることが判明しましたが、すべてを遅くするのはmssqlモジュールを介して実行されるSQLクエリです。

「ユーザー」表に5行しか含まれていない場合でも、"SELECT [id] from [users]"という簡単なクエリでも1〜2秒で完了します。この問題は、SSMSまたはPython(pymssql)を使用して同じクエリを実行すると、ほぼ即座に完了するため、mssqlモジュール内で発生しているようです。

誰でも、このモジュールまたは使用可能な代替モジュールの解決策を知っていますか?

(他の提案は歓迎されている)これは私がクエリを作成するために使用するコードです:

const config = {...} 

var sql = require('mssql'); 
var date; 

sql.connect(config) 
.then(pool => { 
    date = Date.now(); 
    return pool.request() 
    .query('select [id] from [users]'); 
}) 
.then(result => { 
    console.dir('This query took ' + (Date.now() - date) + 'ms to return ' + result.recordset.length + ' rows!'); 
}) 
.catch(err => { 
    console.log(err); 
}) 

sql.on('error', err => { 
    console.log(err); 
}) 

、出力は次のようになります。

'This query took 1287ms to return 5 rows!' 

答えて

0

は解決策を見つけました! configオブジェクトには、アクティブなままでなければならない接続の最小数を指定するpool.minプロパティを含めることができます。

私はこのプロパティについて知らず、モジュールがデフォルトで接続をアクティブにしていたと思っていましたが、pool.min = 5が追加されました。

うまくいけば、これは一部の人々を助けることができる