Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Điều đó có nghĩa là gì khi tôi nói Câu lệnh chuẩn bị được biên dịch trước?

Khi bạn sử dụng câu lệnh chuẩn bị sẵn (tức là câu lệnh được biên dịch trước), Ngay khi DB nhận được câu lệnh này, nó sẽ biên dịch nó và lưu vào bộ nhớ cache để nó có thể sử dụng câu lệnh đã biên dịch cuối cùng cho lần gọi liên tiếp của cùng một câu lệnh. Vì vậy, nó sẽ được biên dịch trước cho các cuộc gọi kế tiếp.

Bạn thường sử dụng câu lệnh đã chuẩn bị sẵn với các biến ràng buộc nơi bạn cung cấp các biến tại thời điểm chạy. Bây giờ điều gì sẽ xảy ra khi thực hiện liên tiếp các câu lệnh đã chuẩn bị, bạn có thể cung cấp các biến khác với các lệnh gọi trước đó. Theo quan điểm của DB, nó không phải biên dịch câu lệnh mỗi lần, sẽ chỉ chèn các biến liên kết tại thời điểm rum. Vì vậy, trở nên nhanh hơn.

Các ưu điểm khác của báo cáo soạn sẵn là:-

1) bảo vệ chống lại cuộc tấn công SQL-injection

2) Nhanh hơn cho các cuộc gọi liên tiếp của các câu lệnh giống nhau

Cách thức hoạt động:-

  1. Biên dịch trước được thực hiện bởi cơ sở dữ liệu. Một số cơ sở dữ liệu đơn giản hơn hoàn toàn không biên dịch trước các câu lệnh. Những người khác có thể biên dịch trước nó trên lệnh gọi readyStatement, nhưng những người khác có thể làm điều đó khi lệnh thực thi được gọi lần đầu tiên trên câu lệnh, tính đến giá trị của các tham số khi biên dịch (tạo kế hoạch cho) câu lệnh.

  2. Cơ sở dữ liệu thực hiện các câu lệnh biên dịch trước thường lưu vào bộ nhớ cache, vì vậy trong tất cả các khả năng ps1 sẽ không được biên dịch lại. Một số trình điều khiển JDBC (ví dụ:của Oracle) thậm chí còn lưu vào bộ nhớ cache các câu lệnh đã chuẩn bị sẵn, vì vậy chúng chưa thực sự đóng nó khi ps.close () được gọi.

  3. Cơ sở dữ liệu thường lưu trữ các câu lệnh cho đến khi có thứ gì đó loại bỏ chúng khỏi bộ nhớ cache.

Để biết chi tiết, hãy truy cập vào wiki này liên kết



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Codeigniter ActiveRecord:tham gia backticking

  2. Cách nhập / khôi phục bảng MySql bằng PHP

  3. Cách kết nối MySQL với chương trình Java

  4. Làm thế nào để bao gồm lược đồ cơ sở dữ liệu MySQL trên GitHub?

  5. Chồng chéo Truy vấn Đặt chỗ