On 17 Apr 2016, at 10:38am, Cecil Westerhof <cldwesterhof at gmail.com> wrote:

> I start with a:
>    ?
> 
> ?conn.setAutoCommit(false);
> but that is not the same?

Yes, that does the same as BEGIN ... END.  At least, according to the 
documentation it does.

But you caused me to look up how the JDBC works, especially for operations 
which involve a lot of memory.  It turns out that this is not a 'thin' shim 
which just translates Java calls to SQLite.  It's a 'thick' shim and does lots 
of things between the two to make all its databases look like they work the 
same way.

The result of this is that almost everything you see resulting from your calls 
is done by JDBC, not SQLite.  This includes whatever caused your initial query 
about some operations taking a long time.  Whatever it is, it's probably some 
consequence of how JDBC works, not how SQLite works, and experts on Java are 
going to understand it better than experts on SQLite.

You can probably verify this by downloading the SQLite shell tool and 
performing the same operations in it (e.g. DROP TABLE) as you do in your Java 
code.  I'm betting you don't get the same slowdowns in the same places.

Simon.

Reply via email to