MySQL Connection Pool(連接池)是一種用于管理 MySQL 連接的技術(shù)。連接池可以在應(yīng)用程序和數(shù)據(jù)庫之間建立一個(gè)預(yù)先分配的連接群,供應(yīng)用程序從中獲取連接。此外,連接池可限制連接數(shù)目,防止因連接數(shù)過多而導(dǎo)致數(shù)據(jù)庫宕機(jī)或應(yīng)用程序崩潰。下面我們來看看連接池的實(shí)現(xiàn)。
const mysql = require('mysql');
const pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '123456',
database: 'test'
});
pool.getConnection(function(err, connection) {
if (err) {
console.error('Error connecting to database: ' + err.stack);
return;
}
console.log('Connected to database.');
connection.release();
});
pool.query('SELECT * FROM users', function(err, rows) {
if (err) throw err;
console.log(rows);
});
在上面的代碼中,我們使用了 Node.js 中的 mysql 模塊來創(chuàng)建連接池。其中,connectionLimit 屬性用于限制連接池中連接的數(shù)量,host, user, password, database 屬性是 MySQL 數(shù)據(jù)庫的連接信息。
當(dāng)獲得連接時(shí),我們使用 pool.getConnection() 方法,它會(huì)返回一個(gè)連接,如果沒有空閑連接則會(huì)進(jìn)入等待狀態(tài)。拿到連接之后,我們進(jìn)行數(shù)據(jù)庫查詢操作,完成后需要調(diào)用 connection.release() 方法將該連接釋放到連接池中。
當(dāng)需要使用連接池中的連接時(shí),我們可以直接使用 pool.query() 方法進(jìn)行查詢,最終將結(jié)果以回調(diào)函數(shù)的形式返回。
以上就是 MySQL Connection Pool 的基本使用方法。注意,連接池不會(huì)自動(dòng)關(guān)閉連接,所以需要在應(yīng)用程序結(jié)束時(shí)手動(dòng)調(diào)用 pool.end() 方法來關(guān)閉連接池中所有的連接。