Di PDO, koneksi ke database bisa persisten atau tidak persisten. Koneksi yang persisten dibuat menggunakan atribut PDO::ATTR_PERSISTENT. Koneksi yang persisten jangan tutup saat skrip berakhir, tetapi skrip tersebut di-cache dan dapat digunakan kembali saat koneksi persisten yang diminta identik dengan koneksi yang ada.
Ketika koneksi diminta, PHP memeriksa apakah koneksi sudah ada atau belum, jika ada maka digunakan untuk eksekusi. Ini memengaruhi waktu eksekusi permintaan, lebih cepat daripada koneksi non-persisten.
Tetapi ada juga beberapa kelemahan dari koneksi yang persisten. Menurut dokumentasi manual php
Jika skrip karena alasan apa pun tidak dapat melepaskan kunci, maka skrip berikutnya yang menggunakan koneksi yang sama akan diblokir tanpa batas waktu dan mungkin mengharuskan Anda me-restart server http atau server database. Lain adalah ketika menggunakan transaksi, blok transaksi juga akan dibawa ke skrip berikutnya yang menggunakan koneksi itu jika eksekusi skrip berakhir sebelum blok transaksi selesai.
Pendekatan 1: Contoh koneksi persisten: Kami sudah membahas itu Sambungan tetap tidak ditutup di akhir skrip, tetapi di-cache dan digunakan kembali saat skrip lain meminta sambungan menggunakan kredensial yang sama. Karena koneksi yang terus-menerus di-cache, sebaiknya hindari overhead untuk membuat koneksi baru. Tidak perlu membuat koneksi setiap saat ke database, dan hasilnya adalah pengoptimalan kueri yang cepat.
PHP
|
Pendekatan 2: Contoh koneksi non-persisten: Dengan koneksi persisten yang berhasil ke database, instance objek kelas PDO dikembalikan ke skrip Anda. Itu sebabnya koneksi dengan objek PDO tetap aktif untuk waktu yang lama. Jika Anda ingin menutup koneksi ini, Anda perlu menghapus referensi ke objek tersebut dan menghancurkannya. Untuk melakukan ini, Anda ingin menetapkan batal nilai ke objek. Jika Anda tidak ingin melakukan perubahan apa pun, sambungan akan ditutup saat skrip Anda berakhir secara otomatis.
PHP
|
Keuntungan dari koneksi persisten:
- Koneksi tidak dekat saat skrip berakhir yaitu tidak perlu membuat koneksi lagi.
- Jika koneksi identik maka permintaan akan dieksekusi lebih cepat daripada koneksi non-persisten.
- Sambungan persisten memakan waktu dan aman.
Kerugian dari koneksi persisten: Di PHP, koneksi persisten memiliki beberapa batasan utama sebagai berikut:
- Koneksi yang terus-menerus dapat terjadi kebuntuan di seluruh server dan juga memiliki kesalahan database selama pembuatan halaman. Ini juga mempengaruhi transaksi, kunci tabel, tabel sementara, variabel sesi, dll. Fitur MySQL dalam bahaya.
- Koneksi yang terus-menerus dapat mencapai batasnya karena menempati ratusan soket dan utas MySQL.
- Ketika karena alasan tertentu koneksi atau skrip mati di tengah transaksi, dapat terjadi penguncian meja hingga timer deadlock masuk, karena timer deadlock dapat mematikan semua permintaan terbaru alih-alih permintaan lama.
- Misalkan ada sekelompok server web dan salah satunya adalah server web yang lambat memiliki cadangan dan menghabiskan sejumlah koneksi persisten, maka koneksi tersebut tidak dapat digunakan oleh server lain dan tidak dapat menyelesaikan permintaan mereka.
Kesimpulan: Ini adalah beberapa kelemahan dari koneksi persisten. Tetapi menonaktifkan koneksi persisten dapat memengaruhi waktu eksekusi permintaan.