On 31 Jul 2014, at 1:41pm, Ketil Froyn <ke...@froyn.name> wrote:

> I find it would be
> very useful to log some or all queries sent to the database, ideally also
> with timing information on how long it took to gather and send the
> response, so that it can be determined what queries are received and how
> long each query actually takes.

This probably wouldn't get built into the standard SQLite library.  Bear in 
mind that of the literally billions of installations of SQLite, the vast 
majority are on smartphones, DVRs, set-top boxes, embedded controllers, or 
other small devices.  So adding code to SQLite is rarely done just for things 
which would be done only on 'normal' computers.

For the people who want it, it's easy to build a shell around the SQLite calls 
like this:

int pseudo_sqlite3_exec(commandString) {
        log commandString
        log start time
        int theResult = sqlite3_exec(commandString)
        log finish time
        return theResult
}

Log to a text file, and write a utility to analyse the text file later.

SQLite does, however, include calls which can be used to monitor changes made 
to the database:

<http://www.sqlite.org/capi3ref.html#sqlite3_update_hook>
<http://www.sqlite.org/capi3ref.html#sqlite3_commit_hook>

SQLite also includes a command specifically made for spotting badly-optimized 
combinations of commands and databases:

<http://www.sqlite.org/eqp.html>

You can feed any statement to this and /instead of executing it/ SQLite will 
list the steps it would take to execute it.  So you can use it for testing 
without having to worry that your database will be changed.  If the query plan 
for a commonly used command includes scanning a long table (rather that using 
an index, which is shown differently) you think about and rephrasing it or 
creating a good index for it.

You can even execute EXPLAIN QUERY PLAN in the SQLite shell tool, which outputs 
the results neatly, and means you don't have to hack up your own software just 
for testing purposes.

Simon.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to