Exchange transactions - I'm confused!
- From: "Mark (News)" <news@xxxxxxxxxxxxxxxxxx>
- Date: 19 Dec 2005 05:17:19 -0800
Based on some E2003 DR experimentation, I'm having some confusion as to
what happens when the transaction logs are spontaneously lost in a live
database (e.g. disk controller failure). I'm assuming that:
1. Transactions happen in memory and the transactions are immediately
logged in the transaction logs sequentially.
2. The changed pages remain cached in memory.
3. When the server is "idle", the pages are commited to the database
_from memory_ (unless the database gets too far behind in which case
the transaction logs have to be read?). The checkpoint file records
which transactions were committed.
4. The open database is permamently marked dirty unless it undergoes a
clean shutdown.
5. After transactions are commited, the jet database integrity is
intact (i.e. no bad jet links and so on).
Question 1: (this is more idle curiosity than affecting the main thrust
of my questions below): does Exchange literally commit the transactions
in the order they happened, or does it simply dump all the dirty pages
currently in memory without regard to the individual transactions
themselves?
When testing, what I've noticed is that if I spontaneously destroy the
logs (but leave the database and checkpoint file available) on a low
load server, the database shuts down leaving it with numerous bad links
between the jet pages (I'm assuming it goes into panic mode!). I'm not
simply talking here about the dirty flag in the header, I'm talking
about the actual integrity of the database itself. I find this puzzling
behaviour because even if the logs are lost, the transactions are still
present in memory and so I can't see a reason why those transactions
can't be committed from memory just before the database is dismounted
leaving the database integrity intact. (Again, I'm not talking here
about the clean / dirty flag in the header - I'd expect that flag still
to say "dirty".) So...
Question 2: In the event of loss of transactions, why does Exchange not
commit the transactions just before bailing out? (OK, on a heavy load
where it's got so far behind the transactions that the uncommitted
transactions are no longer in memory, I can understand, but I'm talking
here about a low load server.)
A consequence of this is that even if all the best practices are
followed, Exchange can still end up corrupted (requiring an eseutil /p
and so on) with consequent loss of data and of course restoring from
last nights backup can lose a whole day's data. Or have I misunderstood
something fundamental?
TIA
Mark
.
- Follow-Ups:
- Re: Exchange transactions - I'm confused!
- From: Mark (News)
- Re: Exchange transactions - I'm confused!
- Prev by Date: Re: need exchange email help.
- Next by Date: Re: DN$ Errz - [WILDPACKET]
- Previous by thread: Intelligent Mail filtering
- Next by thread: Re: Exchange transactions - I'm confused!
- Index(es):
Relevant Pages
|