From: Jim Starkey Date: April 8 2009 10:07pm Subject: Blobs, earlyWrite, and All That List-Archive: http://lists.mysql.com/falcon/670 Message-Id: <49DD2012.9080607@nimbusdb.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Falcon handles small and large blobs differentially. Small blobs are handled about the same way as records, which is to say that they are written to the serial log and flushed to disk post commit. However, it doesn't make sense to write large blobs to the serial log since they can be written directly to disk (blobs never overwrite anything, so this is safe). The "earlyWrite" flag on Section::storeRecord is set for large blobs. Large blobs are initially stored like ordinary large records -- tail first -- as data overflow pages, except the pages are also posted the page writer so they can be written prior to commit. The pages themselves are not written to serial log, just the page numbers. The difference comes on the handling of the first data page. For blobs with the earlyWrite option, the first data page is logged with SRLBlobUpdate. In other words, large blob page numbers, but not the blobs themselves, are written to the serial log. The pages themselves are written by the page write. A commit, in turn, will wait for confirmation from page written that the pages are safely on disk. -- Jim Starkey President, NimbusDB, Inc. 978 526-1376