2011-10-31 91 views
1

我正在开发一个网站,处理用户输入导致图形使用GDI +图库绘制jpg图像。为了获得更好的性能,我只生成一次这些图像,然后将它们保存到磁盘。为了以后的参考,我从数据库中获取位置。每个用户输入都会产生三幅图像(缩略图,缩放图和pdf报告图),总共大约60kb。我们预计每天有100 - 1000个这样的输入。BLOB与否 - 缓存图像

我正在考虑将图像保存在数据库中(BLOB字段 - 我正在使用MySql)并创建一个ashx处理程序页面以显示图像。主要原因是将网站从一台服务器移到另一台服务器更容易(不必担心服务器文件系统的读/写权限,也不必担心数据库和文件之间的连接断开)。

在我的情况下,这种更改是否可取?它的表现会有什么显着的积极或消极变化吗?

回答

4

对性能的影响取决于有关硬件(RAM,SSD等)和网络(与应用程序在同一台机器上)的数据库设置。

通常我建议坚持文件系统,因为根据我的经验,这些文件有时会变大(这会降低数据库的性能!),并且文件系统比任何数据库都更好地处理文件。

OTOH如果您对尺寸非常确定(最大60 KB),并且您的数据库足够快,那么请执行此操作...确保将BLOB放入单独的表中,并且只有其他字段(主键) ,请勿将任何元数据等与BLOB保存在同一个表中!

一个此言虽:

我总是建议做一个全面的性能测试(模拟的用户/负载,使用一个分析器等)决定这种变化之前...创建2个版本的ASHX处理程序 - 一个只使用数据库路径并从文件系统传送文件,第二个通过数据库完成所有操作...