On Wed, Oct 15, 2008 at 01:38:16PM -0500, David Clark scratched on the wall:
> Ok I want to convert a large application which uses ad-hoc data 
> structures and file formats to a sqlite database.  But before I do that
> I am working on a proof of concept test to show that yea it will work 
> once conversion is done.
> 
> But alas my first test is failing miserably.  Well, it works it just 
> takes way too long.  Like at least all night.
> I create table tbl2
>                      f1 varchar(30)
>                      f2 varchar(30)
>                      f3 varchar(30)
>                      identity integer primary index autoincrement
> 
> That works I have the table.
> I go to insert into with
> insert into tbl2 values ("00000001", "00000001", "00000001", NULL);
> 
> insert into tbl2 values ("00000002", "00000002", "00000002", NULL);
> 
> Ok I did each insert as separate query using the 5 minute example and 
> it took all night and never did complete.

  You need to wrap them up in a transaction.



  Also, if you want to store integers, store integers.  SQLite allows
  the same column to store records of different types.

  Also, string-literals in SQL use single quotes.

> So then I decided...ok the fsync() for serialization is the problem.
> 
> So I looked at limits.html and make a single query out of as many as 
> would fit in a 1000000 byte buffer.  That turned out to be
> 15625 inserts.  That should be one fsync per query so should be much 
> faster...but alas I don't think it is.

  That won't process them as one statement.  Even if you pass them into
  SQLite as a big command buffer, they're still processed one at a
  time.

  Issue the command "BEGIN", do 100 to 10000 INSERTs, issue a "COMMIT".
  You should see a very noticeable difference in speed.

> My second test would be a random query into this large table to see 
> how long that took.  Then random queries from a large
> number of threads.  Get a query time under 1 second for pulling up a 
> record...and this product is so in my application.

  Depending on your query needs, you might need to look into indexes.

   -j

-- 
Jay A. Kreibich < J A Y  @  K R E I B I.C H >

"Our opponent is an alien starship packed with atomic bombs.  We have
 a protractor."   "I'll go home and see if I can scrounge up a ruler
 and a piece of string."  --from Anathem by Neal Stephenson
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to