Subject Blob write to Embedded on Linux performance
Author

I am using Firebird embedded (2.5.2) on Linux (Ubuntu 14.04) via IBPP with a completely default firebird.conf.


My hardware is a Dell Optiplex 755, Intel Core 2 Duo @ 2.33GHz with 4Gb RAM and a 2Tb Western Digital WD20EARX-32P hard disk.


When I use IBPP to write a blob (actually a music MP3) to a simple test database (which contains about 12 tables with 6 records in each) it takes around 35 seconds to write a 10Mb file.


The bottleneck seems to be when IBPP is writing a segment:


(*gds.Call()->m_put_segment)(status.Self(), &mHandle, (unsigned short)size, (char*)buffer);


The blob type is zero and has a segment size of 4096, I have matched this so the segment is written 4096 bytes at a time. I have tried smaller and larger sizes with little change in performance.


I see similar performance inserting a blob using Flamerobin, but that is of course hardly surprising. Reading the blob is instantaneous in all cases.


My question is: Is this the sort of performance I should be expecting or is there something wrong?


TIA