W3C home > Mailing lists > Public > public-webapps@w3.org > January to March 2010

Re: [WebSQLDatabase] Adding a vacuum() call

From: Dumitru Daniliuc <dumi@chromium.org>
Date: Thu, 11 Mar 2010 19:32:52 -0800
Message-ID: <e753f47f1003111932u20e10ae2rf5cb026e1a8bb34@mail.gmail.com>
To: Joćo Eiras <joaoe@opera.com>
Cc: Jeremy Orlow <jorlow@google.com>, public-webapps <public-webapps@w3.org>
On Thu, Mar 11, 2010 at 7:17 PM, Joćo Eiras <joaoe@opera.com> wrote:

> On Fri, 12 Mar 2010 04:07:21 +0100, Dumitru Daniliuc <dumi@chromium.org>
> wrote:
>
>  joao,
>>
>> if i understand correctly, you basically want to have an automated system
>> implemented in the browser that decides when to vacuum databases (or at
>> least make sure it doesn't happen too often). and the vacuum() calls would
>> be just one of the parameters that the system takes into account. i think
>> having such a system is fine, but doesn't need to be spec'ed. at the same
>> time, i think it's worth having a spec'ed vacuum() call that gives the app
>> some guarantees. in particular, i would like the completionCallback to be
>> a
>> signal that the database is in a good shape and ready for more work. so
>> how
>> about this:
>>
>>
>>   1. if the UA doesn't support the vacuum() call, go to step 3.
>>   2. queue up a task to vacuum the database. if the UA decides that
>>
>>   vacuuming is not needed at this time, the vacuuming task scheduled in
>> this
>>   step could be a no-op.
>>   3. when the vacuuming task completes, queue up a task to invoke the
>>
>>   completion callback, if one was specified.
>>
>> i think this spec should allow you to treat the vacuum() call as a hint,
>> while also guaranteeing that:
>> 1. the UA believes the database is in a good shape when the completion
>> callback is called.
>> 2. the completion callback is called as soon as UA believes the DB is in a
>> good shape.
>>
>> what do you think?
>>
>
> Looks better, and more flexible.
>

thanks. is there anything else you'd like to change? i'm pushing for this so
hard because i'd like to implement this feature, but i don't want to start
before all interested parties agree on a spec.


> I wonder if sqlite has a way to query the number of pages in the freelist ?
> Probably something like 10% of pages in the freelist would be a good
> threshold to allow a vacuum.
>

you can get the number of free pages with PRAGMA freelist_count (
http://www.sqlite.org/pragma.html). unfortunately, looking only at this
number would result in a lot of false negatives. for example, in theory, you
could have a DB with 1000 2KB pages, and each page could have only one
useful byte written on it. so PRAGMA freelist_count would return 0, even
though doing a vacuuming would shrink your DB from ~2MB to ~1KB. but i agree
that it could be one of the parameters to take into account.
Received on Friday, 12 March 2010 03:33:23 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:37 GMT