On Mon, Feb 15, 2010 at 10:53 AM, Martijn Tonies <m.ton...@upscene.com>wrote:

> databases are made for storing data - it saves you on both database and PHP
>> requests, as (from a web point of view) you can't return the image data
>> inside your HTML - it requires a second HTTP call. Filesystem image
>> serving,
>>
>
> Doesn't an image always required additional http calls from the <IMG> tag?


Yes, that's what I'm saying. However, there's a significant difference
between an HTTP call that only needs to pump a file on to the network, and
an HTTP call that needs to start a PHP process that then in turn needs to
connect to the DB, which then needs to parse and execute a query.

Offloading static files (images, css, whatnot) to a separate server that
runs a lightweight, threaded httpd without PHP and whatnot compiled in, also
means that you'll need less hardware to serve the same amount of requests -
our PHP machines typically run 400 apache processes, but a static server on
the same hardware could easily serve a few thousand threads - suddenly it's
not memory/cpu but disk/network bandwidth that becomes your bottleneck.



> If you do go for BLOBs, though, for god's sake keep them in a separate
>> table, lest you fragment your datafiles. Split records are a disaster for
>> performance.
>>
>
> I agree -for MySQL-, but this is a MySQL limitation!! Not a DBMS one.


True. I think (but am too lazy to verify) that even in MySQL this is mainly
an issue with MyISAM, not InnoDB. Given how MyISAM is the default engine,
though, I thought it worthwile to mention.

Separate LOB storage still leaves the overhead of query parsing and other
generic DBMS stuff which isn't there on a filesystem, though, not to mention
that each image requests takes up a database connection for as long as it
takes to transfer the (potentially huge) data. Don't forget that in a
well-tuned database, network transfer is often a significant part of your
total connection lifetime for select statements.



-- 
Bier met grenadyn
Is als mosterd by den wyn
Sy die't drinkt, is eene kwezel
Hy die't drinkt, is ras een ezel

Reply via email to