Resolving In Place Alters – Part 3

In Resolving In Place Alters – Part 2 I decided that I want to try to identify only the pages with a pending IPA and only “fix” those data pages in an attempt to speed up the resolving of IPAs and limit the work load added to the system when doing so.

To do this, I will need to read the actual data pages stored on disk and use information in the page header and slot table to determine if a page needs to be fixed. More on this in the next blog, today I just want to talk about how to read in the raw data pages.

As far as I know, I only have 2 good options. Bypass the engine and open and read the data in the chunk directly or use the sysmaster:sysrawdsk table. I tried both options and did not notice a performance difference either way, so I decided to use sysrawdsk simply because it made things easier since I can use SQL to query and get the raw data pages.

sysmaster:sysrawdsk looks like this (for those concerned about the Internal Use Only warning, just don’t do any of this outside and you’ll be fine):

    create table informix.sysrawdsk             { Internal Use Only             }
(
pg_chunk integer, { physical page address - chunk }
pg_offset integer, { physical page address - offset}
offset smallint, { bytes into page }
loc char(23), { location representation }
hexdata char(40), { 16 bytes hexdumped from offset}
ascdata char(16) { 16 bytes ascii-dumped }
);
create unique index informix.sysrawdskidx on sysrawdsk (pg_chunk, pg_offset, offset);

Each row in the table represents 16 bytes of raw data. For example:

select 
he...

Auteur : noreply@blogger.com (Andrew Ford)

No comments yet.

Leave a Reply

%d bloggers like this: