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