2010-10-29 6 views

Trả lời

3

poolPreparedBáo cáo là cài đặt cho nhóm kết nối JDBC Tomcat và cachePrepStmts là cài đặt cho Trình kết nối/J để thông báo cho MySQL về các câu lệnh chuẩn bị bộ nhớ cache. Hai điều hoàn toàn khác nhau. cachePrepStmts là một thiết lập kết nối, nhưng Connector/J không quan tâm đến việc nó kết nối với một pool kết nối cơ sở dữ liệu hay MySQL trực tiếp, nhưng cachePrepStmts hoạt động tốt nhất với các kết nối liên tục (ví dụ như các kết nối). Để sử dụng cachePrepStmts với một nhóm kết nối là cấu hình tối ưu. Sử dụng poolPreparedStatements trong Tomcat là để mở một hộp chứa các trình quản lý bộ nhớ (kiểm tra các tài liệu Tomcat cho thiết lập này và bạn sẽ thấy). Thực sự, tốt nhất là hãy để MySQL cache các câu lệnh đã chuẩn bị và để Tomcat kết nối các nhóm và không cố gắng để có một công việc của người khác.

+0

Vì vậy, bạn đang đề xuất rằng Trình kết nối/J sẽ thực hiện công việc tốt hơn DBCP để tổng hợp các câu lệnh đã chuẩn bị, đúng không? Ngoài ra, tôi thấy điều này gây nhầm lẫn: "Connector/J không quan tâm chính nó với việc nó kết nối với một hồ bơi kết nối cơ sở dữ liệu hoặc MySQL trực tiếp". Trình kết nối/J ở mức thấp hơn DBCP, vì vậy nó luôn kết nối trực tiếp với MySQL, phải không? – ykaganovich

+2

Không, MySQL sẽ thực hiện một công việc tốt hơn trong việc lưu trữ các câu lệnh chuẩn bị sẵn sàng hơn DBCP, vì vậy hãy đặt cờ cachePrepStmts trong các kết nối Connector/J của bạn và để nguyên câu lệnh chuẩn bị DBCP gộp lại một mình. Connector/J kết nối trực tiếp với các nhóm MySQL và DBCP một loạt các kết nối Connector/J. Tôi đoán nhận xét của tôi mà bạn trích dẫn đã bị cắt xén và bối rối. –