Christian, Ulrik,
Thanks for the very informative answer. I'll try VACUUM first.

  Uwe

On Tue, May 31, 2005 at 12:37:44PM +0100, Christian Smith wrote:
> On Tue, 31 May 2005, Uwe Steinmann wrote:
> 
> >Hi,
> >
> >I've created a sqlite database with about 140 MB filesize which is
> >going to be shipped on cdrom. The database is read by a java
> >application. I made some rought speed comparision between the database
> >being on cdrom and on hard disk. On startup a tree is filled
> >with data from two tables. When reading the data from disk it takes
> >about 5 sec., but reading it from cdrom it takes 100 sec. (the cdrom
> >is a less than 1 year old modell).
> 
> 
> If you access a CD-ROM in anyway other than sequentially, you will
> decimate performance due to the very high seek times of CD-ROMs. Hard
> disks use relatively fast voice coil actuators for head positioning,
> resulting in random seek times <4ms on high end SCSI disks, and <9ms on
> average new IDE disks. A CD-ROM has a random seek time in the order of
> 100ms, which would certainly account for the order of magnitude difference
> in performance you're seeing.
> 
> 
> >
> >I wonder if there is any way to speed up reading the data from cdrom.
> >One of my ideas is to change the way the database is created in order
> >to place data in a particular table in blocks near to each other.
> >Currently, all tables are filled in parallel, meaning that records
> >of a particular table are inserted during the whole database creation.
> >I suspect this leads to datablocks spilled over the whole file which
> >increases access time.
> 
> 
> Tips for performance in such circumstances might include:
> - VACUUM the database before putting on the CD image. This makes all
>   tables and indexes sequential in the database file.
> - When accessing more than a few rows of a table, disable indexed walking
>   of the table to prevent SQLite interveaving access between the index and
>   the table (thus inducing slow seeks from the CD-ROM.)
> - Create a temporary database in memory or in a temporary HD database, and
>   prime it from the CD-ROM image.
> 
> 
> If joining data from multiple tables, you may be lucky if you can join on
> a non-indexed columns, as SQLite may read in the whole table in one go and
> sort it in a temporary table before the join, but I'm not sure.
> 
> 
> >
> >Would it help to create one table at a time?
> 
> 
> Not really. VACUUM the database has the same effect.
> 
> 
> >
> >  Uwe
> >
> 
> 
> Christian
> 
> 
> -- 
>     /"\
>     \ /    ASCII RIBBON CAMPAIGN - AGAINST HTML MAIL
>      X                           - AGAINST MS ATTACHMENTS
>     / \

-- 
  MMK GmbH, Universitaetsstr. 11, 58097 Hagen
  [EMAIL PROTECTED]
  Tel: +2331 840446    Fax: +2331 843920

Attachment: signature.asc
Description: Digital signature

Reply via email to