--- Scott Hess <[EMAIL PROTECTED]> wrote:

> Recently, various incremental vacuum features have been added, so you can do:
> 
>   -- Turn on incremental vacuum.
>   PRAGMA auto_vacuum = incremental;
> 
>   -- Release 100 pages from the freelist, or all if there are fewer.
>   PRAGMA incremental_vacuum(100);

Wouldn't it be more useful if specify the number of pages that
incremental_vacuum should _keep_ rather than release?  
This way you would not care how many free pages there are.

> 
>   -- Return the number of items on the freelist.
>   PRAGMA freelist_count;
> 
> Based on this, I find myself wondering if there could be something like:
> 
>   -- Vacuum up 10% of the freelist when it exceeds 20% of the total space.
>   PRAGMA auto_vacuum = incremental(20, 10);
> 
> The basic goal would be to leave some slack in the system so that free
> pages can be allocated nearby to related pages, but kick in with some
> cleanup when the amount of unused space exceeds a threshold.  A
> secondary goal is to not get too tied up with freelist-clearing - in
> the above, if half the pages were releases, then it would take four or
> five transactions to get the freelist back under control.

I like this idea. Maybe some sort of hint to have sqlite prefer to retain
free pages near certain tables or indexes would be useful.

> 
> One could do this manually if there were a PRAGMA returning the total
> number of pages.  Just wondering if there are plans to make it
> automagic.
> 
> Thanks,
> scott



       
____________________________________________________________________________________
Pinpoint customers who are looking for what you sell. 
http://searchmarketing.yahoo.com/

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

Reply via email to