2010-09-22 35 views
6

Trang web của tôi luôn sử dụng các kết nối liên tục, dựa trên sự hiểu biết của tôi về chúng không có lý do gì để không. Tại sao đóng kết nối khi nó có thể được tái sử dụng? Tôi có một trang web mà trong tổng số truy cập khoảng 7 cơ sở dữ liệu. Nó không phải là một trang web lưu lượng truy cập lớn, nhưng nó đủ lớn. Bạn nên sử dụng những gì liên tục, tôi có nên sử dụng chúng không?Liên tục và không liên tục - Tôi nên sử dụng loại nào?

Trả lời

9

Với kết nối liên tục:

  • Bạn không thể xây dựng xử lý giao dịch một cách hiệu quả
  • phiên người dùng không thể trên cùng một kết nối
  • ứng dụng không thể mở rộng. Với thời gian bạn có thể cần mở rộng và yêu cầu quản lý/theo dõi các kết nối liên tục
  • nếu tập lệnh vì bất kỳ lý do gì, không thể giải phóng khóa trên bảng, thì bất kỳ tập lệnh nào sau đây sẽ chặn vô thời hạn và một tập lệnh sẽ khởi động lại máy chủ db. Sử dụng giao dịch, khối giao dịch cũng sẽ chuyển sang tập lệnh tiếp theo (sử dụng cùng một kết nối) nếu thực thi tập lệnh kết thúc trước khi khối giao dịch hoàn tất, v.v.

Kết nối liên tục không mang lại bất kỳ điều gì bạn có thể thực hiện với kết nối không liên tục .
Sau đó, tại sao lại sử dụng chúng?
Lý do duy nhất có thể là hiệu suất, sử dụng chúng khi chi phí tạo liên kết tới Máy chủ SQL của bạn cao. Và điều này phụ thuộc vào nhiều yếu tố như:

  • cơ sở dữ liệu kiểu
  • liệu MySQL Server là trên cùng một máy, và nếu không, bao xa? có thể nằm ngoài mạng/miền địa phương của bạn?
  • bao nhiêu quá tải bởi các quá trình khác máy mà MySQL ngồi

Một luôn có thể thay thế kết nối liên tục với các kết nối không liên tục. Nó có thể thay đổi hiệu suất của kịch bản, nhưng không phải là hành vi của nó!

RDMS thương mại có thể được cấp phép bởi số lượng kết nối được mở đồng thời và kết nối liên tục có thể bỏ lỡ

+0

+1 để biết thông tin về MySql không được sử dụng cho mục đích thương mại. Tôi tự hỏi có bao nhiêu người không nhận ra điều này. Mặc dù, một thanh toán cho giấy phép là khá rẻ. – NotMe

+0

crap Tôi không biết rằng ... Tôi sẽ phải nhìn vào đó, cảm ơn. – Webnet

+0

Có cách nào tôi có thể theo dõi chi phí của việc thiết lập/đóng kết nối không? Tôi nhận được lỗi liên quan đến quá nhiều kết nối vì vậy tôi tự hỏi nếu liên tục là một phần của vấn đề. Khi bạn nói các giao dịch bạn có ý nghĩa gì, chỉ cần truy vấn? – Webnet

1

Kiến thức của tôi về khu vực này rất hạn chế nên tôi không thể cung cấp cho bạn nhiều chi tiết về chủ đề, nhưng theo như tôi biết, quá trình tạo kết nối và đưa chúng đến một chủ đề thực sự tốn chi phí, vì vậy tôi sẽ tránh nó nếu tôi là bạn. Dù sao thì tôi nghĩ rằng hầu hết các quyết định này không thể được khái quát hóa và phụ thuộc vào doanh nghiệp.

Nếu, ví dụ, ứng dụng của bạn giao tiếp liên tục với cơ sở dữ liệu và sẽ chỉ dừng lại khi ứng dụng được đóng lại, có thể kết nối liên tục là cách để đi, vì bạn tránh quá trình được đề cập trước đó. Tuy nhiên, nếu ứng dụng của bạn chỉ giao tiếp với Cơ sở dữ liệu một cách không thường xuyên để có thông tin nhỏ thì việc đóng kết nối có thể trở nên lành mạnh hơn, vì bạn sẽ không lãng phí tài nguyên trên các kết nối đang mở không được sử dụng.

Ngoài ra còn có một kỹ thuật gọi là "Kết nối tổng hợp", trong đó bạn tạo một chuỗi các kết nối ưu tiên và giữ chúng ở đó để các ứng dụng khác tiêu thụ. Trong trường hợp này, các kết nối liên tục đến cơ sở dữ liệu nhưng không liên tục với các ứng dụng.

Lưu ý: Các kết nối trong MSSQL luôn liên tục với cơ sở dữ liệu vì kết nối tổng hợp là hành vi mặc định.

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