<plug>
Just like to mention that http://www.blobstreaming.org was created to solve this problem in MySQL.

The Launchpad project is here: https://launchpad.net/pbxt
</plug>

On Feb 16, 2010, at 3:23 PM, Johan De Meersman wrote:

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


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to