On 4/6/06, Thom Ericson <[EMAIL PROTECTED]> wrote:
> I am trying to pick a light weight database for a project.  SQLite, on
> paper, seems like the right choice, but performance is rather
> disappointing.  I hope it is just that I am doing something wrong.
>
> I have built SQLite for Solaris and Win32 environments and I get
> essentially the same results.  As I started adding more rows to my
> single table the performance drops off (expected).  I start off getting
> about 500 inserts per second, but after 180,000 rows, the performance
> has dropped to around 3 inserts per second.  I had hoped to be able to
> handle 180,000,000 rows in my largest installation (that's gonna take a
> while).  The table is very simple:
>
> sqlite3 testdb << EOF
> CREATE TABLE xyz
> (
>     str TEXT KEY NOT NULL,
>     parent INTEGER KEY NOT NULL
> );
>
> The "str" column is typically 10 to 20 characters and the "parent"
> column is the ROWID of some pre-existing row in the table (except for
> the first row, where the parent is zero).  For each new row added to the
> table, there is, on average,  one select performed that produces the
> rowid of another entry given specific values for str and parent.  I
> enclose about 128 of these selects and insert within a
> "BEGIN;"/"COMMIT;" block which increased performance, but going to
> higher values does not seem to help much.
>
> With the Solaris installation, I don't see much disk activity (possibly
> all blocks are cached), on windows, I am seeing around 22,000 I/O Reads
> per second.

Did you put an index on the table/columns the select uses to lookup
the rowids of the parents?

Reply via email to