Có, tôi nghĩ điều quan trọng là phải ngắt kết nối của bạn thay vì để nó mở hoặc cho phép bộ thu gom rác cuối cùng xử lý nó. Có một số lý do tại sao bạn nên làm điều này và dưới đây tôi sẽ mô tả phương pháp tốt nhất để thực hiện Show TẠI SAO Vì vậy, bạn đã mở một kết nối tới cơ sở dữ liệu và gửi một số dữ liệu qua lại dọc theo đường dẫn này và hiện có kết quả mà bạn đang tìm kiếm. Lý tưởng nhất là tại thời điểm này, bạn làm điều gì đó khác với dữ liệu và kết quả cuối cùng của ứng dụng của bạn đã đạt được Sau khi bạn có dữ liệu từ cơ sở dữ liệu, bạn không cần nó nữa, phần này đã hoàn thành nên việc để kết nối mở không làm gì khác ngoài việc giữ bộ nhớ và tăng số lượng kết nối mà cơ sở dữ liệu và ứng dụng của bạn phải theo dõi và
Được rồi, không vấn đề gì, hãy mở kết nối, thực hiện các cuộc gọi của bạn rồi đóng lại. Việc mở một kết nối tới cơ sở dữ liệu trong một ứng dụng "hiện đại" sẽ không tiêu tốn của bạn một lượng thời gian/công suất tính toán đáng kể, trong khi việc đóng kết nối một cách rõ ràng không giúp được gì ngoài việc giúp ích (giải phóng bộ nhớ, giảm số lượng kết nối hiện tại của bạn) Vì vậy, đó là lý do tại sao, đây là cách LÀM SAO Vì vậy, tùy thuộc vào cách bạn đang kết nối với cơ sở dữ liệu MySQL của mình, có thể bạn đang sử dụng một đối tượng IDisposible để giúp quản lý kết nối. Đây là những gì MSDN nói về việc sử dụng IDisposable
Đây là quan điểm cá nhân của tôi về chủ đề này
Nói tóm lại, tôi nghĩ điều quan trọng là phải đóng các kết nối đúng cách, tốt nhất là sử dụng phương thức câu lệnh loại Như đã chỉ ra trong các nhận xét, đây cũng là một câu hỏi/câu trả lời rất hay tương tự như câu hỏi của bạn. Tại sao luôn đóng kết nối Cơ sở dữ liệu? Không. Đừng đóng kết nối. Hãy để PHP làm điều đó cho bạn. Điều gì xảy ra nếu bạn cần lấy thêm dữ liệu? . Cũng có thể giữ kết nối mở và làm mọi thứ bạn cần hoặc muốn. Hãy để PHP tự đóng nó và hoàn thành nó. Bạn lãng phí thời gian và tài nguyên mỗi khi mở và đóng các kết nối chỉ để thực hiện một truy vấn chung chung đơn giản Đó chính xác là những gì tôi đã làm trong những năm qua. Tôi mở truy vấn chạy kết nối và để kết thúc thực thi tập lệnh và đóng kết nối. Hôm nay chúng tôi vừa có một cuộc thảo luận với các đồng nghiệp của tôi về chủ đề này. Họ nói rằng bạn nên đóng kết nối trước khi tập lệnh kết thúc luôn khi bạn không cần chạy truy vấn nữa. Ngoài ra, các ví dụ thủ công PHP dường như đề xuất đóng các kết nối Và khi tôi nói “đóng kết nối”, ý tôi không phải là bạn mở-đóng và mở lại-đóng lại kết nối cho truy vấn tiếp theo. Điều tôi sẽ làm nếu đóng kết nối là chạy tất cả truy vấn trước, đóng kết nối rồi xử lý dữ liệu được trả về từ truy vấn. Vì vậy, sẽ chỉ có một chu kỳ kết nối mở-đóng Thông thường việc thực thi tập lệnh không mất nhiều thời gian. Hãy tưởng tượng chúng ta có một kịch bản trong đó chúng ta phải chạy nhiều tập lệnh trong cron mất nhiều thời gian. Tất cả các công việc định kỳ này sẽ dự trữ kết nối trong một khoảng thời gian. Ngoài ra, nếu chúng tôi có một lượng lớn người dùng đồng thời sử dụng cùng một nhóm kết nối. Điều này khiến có thể vượt quá số kết nối tối đa và một số người dùng không thể sử dụng dịch vụ Cũng có một giải pháp cho vấn đề đó, chỉ cần tăng giới hạn kết nối tối đa, mặt khác, điều này sẽ chiếm nhiều tài nguyên hơn. Và ý kiến của tôi là tài nguyên ngày nay không đắt. Việc bổ sung thêm xử lý phần cứng trên VM ngày nay khá dễ dàng và rẻ tiền Tôi mở chủ đề này để nghe các ý kiến và thói quen của các đồng nghiệp khác trong cộng đồng về cách bạn xử lý các kết nối cơ sở dữ liệu khi bạn viết mã. Ngoài ra, tôi đã thử google và các ý kiến khá khác nhau. Một số người thích đóng các kết nối một cách nghiêm ngặt trước khi quá trình thực thi tập lệnh kết thúc và một số người chỉ nói rằng cuối cùng hãy để tập lệnh thực hiện Bạn có nên đóng kết nối MySQL sau mỗi truy vấn không?Sẽ không có gì xấu xảy ra . Nhưng nếu bạn liên tục mở/đóng kết nối, bạn đang thực hiện bắt tay TCP, buộc HĐH phải phân bổ bộ mô tả tệp và CPU phải làm nhiều việc hơn vì HĐH liên tục tạo một luồng mới cho mỗi kết nối bạn tạo/hủy. Điều đó vô cùng lãng phí.
Điều gì xảy ra nếu bạn không đóng kết nối MySQL?nếu bạn không bao giờ đóng kết nối của mình với DB thì mã của bạn sẽ không bao giờ giải phóng tài nguyên, cuối cùng DB không thể theo kịp và bị quá tải và gặp sự cố.
Có cần thiết phải đóng kết nối cơ sở dữ liệu?Dựa vào bộ sưu tập rác, đặc biệt là trong lập trình cơ sở dữ liệu, là một cách lập trình rất kém. Bạn nên tạo thói quen luôn đóng kết nối bằng phương thức close() được liên kết với đối tượng kết nối . Để đảm bảo rằng kết nối đã được đóng, bạn có thể cung cấp khối 'cuối cùng' trong mã của mình.
Điều gì xảy ra nếu tôi không đóng kết nối cơ sở dữ liệu?Nếu bạn không đóng nó, nó sẽ rò rỉ và liên kết tài nguyên máy chủ . @EJP Bản thân kết nối có thể an toàn theo luồng (do JDBC yêu cầu), nhưng các ứng dụng sử dụng kết nối có thể không an toàn theo luồng. Hãy nghĩ về những thứ như cách ly giao dịch khác nhau, ranh giới (cam kết/rollback/autocommit), v.v. |