2013-04-18 26 views
13

PS: Tôi đang xây dựng một ứng dụng nhỏ javafx back-kết thúc với nhỏ h2 cơ sở dữ liệu (5 bảng).

Trả lời

10

Từ câu trả lời của Jon Skeet để What is the benefit of Connection and Statement Pooling?:

Tạo một kết nối mạng đến một máy chủ cơ sở dữ liệu là (tương đối) tốn kém. Tương tự, yêu cầu máy chủ chuẩn bị một câu lệnh SQL là (tương đối) tốn kém.

Sử dụng một hồ bơi kết nối/tuyên bố, bạn có thể tái sử dụng các kết nối /báo cáo chuẩn bị hiện có, tránh chi phí bắt đầu một kết nối , phân tích cú pháp SQL, vv

Và sau đây, từ Kent Boogaart's answer:

Tôi không quen thuộc với c3p0, nhưng lợi ích của kết nối tổng hợp và báo cáo bao gồm:

  1. Hiệu suất. Kết nối với cơ sở dữ liệu là tốn kém và chậm. Kết nối gộp lại có thể được kết nối vật lý với cơ sở dữ liệu, và được chia sẻ giữa các thành phần khác nhau cần truy cập cơ sở dữ liệu. Bằng cách đó, chi phí kết nối được trả một lần và được phân bổ trên tất cả các thành phần tiêu thụ .

  2. Chẩn đoán. Nếu bạn có một hệ thống phụ chịu trách nhiệm kết nối với cơ sở dữ liệu, sẽ dễ dàng chẩn đoán và phân tích cơ sở dữ liệu sử dụng kết nối cơ sở dữ liệu .

  3. Tính bảo trì. Một lần nữa, nếu bạn có một hệ thống phụ chịu trách nhiệm bàn giao các kết nối cơ sở dữ liệu, mã của bạn sẽ dễ bảo trì hơn hơn nếu mỗi thành phần được kết nối với cơ sở dữ liệu.

+6

Ăn cắp từ đây: http: // stackoverflow.com/a/457305/19679 và tại đây: http://stackoverflow.com/a/457303/19679. Bạn thực sự thích lấy lời của Jon Skeet, phải không? –

1

kết nối Tạo là tốn kém và nó không có ý nghĩa để tạo ra một kết nối mới cho mỗi giao dịch mà chỉ có thể mất một vài mili giây. Quản lý các kết nối cơ sở dữ liệu trong một pool nghĩa là các ứng dụng có thể thực hiện các giao dịch cơ sở dữ liệu theo cách tránh thời gian tạo kết nối (Các kết nối vẫn cần được tạo, nhưng tất cả chúng đều được tạo khi khởi động). Nhược điểm là nếu tất cả các kết nối đang được sử dụng, và một kết nối khác là bắt buộc, luồng yêu cầu sẽ phải đợi cho đến khi kết nối được trả về hồ bơi.

Các vấn đề liên quan