2014-09-26 9 views
16

Come descritto in SQLite Documentation si potrebbe usare:Tempo di esecuzione di una query SQLite: Unità

sqlite> .timer ON 

o aggiungere lo stesso comando a ~/.sqliterc

Quando questo è fatto, il guscio SQLite risponde con utente e sys componenti del tempo di CPU per ogni query eseguita:

[email protected]% sqlite3 test.db 
-- Loading resources from ~/.sqliterc 

SQLite version 3.7.14 2012-09-03 15:42:36 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 

sqlite> select count(*) from my_table; 
count(*) 
10143270 
CPU Time: user 0.199970 sys 1.060838 

Mentre ho trovato this answer fornire la prova per le unità di tempo che sono in secondi, io sto avendo ah tempo ardente concordare con esso. Quando cronometrano l'esecuzione di una query utilizzando un cronometro, trovo che quasi tutte le query richiedano più tempo di quello che impiega la shell. Ad esempio, la query temporizzata nell'esempio precedente ha approssimativamente preso un po 'più di 1 minuto e 54 secondi in tempo reale. Qual è la ragione di questa discrepanza?

Quindi, ancora una volta, quali sono le unità? Cosa sono i componenti utente e sys?

Sono in esecuzione SQLite 3.7.14 su un 6.0.6 (squeeze) distribuzione Debian GNU/Linux accessibili su NFS.

risposta

15

user è il tempo impiegato dalla CPU per l'esecuzione del codice nello spazio utente (ad esempio, nel database stesso); sys è per codice nel kernel.

Quando si esegue l'I/O, la CPU trascorre la maggior parte del tempo in attesa.

sufficientemente recenti versioni di SQLite mostrano anche il tempo reale trascorso:

SQLite version 3.8.6 2014-08-15 11:46:33 
Enter ".help" for usage hints. 
Connected to a transient in-memory database. 
Use ".open FILENAME" to reopen on a persistent database. 
sqlite> .timer on 
sqlite> UPDATE ...; 
Run Time: real 36.591 user 17.362911 sys 1.809612 
+0

Così il tempo effettivo necessario per recuperare i dati dal db sarà tempo sys? – theLearner

+0

@Akshay Dipende da cosa intendi con "reale". –

+0

Per reale intendo il tempo impiegato per recuperare i dati da db. Immagino che nel tempo di esecuzione sia incluso anche il tempo di stampare dta su console. – theLearner

Problemi correlati