Hi.
The memory pointer for blobs is an in-memory representation for record that is in works currently. In the data file the blob goes inline with the record.
Your idea sounds interesting. I added to our internal todo list:
"
Add a pointer to the fixed length record for every blob. Store the blob elsewhere. While records are stored bottom up in the tables memory pool, we could perhaps allocate blobs top down. The table is full when they meet in the middle. To reduce fragmentation, we could store the blobs in chunks of record size. Perhaps even link them in a chain so that fragments can be reused. OPTIMIZE could move lower fragments up into gaps so that more records can be added.
The charm of the idea is that we won't need to implement "real" variable length records. This should make things much simpler.
"
However this is just an idea. I don't know when we implement it nor if we implement it this way. Thanks for your idea anyway. If you want to implement it, you are welcome. See
http://forge.mysql.com/contribute/ .
What is the problem with ndb blobs?
Regards
Ingo
Ingo Strüwing, Senior Software Developer - Storage Engines
MySQL AB, www.mysql.com