Tôi đã học về các câu lệnh chuẩn bị khi tạo một ứng dụng Java có hỗ trợ JDBC và ứng dụng của tôi sử dụng lớp kết nối kết nối đảm bảo với tôi rằng các câu lệnh đã chuẩn bị được lưu trữ phía máy chủ và điều này mang lại lợi ích hiệu suất.Các câu lệnh chuẩn bị được lưu trữ phía máy chủ có được tải trên nhiều trang với PHP không?
Tuy nhiên, với tất cả mọi thứ PHP tôi đã đọc nói rằng chúng chỉ được lưu trong bộ nhớ cache cho thời gian tải trang. Nói chung tôi không lặp lại cùng một truy vấn nhiều lần, nhưng chạy một số truy vấn khác nhau, trên một lần tải trang nhất định, nhưng sẽ lặp lại chúng trên nhiều lần tải trang.
Khi các quy trình PHP của tôi liên tục (nghĩa là chúng sẽ phục vụ hàng trăm trang trong vòng đời của chúng thay vì chỉ sử dụng PHP-FPM), tôi tự hỏi liệu chúng có sử dụng lại các kết nối cơ sở dữ liệu hay không. tắt cho mỗi lần truy cập.
- Việc sử dụng PHP-FPM với mysqli hoặc PDO có giữ kết nối lâu hơn một lần tải trang không?
- Nếu không, tôi có thể làm được không?
- Nếu có, hoặc tôi làm # 2, điều này sẽ tiếp tục lưu bộ nhớ cache của các câu lệnh đã chuẩn bị lâu hơn chỉ một lần tải trang không?
Edit:
Chỉ cần làm rõ, tôi không nói về bộ nhớ cache truy vấn, mà là con thú hoàn toàn khác, hoặc bộ nhớ đệm đầu ra của truy vấn. Tôi muốn cache câu lệnh đã chuẩn bị đã biên dịch và phía máy chủ kế hoạch thực hiện của nó.
Nếu tôi đang sử dụng postgresql, sẽ chuẩn bị một câu lệnh đã được chuẩn bị tự động truy cập vào câu lệnh đã được chuẩn bị trước đó, hoặc tôi sẽ phải thực hiện một số phép thuật để phát hiện xem câu lệnh đã được chuẩn bị chưa? Tôi sẽ sẵn sàng để chuyển từ MySQL cho việc này. – ZoFreX
Mã nhận diện câu lệnh bạn chuyển tới pq_prepare() phải là duy nhất cho mỗi kết nối. I E. nếu trường hợp thứ hai (hoặc Nth) của tập lệnh cố gắng chuẩn bị câu lệnh một lần nữa với cùng tên, một lỗi cụ thể sẽ xảy ra. Kịch bản lệnh của bạn có thể xử lý mã lỗi đó và giả sử rằng câu lệnh (phải) đã được chuẩn bị và sẵn sàng sử dụng. Nó vẫn còn một chút chi phí và bạn có thể muốn chuẩn cho hiệu ứng ròng mà bạn có thể mong đợi trước khi đầu tư quá nhiều tiền. – VolkerK