Friday, August 12, 2016
The last time I tried to mess around with Smart BLOBs was probably in 2007 or 2008. I found that they were buggy and excruciatingly slow. But that was years ago, most likely IDS 10.0. I've got a pretty good use case for them now, and I'm using the latest, greatest IDS 12.10.FC7, so I thought I'd have another look at them.
They're still buggy and excruciatingly slow.
Buggy how? I ran out of space in the main dbspace while trying to populate a test table in a non-logged DB with non-logging Smart BLOBs. The result is that the Smart BLOBs appear to have been created with a ref count of 0, and I was left with records that I couldn't delete, and tables I couldn't drop. And this is apparently a common enough occurrence that there's an option for onspaces that allegedly deals with it. (Since I was only testing, I found it easier just to restore the engine to its baseline.)
But maybe that was a fluke; just don't run out of space, or at least not in those circumstances, and it should be fine. Which brings us to performance.
Excruciatingly slow how? I tested the same purge process using the BYTE data type and the BLOB data type. With BLOB, the process took nearly three times as long. With BYTE, a 3 million row purge took just over 13 minutes, on average. With BLOB, over 36 minutes.
Perhaps others of you have had better luck, but my experience with Smart BLOBs was bad then, and it's still bad now.
Posted by TGirsch at 11:16 AM