Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa artinya ketika saya mengatakan Pernyataan yang disiapkan sudah dikompilasi sebelumnya?

Ketika Anda menggunakan pernyataan yang telah disiapkan (yaitu pernyataan yang telah dikompilasi sebelumnya), Segera setelah DB mendapatkan pernyataan ini, DB mengompilasinya dan menyimpannya dalam cache sehingga dapat menggunakan pernyataan terkompilasi terakhir untuk panggilan berturut-turut dari pernyataan yang sama. Jadi itu menjadi pra-kompilasi untuk panggilan berturut-turut.

Anda biasanya menggunakan pernyataan yang disiapkan dengan variabel bind di mana Anda menyediakan variabel pada saat run time. Sekarang apa yang terjadi untuk eksekusi berturut-turut dari pernyataan yang disiapkan, Anda dapat memberikan variabel yang berbeda dari panggilan sebelumnya. Dari sudut pandang DB, tidak harus mengkompilasi pernyataan setiap kali, hanya akan memasukkan variabel bind pada waktu rum. Jadi menjadi lebih cepat.

Keuntungan lain dari pernyataan siap adalah :-

1)perlindungan terhadap serangan injeksi SQL

2) Lebih cepat untuk panggilan berturut-turut dari pernyataan yang sama

Cara kerjanya :-

  1. Prakompilasi dilakukan oleh database. Beberapa database yang lebih sederhana tidak mengkompilasi pernyataan sama sekali. Orang lain mungkin melakukan prakompilasi pada panggilan prepareStatement, namun yang lain mungkin melakukannya saat eksekusi pertama kali dipanggil pada pernyataan, dengan mempertimbangkan nilai parameter saat mengkompilasi (membuat rencana untuk) pernyataan.

  2. Basis data yang melakukan prakompilasi pernyataan biasanya menyimpannya dalam cache, jadi kemungkinan besar ps1 tidak akan dikompilasi lagi. Beberapa driver JDBC (mis. Oracle) bahkan men-cache pernyataan yang disiapkan, jadi mereka belum benar-benar menutupnya saat ps.close() dipanggil.

  3. Basis data umumnya men-cache pernyataan sampai sesuatu mengeluarkannya dari cache.

Untuk detailnya, buka wiki ini tautan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan kolom berbeda dalam subquery bersarang di SQL?

  2. Masukkan data ke dalam database mysql jarak jauh dengan metode POST dari perangkat iOS

  3. Tidak dapat mengatur lower_case_table_names di MySQL 8.x di Windows 10

  4. Mac instal dan buka mysql menggunakan terminal

  5. Pisahkan nilai string yang dibatasi menjadi baris