I have the requirement to store raw data (ranging in size from 100 kb to 150 MB per file) and read it quickly when needed (in a Java application deployed on a Tomcat, with an Oracle 11g as backend).

Currently we store those files on an NFS. We thought about putting them into our database to reduce maintenance and have a central storage instead of two. My test reading a 13 MB file from NFS versus reading it from a BLOB however were sobering.

From BLOB: 2-3s
From file system: 200ms

Looking at this massive difference, the file system clearly wins.

Is there anything I am missing here? Any kind of obvious performance boost that I missed?

In the first case, which driver do you use?
Did you investigate in changing the parameters related to LOBs?
Is your database local to the program execution or remote?
How did you compute the posted times?

In the first case, which driver do you use?
Did you investigate in changing the parameters related to LOBs?
Is your database local to the program execution or remote?
How did you compute the posted times?

ojdbc6 : 11.2.0.3.0

I went to Oracle's pages about LOBs, but I didnt spot any significant game changers concerning performance. I didnt test NOLOGGING etc, mostly because I thought it'd be faster and more productive asking here first in case there exists a massive performance boost I am not aware of even after quick-reading that part of the manual.

The database is remote.

I computed the times with Java's System.nanoTime() before and after the code block that I posted.