2015-01-18 23 views

Trả lời

8

hồ kết nối không có bất cứ điều gì để làm với async vs sync - nó chỉ hoạt động như vậy:

  • Bạn có thể chỉ định một số lượng các kết nối mở để duy trì cơ sở dữ liệu của bạn (giả sử 10).
  • Mỗi khi mã Node JS của bạn tạo truy vấn, nếu có thể, nó sẽ sử dụng một trong 10 kết nối đã mở để thực hiện yêu cầu này - bằng cách này bạn có thể tránh được phí mở kết nối cơ sở dữ liệu mới cho mỗi truy vấn .

Duy trì hồ bơi kết nối về cơ bản là duy trì một mảng đối tượng kết nối db và chọn các đối tượng không sử dụng cho mọi truy vấn. Nó không thực sự ảnh hưởng đến chủ đề hoặc quy trình nào cả =)

+0

Không phải là một sự khác biệt quan trọng ở đây? Nếu nó đã được đồng bộ và đơn luồng. Sau đó, mặc dù bạn đã có N kết nối trong hồ bơi của bạn, bạn chỉ bao giờ sử dụng 1. Vì vậy, tôi giả định mongoose là lợi dụng tính chất async của nút. tức là một lệnh/truy vấn có thể đang chặn trong khi một lệnh khác đang truyền dữ liệu qua một kết nối khác? –

+0

đồng bộ hóa với async sẽ không quan trọng ở đây, vẫn sẽ có một sự chậm trễ chi phí lớn cho việc mở và đóng kết nối một lần-một-thời gian (ngay cả khi bạn đang làm điều đó không đồng bộ) - những gì bạn sẽ nhận thấy là truy vấn của bạn sẽ ngày càng chậm theo thời gian, vì bạn đang chi tiêu bộ nhớ cho các kết nối mở/đóng. – rdegges

+0

có thể được giải quyết bằng 1 kết nối liên tục mà bạn sử dụng lại .. không nhất thiết phải là một nhóm kết nối. –