Subject Re: Re[2]: [IB-Architect] Classic vs. superserver (long, very very long)
Author Ann W. Harrison
At 03:21 PM 10/13/2002 +0400, Nickolay Samofatov wrote:

>1. Both systems use filesystem transactionional journals and allow you to
>mark consistent state of data there.

I'm not at all sure what a file system transactional journal might
be. The problem that concerns me is the need to write pages in
a particular order to insure database transaction consistency and
the integrity of internal structures. If, for example, an index
entry is flushed but the corresponding data page is not, you've
got a corrupt database.

>They also allow you to precisely control cache flushing.

But they don't detect loops in the database page dependency graph,
which the Firebird cache does. If a page write will cause a loop,
the Firebird cache writes out the relevant pages. The file system
hasn't a clue about that sort of thing, and will write the pages
in what it considers a reasonable order - which may not be correct
for the database.

>2. If you bypass filesystem level by using raw devices you still can control
>hardware disk cache via ioctl.

No problem with raw disks - they respond nicely to requests to write
pages in a specific order.

>3. Anyway, modern SCSI controllers have large hardware caches and you'll
>[only] get corrupted database in case of power
>failure (built-in battaries or UPS'es are used to prevent this).

But, as you said earlier, "shit happens."


We have answers.