> create table filemap(id integer primary key,
>    uid integer, gid integer, mtime integer,
>    vol integer,
>    path varchar(1024));
> 
> It has no indices built yet.
> 
> I'm adding quite a lot of records to it using a perl script which  
> generates SQL like this:
> 
> begin;
>   insert into filemap values(null, 1, 1, 1111, 0, "/path/to/file");
>   ... 9999 more like this ...
> commit;
> ... repeat above ...
> 
> The uid, gid and mtime fields vary obviously, but there are very many  
> paths for each uid/gid pair.  The idea is that I need to be able to  
> say `show me all the files owned by UID x on volume y?', and we have  
> enough data that awk can't hack it.
> 
> before doing this I've done a
> 
> pragma synchronous=off;
> 
> All this is just being piped into sqlite3 (I know I should use the  
> proper interface, but it's a very quick & dirty hack).
> 
> I have about 16,000,000 records.  When adding them it goes really  
> quickly for about the first 1,000,000 (using the big transaction  
> trick made it much faster, as did the synchronous=off thing).  But  
> then it slows down dramatically, perhaps by a factor of 100 or 1000  
> or something.  I've actually left it running, but I'm not convinced  
> it will have done all 16 million by Monday.
> 
> I have not looked at what the program is doing in the sense of system  
> calls or any more detailed profiling.  It is clear that disk activity  
> falls right off when it becomes slow.
> 
> Am I doing anything obviously stupid here?  I suspect I must be.

The batch insert you describe ought to be pretty fast since you're only
appending data.

This is a guess - instead of inserting NULL for the INTEGER PRIMARY KEY 
column try assigning an increasing number for each new row.
This would avoid an OP_NewRowid per insert, which I would not think to
be slow, but it's worth trying.

You might also experiment with the sqlite3 import facility which should be
slightly faster.

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to