I have a test set up to write rows to a database.
Each transaction inserts 10,000 rows, no updates.
Each step takes a linear time longer then the last.
The first ten steps took the following amount of time in ms to perform a commit

568, 772, 942, 1247, 1717, 1906, 2268, 2797, 2922, 3816, 3945

By the time it reaches adding 10,00 rows to a table of 500,000 rows, it takes 37149 ms to commit!

* I have no foreign key constraints.
* I have found using WAL, improves performance (gives figures above), but still linear degradation
* PRAGMA Synchronous=OFF has no effect
* PRAGMA locking\_mode=EXCLUSIVE has no effect
* Ran with no additional indexes and additional indexes. Made a roughly constant time difference, so was still a linear degradation.

Some other settings I have

* setAutocommit(false)
* PRAGMA page\_size = 4096
* PRAGMA journal\_size\_limit = 104857600
* PRAGMA count\_changes = OFF
* PRAGMA cache\_size = 10000
* Schema has Id INTEGER PRIMARY KEY ASC, insertion of which is incremental and generated by Sqlite

Full Schema as follows (I have run both with and without indexes, but have included)

```
create table if not exists [EventLog] (
Id INTEGER PRIMARY KEY ASC, 
DocumentId TEXT NOT NULL, 
Event TEXT NOT NULL, 
Content TEXT NOT NULL, 
TransactionId TEXT NOT NULL, 
Date INTEGER NOT NULL, 
User TEXT NOT NULL)

create index if not exists DocumentId ON EventLog (DocumentId)

create index if not exists TransactionId ON EventLog (TransactionId)

create index if not exists Date ON EventLog (Date)

```

This is using sqlite-jdbc-3.7.2 running in a windows environment