From: Ann W. H. <aha...@ib...> - 2007-01-04 21:55:23
|
Leyne, Sean wrote: > > There are different types of pages which the engine tracks for a given > transaction -- some are data (data and index pages), some are structures > which the engine uses to track transaction status (i.e. TIP pages). > > Given this, it would seem reasonable that all the pages of a given > "type" could be written in a single Overlapped IO call. Maybe, but not quite. Page Inventory Pages always have to be written before a newly allocated page can be written, regardless of type. When creating a new Transaction Inventory page, the new TIP has to be written before the old one because the old one has a point to the new one. When a record has a back version off page, the page with the back version has to be written before the page with the new version. When an index page splits, the new page has to be written before the old page, or the new right sibling, or the parent page. If we did a single overlapped write of any of those and the system decided to reorder them and only some of the pages were written, the database would be corrupt. On the other hand, it should be safe to group a bunch of pages writes together, regardless of type, as long as none of them were involved in precedence relationships. Regards, Ann |