javascript - Beberapa masalah dengan modul mysql, mengenai kolam sambungan
淡淡烟草味
淡淡烟草味 2017-05-19 10:08:39
0
1
581

Sesetengah keraguan tentang kod sampel rasmi npm pakej mysql:
Lihat kod pertama:
var mysql = require('mysql');
var connection = mysql.createConnection({
hos : 'localhost',
pengguna : 'saya',
kata laluan : 'rahsia',
pangkalan data : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', fungsi (ralat, keputusan, medan) {
if (error) throw error;
console.log('The solution is: ', results[0].solusi) ;
});

connection.end();
Selepas melihat pertanyaan, panggil connection.end() untuk memutuskan sambungan;
Lihat bahagian kedua kod:
var mysql = require('mysql'); ...);

pool.getConnection(function(err, connection) {

// Gunakan sambungan
connection.query('PILIH sesuatu DARI sesuatu jadual', fungsi (ralat, keputusan, medan) {

// And done with the connection. 
connection.release();

// Handle error after the release. 
if (error) throw error;

// Don't use the connection here, it has been returned to the pool. 

});

});

Panggil selepas pertanyaan selesai: connection.release();

Soalan 1 Jika dua keping kod ini:

Sekeping pertama tidak memanggil
connection.end();
Sekeping kedua tidak memanggil
connection.release()
Apakah akibatnya?
2. Apakah perbezaan antara keduanya?
3. Apakah perbezaan antara dua keping kod ini?
Pemahaman peribadi: Bolehkah kumpulan sambungan difahami sebagai cache Selepas menanyakan sekeping data tertentu, pertanyaan kedua untuk data yang sama diambil terus daripada cache, iaitu, daripada kumpulan;

淡淡烟草味
淡淡烟草味

membalas semua(1)
phpcn_u1582

1 Operasi pada pangkalan data mesti disekat secara serentak, kerana berbilang sambungan tidak dibenarkan untuk mengendalikan rekod pada masa yang sama. Jika anda ingin mengendalikan pangkalan data, anda mesti mewujudkan sambungan terlebih dahulu, dan pangkalan data tidak tidak membenarkan sambungan. Hadkan penubuhan berbilang sambungan Jika operasi sambungan selesai dan sambungan tidak diputuskan atau dilepaskan, ia akan menjejaskan penubuhan dan penggunaan sambungan berikutnya, yang perlu dielakkan dalam situasi serentak tinggi.
2 Fungsi connection.end() dan connection.release() adalah untuk melepaskan sambungan semasa, tetapi objek yang pertama adalah untuk sambungan biasa, manakala yang kedua adalah untuk kumpulan sambungan.
3 Kumpulan sambungan memang mempunyai fungsi cache, tetapi yang dicache bukanlah data khusus yang dikeluarkan oleh operasi tertentu, tetapi sambungan yang dicache itu sendiri, pada kali seterusnya anda mengendalikan pangkalan data, anda tidak lagi perlu sentiasa mewujudkan sambungan dan Sambungan dimusnahkan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan