nodejs連接mysql——createPool&createConnection區別


createConnection 建立連接&關閉連接

語法

(1)createConnection方法創建連接對象(正式的說法:使用createConnection方法創建一個表示與mysql數據庫服務器之間連接的connection對象)

var connection = mysql.createConnection(options); 

(2)用對象的connect方法建立連接。

connection.connect(function(err) { *** }); 

(3)關閉連接:connection對象的end方法和destory方法。

connection.end(function(err) { *** }); 
connection.destroy();

完整示例

var connection = mysql.createConnection({
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '123456',
    database: 'test'
});

// 連接
connection.connect(function (err) {
    if (err) {
        console.log('[query] - :' + err);
        return;
    }
    console.log('[connection connect]  succeed!');
});

// 查詢數據
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(function (err) {
    if (err) {
        return;
    }
    console.log('[connection end] succeed!');
});

createPool 創建連接池

在開發web應用程序時,連接池是一個很重要的概念。建立一個數據庫連接所消耗的性能成本是很高的。在服務器應用程序中,如果為每一個接收到的客戶端請求都建立一個或多個數據庫連接,將嚴重降低應用程序性能。

因此在服務器應用程序中通常需要為多個數據庫連接創建並維護一個連接池,當連接不再需要時,這些連接可以緩存在連接池中,當接收到下一個客戶端請求時,從連接池中取出連接並重新利用,而不需要再重新建立連接。

語法

(1)創建連接池 createPool方法

var pool = mysql.createPool(optioins);

options參數包含createConnection方法中可以使用的各種屬性,除此之外還有以下屬性:createConnection,waitForConnections,connectionLimit,queueLimit。

(2)從連接池中取出連接。getConnection方法。如無連接可用則隱式的建立一個數據庫連接。

pool.getConnection(function(err,connection))

回調函數中的err為錯誤對象,connection為獲取到的連接對象。

(3)當連接不再使用時,用connection對象的release方法將其歸還到連接池中。

connection.release();

(4)當一個連接不再需要使用且需要從連接池中移除時,用connection對象的destroy方法。

connection.destroy(); 

連接移除后,連接池中的連接數減一。

(5)當一個連接池不再需要使用時,用連接池對象的end方法關閉連接池。

pool.end();

完整示例

var pool = mysql.createPool({
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '123456',
    database: 'test'
});
pool.getConnection(function(err, connection) {
    if(err){
        console.log("建立連接失敗");
    } else {
        console.log("建立連接成功");
        console.log(pool._allConnections.length); //  1
        connection.query('select * from user', function(err, rows) {
            if(err) {
                console.log("查詢失敗");
            } else {
                console.log(rows);
            }
            // connection.destory();
            console.log(pool._allConnections.length);  // 0
        })
    }
    pool.end();
})

本文連接:https://www.cnblogs.com/xsilence/p/12444228.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM