Storing Images In MySQL
Isn't This A Bad Idea?
This argument continues to rage and many lives have been lost trying to prove that this is a Bad Idea™. The facts are, this method of binary storage is very successful and has many advantages over filesystem storage. Some advantages are:
- Referential integrity
- Ease of backup
- Saving of Inodes
- Easy categorisation
- Central point of operations
Many of the “nay sayers” will have you believe that storing of images or other binary data creates too much overhead. A large database can be stored on a RAW partition and in fact be faster as it has no filesystem overhead to contend with.
Some would say that access is slow when SELECTing from the database, but most of these issues are caused by coders doing things like:
select * from image_table
When all they needed was the image ID. You can see a benchmark of the perfomance of this where we used three methods of access for an image:
- Access image from file
- Store image in filesystem and store the url in the database
- Store the image in the database
The results may surprise you.