国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - mysql模組的一些問(wèn)題,關(guān)於連接池的
淡淡煙草味
淡淡煙草味 2017-05-19 10:08:39
0
1
643

關(guān)於npm包mysql官方範(fàn)例程式碼的一點(diǎn)疑慮:
首先看第一段程式碼:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[ 0].solution);
});

connection.end();
可以看到查詢後,呼叫connection.end()斷開(kāi)連線;
再看第二段程式碼:
var mysql = require('mysql') ;
var pool = mysql.createPool(...);

pool.getConnection(function(err, connection) {
// Use the connection
connection.query('SELECT something FROM sometable', function (error, results, fields) {

// And done with the connection. 
connection.release();

// Handle error after the release. 
if (error) throw error;

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

});
});

這裡面查詢完成後呼叫: connection.release();

問(wèn)題1 如果這兩段程式碼:
第一段不呼叫
connection.end();
第二段不呼叫
connection.release();
會(huì)產(chǎn)生什麼後果呢?
2、這兩個(gè)有什麼差別呢?
3、這兩段程式碼有什麼差別呢,這個(gè)連線池該怎麼理解呢?
個(gè)人理解:連接池可不可以理解為緩存呢,查詢了某條數(shù)據(jù),第二次查詢相同數(shù)據(jù)直接在緩存裡面去取,也就是池子裡;

淡淡煙草味
淡淡煙草味

全部回覆(1)
phpcn_u1582

1、對(duì)資料庫(kù)的操作一定是同步阻塞的,因?yàn)闆Q不允許多個(gè)連接同時(shí)操作一條記錄這種情況的發(fā)生,想要操作資料庫(kù),必須先建立連接,而資料庫(kù)也不允許無(wú)限制的建立多個(gè)連接,如果某個(gè)連接操作完未斷開(kāi)或釋放連接,就會(huì)影響到後續(xù)連接的建立和使用,這對(duì)於高並發(fā)的情況是需要避免的。
2、connection.end()和 connection.release()的作用都是釋放當(dāng)前連接,但物件不同,前者針對(duì)的是普通的連接,而後者針對(duì)的連接池。
3、連接池確實(shí)有緩存的作用,但是其緩存的不是某條操作取出的具體數(shù)據(jù),而是緩存的連接本身,這樣當(dāng)下次操作數(shù)據(jù)庫(kù)時(shí)就不再需要不停的建立連接和銷毀連接了。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板