Eric Butera wrote:
On 7/11/06, Kevin Waterson <kevin@xxxxxxxxxxx> wrote:
How much of a performance hit?
Kevin
--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Here's to being bored on lunch. :)
Now to add my two cents to the convo:
I don't see a problem with storing images in the DB IF they aren't
going to be continually accessed that way. For example say you have a
script that lets a user upload an image and creates a small, medium,
and large view out of it. Stick the original in the Db and then make
your 3 sizes on the fly and cache the output so they are not
continually created. This way you could down the road re-do all the
sizes if you go through a site redesign or the client chooses they
want them 450 instead of 400. =)
Via MySQL 4.1 & PHP 5.1.4:
erics:~ eric$ ab -n500 -c5 http://localhost/fs_vs_db/viewimage_db.php
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation,
http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests
Server Software: Apache/1.3.33
Server Hostname: localhost
Server Port: 80
Document Path: /fs_vs_db/viewimage_db.php
Document Length: 25256 bytes
Concurrency Level: 5
Time taken for tests: 4.323 seconds
Complete requests: 500
Failed requests: 0
Broken pipe errors: 0
Total transferred: 12727000 bytes
HTML transferred: 12628000 bytes
Requests per second: 115.66 [#/sec] (mean)
Time per request: 43.23 [ms] (mean)
Time per request: 8.65 [ms] (mean, across all concurrent requests)
Transfer rate: 2944.02 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 10
Processing: 14 42 12.6 38 147
Waiting: 14 42 12.6 38 147
Total: 14 42 12.6 38 147
Percentage of the requests served within a certain time (ms)
50% 38
66% 40
75% 44
80% 46
90% 56
95% 67
98% 78
99% 97
100% 147 (last request)
Raw Image:
erics:~ eric$ ab -n500 -c5 http://localhost/fs_vs_db/cloud.jpg
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation,
http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests
Server Software: Apache/1.3.33
Server Hostname: localhost
Server Port: 80
Document Path: /fs_vs_db/cloud.jpg
Document Length: 25256 bytes
Concurrency Level: 5
Time taken for tests: 0.624 seconds
Complete requests: 500
Failed requests: 0
Broken pipe errors: 0
Total transferred: 12775000 bytes
HTML transferred: 12628000 bytes
Requests per second: 801.28 [#/sec] (mean)
Time per request: 6.24 [ms] (mean)
Time per request: 1.25 [ms] (mean, across all concurrent requests)
Transfer rate: 20472.76 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.7 1 5
Processing: 3 5 6.6 4 131
Waiting: 1 4 6.7 3 130
Total: 3 6 6.5 5 131
Percentage of the requests served within a certain time (ms)
50% 5
66% 5
75% 5
80% 6
90% 7
95% 10
98% 11
99% 19
100% 131 (last request)
The time taken per request, though (and that's about all we can get with
a concurrency as low as 5) doesn't tell us much. We also don't know
exactly what the PHP code is doing, how it does it, how your database is
organized/indexed/accessed, if you have any PHP accelerators installed
(Normally the PHP script would be reconverted to bytecode every
execution), etc.
Additionally, your test isn't really MySQL versus filesystem, it's
PHP+MySQL versus filesystem. Perhaps a more useful comparison would be
PHP+Filesystem versus PHP+MySQL. As in, the same PHP script for both
benchmarks, except one copy uses file_get_contents and echo (Closer
match than readfile, since MySQL would require loading the file into
memory) and the other uses MySQL. This would be a closer match that
would tell us how much latency is induced by the actual database itself
rather than PHP and loading stuff into memory.
Regards, Adam.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php