ic-rusqlite 0.3.1

The project provides easy-to-use library to enable SQLite in your Internet Computer canister.
# Pragma settings

Following [pragma](https://sqlite.org/pragma.html) settings are set in `ic-rusqlite` by default:

*[journal_mode](https://sqlite.org/pragma.html#pragma_journal_mode)*
    - `PERSIST`
    - persist journal file (is faster than deleting the file every time). Setting it to `OFF` works even faster, but [disallows atomic COMMIT/ROLLBACK](https://sqlite.org/pragma.html#pragma_journal_mode).

*[synchronous](https://sqlite.org/pragma.html#synchronous)*
    - `OFF`
    - because writes are always written and not cached, we do not need to explicity "flush" data changes to the disk.

*[page_size](https://sqlite.org/pragma.html#page_size)*
    - `4096`
    - bigger page size works a bit faster by reduring sequential writes. The performance degrades, however, if there are many small writes at random locations.

*[locking_mode](https://sqlite.org/pragma.html#locking_mode)*          
    - `EXCLUSIVE`    
    - exclusive mode is faster because we only lock the database once (the canister is the only user of the database).

*[temp_store](https://sqlite.org/pragma.html#temp_store)*
    - `MEMORY`       
    - avoids creating temporary file on disk, saves extra I/O operations.

*[cache_size](https://sqlite.org/pragma.html#cache_size)*
    - `500000`
    - set cache size to 4096 * 500000 bytes, this gives a significant performance boost at the expence of the canister's memory used.


The pragma settings can be adjusted with SQL queries, you might want to do that during the `init` or the `post_upgrade` events:

```sql
    PRAGMA cache_size=1000; -- Reduce the maximum DB cache size
```