2016-10-30 5 views
0

Ich möchte die Abfrage Ausführungszeit (nicht mit. Timer ein)
Ich möchte die einzelnen SQL-Anweisung Ausführungszeit messen.
Ich denke, ich kann die Gettimeofday-Funktion verwenden.
Aber ich kann nicht wissen, was ist der "Start/Ende" -Punkt jeder SQL-Abfrage.So messen Sie die Ausführungszeit jeder SQL-Anweisung in SQLite

In Shorts,
- Was ist der Start-/Endpunkt während der Ausführung der Abfrage
- Wie kann ich die jede Abfrageausführungszeit messen? (Keine Verwendung der Timer-Option)

+0

Sie greifen auf die Datenbank von der 'sqlite3' Kommandozeilen-Shell oder von Ihrem eigenen Programm zu? –

Antwort

2

Wenn Sie OS X verwenden, empfehle ich Ihnen, Zeit (über die Befehlszeile in Terminal) zu verwenden, um die Ausführungszeit der Abfrage zu messen. Es ist bei weitem der einfachste Weg:

time printf "<your query>;" | sqlite3 databaseFile.db > /dev/null 

Beispiel:

time printf "select * from blame;" | sqlite3 mydata.db > /dev/null 

real 0m1.603s 
user 0m1.167s 
sys  0m0.112s 

der Befehl funktioniert auch unter Linux. Wir leiten die Ausgabe an/dev/null, um Zeitverlust durch das Speichern/Drucken der Ausgabe zu vermeiden.

Es gibt einige Gemeinkosten beim Öffnen der Datenbankverbindung und beim Laden der ausführbaren Datei, aber es gibt Ihnen eine gute Vorstellung davon, wie teuer (in Bezug auf die Zeit) Ihre Anfrage ist.

Sie können eine Vorstellung von diesem Aufwand erhalten, indem so etwas wie dies zu tun:

time printf ".schema" | sqlite3 mydata.db > /dev/null 

Wenn Sie ein besseres Verständnis dafür zu bekommen, was los ist, empfehle ich Ihnen das erklären Befehl zu suchen. In sqlite3 tun:

explain select * from table; 

und Sie werden eine vollständige Erklärung der Operationen SQLite erwartet zu tun, um zu berechnen, eine Abfrage zu bekommen.

Verwandte Themen