我正在开发一个处理用户输入的站点,从而生成使用GDI +库绘制的图形jpg图像。为了获得更好的性能,我只生成一次这些图像,然后将它们保存到磁盘。为了以后的参考,我从数据库中获取位置。每个用户输入产生三个图像(缩略图,缩放和一个用于pdf报告),总共大约60kb。我们希望每天有100到1000个这样的输入。
我现在正在考虑保存数据库中的图像(BLOB字段 - 我正在使用MySql)并创建一个ashx处理程序页面来显示图像。主要原因是可以更轻松地将站点从一个服务器移动到另一个服务器(不必担心服务器文件系统上的读/写权限,而不必担心数据库和文件之间链接断开)。 / p>
在我的方案中,这种改变是否可行?是否会对绩效产生任何重大的正面或负面变化?
答案 0 :(得分:4)
对性能的影响取决于您在硬件(RAM,SSD等)和网络上的数据库设置(它与应用程序在同一台机器上吗?)。
通常我建议坚持使用文件系统,因为根据我的经验,这些文件有时会变得很大(这会降低数据库的性能!)并且文件系统比任何数据库都更好地优化处理文件。
OTOH如果您非常确定大小(最大60 KB)并且您的数据库足够快,那就去吧...确保将BLOB放入一个只有其他字段(主键)的单独表中,不要将任何元数据等保留在与BLOB相同的表中!
但有一句话:
在决定进行此类更改之前,我总是建议进行彻底的性能测试(模拟用户/加载,使用分析器等)...创建2个版本的ASHX处理程序 - 一个仅将DB用于路径并从文件系统传递文件,第二个文件通过DB ...
完成