[AccessD] notes on mdb bloat

Gustav Brock gustav at cactus.dk
Wed Mar 3 12:06:58 CST 2004


Hi Jim

>   My guess would be no.  Note that Garry mentions that it stays bloated
> until compact.  That doesn't make sense.  If the record locking algorithm
> can work after the database is compacted, then why would it have to bloat it
> in the first place?  It just doesn't make sense from that standpoint.

It could if you assume that - after compacting, when a record is opened
for editing - it will be copied as a new and saved while the old is
marked as deleted. But as you say, just guessing.

>   It does make sense though as to how they could achieve it with little
> problem, as they are just duplicating a technique that many developers used
> to get pseudo record level locking.  It would be a simple matter to change
> the add logic to always use an empty page (they in part had already done
> that for JET 3.5).

>   So there's another reason why it's probably not that; if it were that
> simple (one record per page), then why did we need a new version of JET?
> Seems like something they could have put in A95 or A97 quite easily.

Well, the implementation is slightly more complicated than bloating a
row to fill a page. If I understand the article(s), the revised Jet
engine maintains a flag which is set when any user requests row-level
locking which forces subsequent users also to use row-level locking
even if their default setting was for page-level locking.

>   With no docs, it's all guess work though.

Yes, true. However, experimenting with this while watching the mdb file
with an hex viewer/editor could tell a lot. I have neither the time
nor the need for this, though ...

/gustav



> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Gustav Brock
> Sent: Wednesday, March 03, 2004 12:11 PM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] notes on mdb bloat


> Hi all

> Does this - simplified - boil down to, that all row-level locking does
> compared to page-level locking is bloating a row to fill a page?

> /gustav


>> Hi Seth et all

>> In Garry Robinson's newsletter I noted this extremely interesting topic:


>> SINGLE RECORD LOCKING, BLOAT AND CITRIX BUGS

>> Did you know that the record-level locking option (menu
>> Tools~Options~Advanced) that is used by Access 2000 onwards has an
>> interesting twist. To achieve a single record lock, each record that
>> is locked uses up all of an Access page in the mdb file. This page of
>> data, most of which will probably be empty for records with only a few
>> fields, consumes 4000 bytes. This space is later recovered when the
>> database is compacted but if you have a database that seems to expand
>> fast, this could be your culprit. For more on this database bloat and
>> a possible cure for Access corruptions for Citrix head to this page.

>> http://ewbi.blogs.com/develops/2004/01/access_corrupti.html

>> and an other blog on the same topic
>> http://dbforums.com/arch/213/2002/10/551337

>> Gary is here:

>> http://www.vb123.com/

>> /gustav


>>> I hadn't even thought of that.  I tried it just now, and the resulting
>>> mdb is 1.5MB.  Still three times as big as the A97 version, but not as
>>> big as the base A2K version.

>>> The unicode comments make sense, I had forgotten about that, too.

>>> Oh well, more interesting info from the developer front...

>>> Seth

>>> On Wed, 2003-03-12 at 11:45, Gustav Brock wrote:
>>>> Hi Seth
>>>>
>>>> What happens if you "forward port" the A97 version to A2000?
>>>>
>>>> /gustav




More information about the AccessD mailing list