在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/C++  數(shù)據(jù)庫(kù)  HTML/ node mysql connection.end() 和 connection

node mysql connection.end() 和 connection.destroy()的區(qū)別是什么?

npm mysql 文檔中我們可以看到對(duì)connection.end()和connection.destroy()區(qū)別的描述是connection.end()會(huì)確保在把COM_QUIT包發(fā)送給mysql服務(wù)器之前執(zhí)行隊(duì)列中的查詢語(yǔ)句,如果在COM_QUIT包發(fā)送之前發(fā)生了致命錯(cuò)誤會(huì)把錯(cuò)誤傳遞給回調(diào)函數(shù)的參數(shù)err,但連接無(wú)論如何也都是會(huì)被中斷的。而destroy()是沒(méi)有回調(diào)函數(shù)直接中斷的。(不知道有沒(méi)有翻譯對(duì),看了網(wǎng)上一些文章也是大概這么說(shuō)的)。我的問(wèn)題是,COM_QUIT發(fā)送前隊(duì)列中的查詢語(yǔ)句指的是什么,這個(gè)隊(duì)列是哪來(lái)的,有什么實(shí)際的情景可以說(shuō)明一下嗎?這兩種終止連接的方式對(duì)于用戶有什么不同的影響?如果只是有沒(méi)有回調(diào)函數(shù)的區(qū)別,那我要終止連接是兩個(gè)都可以任意使用嗎?

回答
編輯回答
來(lái)守候

查詢隊(duì)列指的是什么

在官方文檔的Introduction部分其實(shí)就講到了,文檔傳送門(mén)

  • Every method you invoke on a connection is queued and executed in sequence.
  • Closing the connection is done using end() which makes sure all remaining queries are executed before sending a quit packet to the mysql server.

舉例,下面的兩個(gè)調(diào)用,在內(nèi)部是排隊(duì)執(zhí)行的。

connection.query('SELECT * FROM hello');
connection.query('SELECT * FROM world');

end、destroy的區(qū)別

兩者的區(qū)別很明顯,還是以前面的代碼為例子。

1、connection.end():把查詢1、查詢2順利執(zhí)行完,得到查詢結(jié)果后,斷開(kāi)mysql服務(wù)器的連接。
2、connection.destryo():直接斷開(kāi)連接,不管還有多少查詢沒(méi)執(zhí)行完。

connection.query('SELECT * FROM hello'); // 查詢1
connection.query('SELECT * FROM world'); // 查詢2
2017年12月7日 04:01