Załóżmy następującą kwerendę:Kiedy zapytanie SELECT zaczyna zwracać wiersze?
SELECT * FROM table;
będzie DBMS dać mi pierwszy wiersz tak szybko, jak to pobrane, czy będzie to pierwszy pobrać wszystkie wiersze (zapisywać je w jakimś buforze), a następnie dać mi wszystko wiersze naraz?
Jeśli moje pytanie nie było jasne. Załóżmy, że liczba wierszy w table
jest taka, że DBMS zajmie dokładnie 60 minut, aby pobrać wszystkie wiersze. Czy system DBMS zwróci wiersze progresywnie przez 60 minut, czy też będę musiał poczekać 60 minut przed otrzymaniem jakichkolwiek danych?
Hmmm ... interesujące. Co sugerowały twoje testy? –
@AndrewMorton Moje testy sugerują, że korzysta z pewnego rodzaju pamięci podręcznej. Sądzę też, że łatwiej byłoby obsługiwać transakcje z użyciem pamięci podręcznej. Ale do tej pory testowałem tylko z 'psql', więc nie wiem, czy zachowanie jest spowodowane' psql' lub z powodu dbms. –
psql ma takie samo zachowanie jak typowa prosta aplikacja. Jest on oparty na libpq, więc libpq zbiera wszystkie dane w pamięci po stronie klienta, a kiedy zapytanie jest kompletne, zwraca kontrolę do klienta. Możesz przedefiniować go za pomocą kursorów, ustawiając FETCH_COUNT na 1000 (zwraca klientowi po pobraniu 1000 wierszy) - \ set FETCH_COUNT 1000 –