Rumah >pangkalan data >tutorial mysql >Amalan terbaik untuk menggunakan dan mengurus kumpulan sambungan MySQL dalam Node.js
Bagaimana untuk menggunakan dan mengurus kumpulan sambungan MySQL dengan betul dalam program Node.js?
Node.js telah menjadi bahasa pembangunan bahagian pelayan yang sangat popular, dan ciri tak segerak, dipacu peristiwa menjadikannya sangat baik dalam mengendalikan permintaan serentak yang tinggi. Pangkalan data adalah sebahagian daripada proses pembangunan. Sebagai sistem pengurusan pangkalan data hubungan yang matang dan boleh dipercayai, MySQL juga merupakan salah satu pangkalan data yang biasa digunakan dalam pembangunan Node.js.
Dalam Node.js, untuk mengurus sambungan pangkalan data dengan cekap, pembangun sering menggunakan kumpulan sambungan. Menggunakan kumpulan sambungan boleh mengurangkan overhed untuk mewujudkan dan menutup sambungan pangkalan data dalam setiap permintaan, meningkatkan prestasi dan kecekapan. Berikut akan memperkenalkan cara menggunakan dan mengurus kumpulan sambungan MySQL dengan betul dalam program Node.js.
npm install mysql mysql2 --save
const mysql = require('mysql'); const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'database_name', connectionLimit: 10 // 连接池中的最大连接数 }); module.exports = pool;
Dalam contoh ini, kami menggunakan perpustakaan mysql untuk mencipta kolam sambungan bernama pool
, menyatakan nama hos, nama pengguna dan kata laluan pangkalan data , nama pangkalan data dan bilangan maksimum sambungan dalam kumpulan sambungan. pool
的连接池,指定了数据库的主机名、用户名、密码、数据库名和连接池中的最大连接数。
const pool = require('./db'); // 引入连接池 pool.getConnection((error, connection) => { if (error) throw error; // 执行数据库操作 connection.query('SELECT * FROM table_name', (error, results, fields) => { // 处理查询结果 if (error) throw error; console.log(results); // 释放连接 connection.release(); }); });
在这个例子中,我们使用pool.getConnection
方法从连接池获取一个连接对象,然后通过这个连接对象执行数据库操作。在操作完成后,需要调用connection.release()
方法将连接放回连接池,以便其他请求可以继续使用。
error
参数来处理错误。例如,可以使用try-catch块来捕获错误并进行处理,或者可以将错误传递给全局错误处理中间件进行统一处理。pool.getConnection((error, connection) => { if (error) { // 处理错误 console.error(error); return; } // 执行数据库操作 connection.query('SELECT * FROM table_name', (error, results, fields) => { if (error) { // 处理错误 console.error(error); return; } console.log(results); // 释放连接 connection.release(); }); });
options
,将waitForConnections
设置为true
const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'database_name', connectionLimit: 10, waitForConnections: true // 设置为true });Dalam contoh ini, kami menggunakan kaedah
pool.getConnection
untuk mendapatkan objek sambungan daripada kumpulan sambungan, dan kemudian melaksanakan pangkalan data operasi melalui objek sambungan ini. Selepas operasi selesai, anda perlu memanggil kaedah connection.release()
untuk meletakkan sambungan semula ke dalam kumpulan sambungan supaya permintaan lain boleh terus menggunakannya. 🎜error
dalam fungsi panggil balik. Sebagai contoh, anda boleh menggunakan blok cuba-tangkap untuk menangkap ralat dan mengendalikannya, atau anda boleh menghantar ralat kepada perisian tengah pengendalian ralat global untuk pemprosesan bersatu. 🎜🎜rrreeepilihan
kumpulan sambungan dan menetapkan waitForConnections
kepada true
, supaya apabila kumpulan sambungan tidak mempunyai idle sambungan, permintaan Sambungan baharu ditangguhkan sehingga sambungan tersedia. 🎜🎜rrreee🎜Ringkasan: 🎜Dengan menggunakan dan mengurus kumpulan sambungan MySQL dengan betul, prestasi dan kebolehpercayaan program Node.js anda boleh dipertingkatkan. Perlu diingatkan bahawa saiz kolam sambungan perlu diselaraskan mengikut situasi tertentu untuk mengelakkan masalah kolam sambungan terlalu besar atau terlalu kecil. Di samping itu, ralat dalam operasi pangkalan data mesti dikendalikan dengan betul untuk mengelakkan potensi isu keselamatan dan isu konsistensi data. 🎜Atas ialah kandungan terperinci Amalan terbaik untuk menggunakan dan mengurus kumpulan sambungan MySQL dalam Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!