Node連接mysql中createConnection和createPool的區(qū)別

在Node中,我們在連接mysql數(shù)據(jù)庫的時(shí)候,因?yàn)镹ode沒有連接mysql的方法,需要使用第三方的包mysql。

yarnadd mysql

引入mysql第三方包

constmysql =require('mysql')

在引入之后,連接數(shù)據(jù)庫有兩種方法,一種是createConnection,另一種是createPool。

createConnection連接數(shù)據(jù)庫

constdb = mysql.createConnection({

host:'127.0.0.1',// localhost也可以

port:3306,

user:'root',

password:'123456',

database:'db'

})

// 連接數(shù)據(jù)庫

db.connect((err) =>{

if(err)return

console.log('Connection Success')

})

//TODO:數(shù)據(jù)查詢

db.query('sql語句',(err, res) =>{

if(err)returnconsole.log(err.message)

console.log(res)

})

// 斷開數(shù)據(jù)庫連接

db.end((err) =>{

if(err)return

console.log('Connection Closed')

})

以上是用createConnection連接數(shù)據(jù)庫的案例。

createPool創(chuàng)建連接池連接數(shù)據(jù)庫

我們知道建議一個(gè)連接池的成本很高,很浪費(fèi)性能。如果我們每接收一個(gè)客戶端請求,就建立一次連接或多個(gè)連接,很浪費(fèi)服務(wù)端的資源。

所以在服務(wù)端應(yīng)用程序中需要為多個(gè)數(shù)據(jù)庫連接創(chuàng)建并維護(hù)一個(gè)連接池,當(dāng)連接不需要的時(shí)候,這些連接可以緩存在連接池中,當(dāng)接收到下一個(gè)客戶端請求時(shí),從連接池中取出連接,就不需要再重新建立連接。

完整示例

constdb = mysql.createPool({

host:'127.0.0.1',// localhost也可以

port:3306,

user:'root',

password:'123456',

database:'db'

})

// 建立數(shù)據(jù)庫連接,如無連接可用則隱式的建立一個(gè)數(shù)據(jù)庫連接

db.getConnection((err, connection) =>{

if(err){

console.log('連接失敗')

}else{

console.log('連接成功')

db.query('sql語句',(err, res) =>{

if(err)returnconsole.log(err.message)

console.log(res)

// 當(dāng)不再使用時(shí),歸還到連接池中

? ? ? connection.release()

// 當(dāng)不再使用時(shí)并要從連接池中移除

? ? ? connection.destory()

? ? })

? }

// 當(dāng)連接池不需要使用時(shí),關(guān)閉連接池

? db.end()

})

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容