我想知道什麼是實際初始化連接mysql中節點的最佳時間。什麼時候初始化節點的mysql連接
我應該創建一個連接池,然後將它們設置爲全局的,以便我的所有模型都可以訪問池?或者我應該在每次查詢時初始化連接?(看起來很糟糕)。
我確定有一些「正確」的方式來做到這一點,但我並不確定最好的方法是什麼。
我想知道什麼是實際初始化連接mysql中節點的最佳時間。什麼時候初始化節點的mysql連接
我應該創建一個連接池,然後將它們設置爲全局的,以便我的所有模型都可以訪問池?或者我應該在每次查詢時初始化連接?(看起來很糟糕)。
我確定有一些「正確」的方式來做到這一點,但我並不確定最好的方法是什麼。
經過更多的研究,我想我已經找到了正確的方法。
1)創建應用上的一個連接池啓動
2)包括在你的模型文件。
3)從池中獲取連接。
如果您要集中連接,則在需要時不要初始化連接。當不使用一個游泳池,你可以存儲連接信息時,你的應用程序啓動,並在需要時使用它:
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password: 'secret'
});
那麼對於單用例:
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
// we are done with the connection
connection.end();
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
如果」重新組合,您應該在應用程序啓動時創建一個連接池,並在需要時獲取連接。你不應該製造多個游泳池。
var mysql = require('mysql');
var pool = mysql.createPool({
host: 'example.org',
user: 'bob',
password: 'secret'
});
然後,當你需要一個連接,你會做這樣的事情:
pool.getConnection(function(err, connection) {
connection.query('SELECT something FROM sometable', function(err, rows) {
// we are done using the connection, return it to the pool
connection.release();
// the connection is in the pool, don't use it here
});
});
在保持你的代碼更加清晰的利益,我想你也可以只直接調用池對象,根據手冊https://github.com/felixge/node-mysql。這應該抽象出從池中獲取和釋放連接的邏輯。
EG:
var result = yield pool.query("SELECT * FROM users");
(我使用的是共同的MySQL與發電機的支持,但語法它應該是相同的瓦特/出回調)