On 2/27/07, Gregory Stark <[EMAIL PROTECTED]> wrote:
I suggested a while back implementing torn page detection by writing a sequential number ever 512 bytes in the blocks. (I was talking about WAL at the time but the same principle applies.) Do it at the smgr layer using readv/writev and the upper layers need never know their data wasn't contiguous on disk. The only effect would be to shorten page sizes by 16 bytes which would be annoying but much less so than full_page_writes.
First, rather than using 16-bytes per page and having to deal with handling the non-contiguous space, why not just use a page-level checksum like everyone else? Most of the systems I've seen seem to employ a simple CRC16 or CRC32. Second, unless I'm missing something, I don't see how your algorithm is going to work as each 512 byte chunk of the block will *always* have the same sequential byte value. That is, unless you have some way of preventing wraparound at 255 without adding additional block overhead. Lastly, from a performance perspective, it's going to be faster to compute the entire page's checksum than it would be to check the sequence every 512 bytes and perform the space adjustment. -- Jonah H. Harris, Software Architect | phone: 732.331.1324 EnterpriseDB Corporation | fax: 732.331.1301 33 Wood Ave S, 3rd Floor | [EMAIL PROTECTED] Iselin, New Jersey 08830 | http://www.enterprisedb.com/ ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match