Supponiamo la seguente query:Quando una query SELECT inizia a restituire righe?
SELECT * FROM table;
Saranno i DBMS darmi la prima fila non appena recuperato o sarà in primo luogo recuperare tutte le righe (salvarli in una sorta di tampone) e poi me tutto dare le file in una volta?
Se la mia domanda non era chiara. Supponiamo che la quantità di righe nello table
sia tale che il DBMS impiegherà esattamente 60 minuti per recuperare tutte le righe. Il DBMS restituirà le righe progressivamente durante i 60 minuti o dovrò attendere 60 minuti prima di ricevere dati?
Hmmm ... interessante. Cosa suggeriscono i tuoi test? –
@AndrewMorton Il mio test suggerisce che usi un qualche tipo di cache. Inoltre, credo che sarebbe più facile gestire le transazioni con l'approccio alla cache. Ma, ho provato solo con 'psql' finora, quindi non so se il comportamento è dovuto a' psql' oa causa dei dbms. –
psql ha lo stesso comportamento tipico dell'applicazione semplice. È basato su libpq, quindi libpq raccoglie tutti i dati in memoria sul lato client e quando la query è completa, restituisce il controllo al client. Puoi ridefinirlo usando cursori impostando FETCH_COUNT su 1000 (ritorna al client dopo aver raccolto 1000 righe) - \ set FETCH_COUNT 1000 –