Giả sử truy vấn sau đây:Khi nào một truy vấn SELECT bắt đầu trả về các hàng?
SELECT * FROM table;
DBMS Sẽ cung cấp cho tôi những dòng đầu tiên ngay sau khi nó lấy nó hoặc sẽ nó lần đầu tiên lấy tất cả các hàng (lưu chúng trong một số loại đệm) và sau đó cung cấp cho tôi tất cả các hàng cùng một lúc?
Nếu câu hỏi của tôi không rõ ràng. Giả sử rằng số lượng hàng trong table
là như vậy mà DBMS sẽ mất chính xác 60 phút để lấy tất cả các hàng. DBMS sẽ trả về các hàng dần dần thông qua 60 phút, hoặc tôi sẽ phải chờ 60 phút trước khi nhận được bất kỳ dữ liệu nào không?
Hmmm ... thú vị. Thử nghiệm của bạn đã đề xuất điều gì? –
@AndrewMorton Thử nghiệm của tôi cho thấy rằng nó sử dụng một số loại bộ nhớ cache. Ngoài ra, tôi tin rằng nó sẽ dễ dàng hơn để xử lý các giao dịch với phương pháp tiếp cận bộ nhớ cache. Tuy nhiên, tôi đã thử nghiệm chỉ với 'psql' cho đến nay, vì vậy tôi không biết nếu hành vi là do' psql' hoặc do dbms. –
psql có hành vi giống như ứng dụng đơn giản điển hình. Nó dựa trên libpq, vì vậy libpq thu thập tất cả dữ liệu trong bộ nhớ ở phía máy khách và khi truy vấn hoàn tất, sau đó trả về điều khiển cho máy khách. Bạn có thể xác định lại nó để sử dụng con trỏ bằng cách đặt FETCH_COUNT thành 1000 (trả về cho khách sau khi tìm nạp 1000 hàng) - \ set FETCH_COUNT 1000 –