Subject Re[2]: [Firebird-Architect] blobs causes table fragmentation.
Author Dmitry Kuzmenko
Hello, Ann!

Monday, October 4, 2004, 6:39:18 PM, you wrote:

>>As I understand current behavior, blobs less than 256 bytes are
>>stored at the same data page, in record.

AWH> That's not correct. Any blob that will fit on a data page is
AWH> stored on a data page, preferably the page with the record,
AWH> assuming it has space. There's no hard coded limit.

This is bad, and I think I'm right suggesting this feature.

AWH> Storing small blobs on page with the record reduces I/O if the
AWH> blob data is referenced -- and small blobs are more likely to be
AWH> referenced than large blobs.

Client components don't differ is this large blob or not.
Remembering BDE, using SELECT * FROM TABLE (it's way to hell,
of course) loads all blobs in that table to cache.
So, it depends on client components/driver - it load all blobs
into cache or doesn't load any blobs at all.

>>There are some systems that store blobs with different size,
>>so blob data is spreaded between data and blob pages.
>>This makes table more "fragmented" and seriously slowdown
>>record retrieval if 'select' does not selects blob fields.

AWH> Do you have any evidence of that? Other than a hypothesis
AWH> based on a (questionable) understanding of the implementation?

I had when this idea came during Yaffil tests. Right now I don't
have test case, sorry.

AWH> based on a (questionable) understanding of the implementation?

Why not? SQZ_block in yaffil was made on the same basis. It was
made (very little code changes), tested, and produced good results.

Dmitri Kouzmenko