在SQL中避免使用BLOB格式存储图象文件

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

大型的二进制对象,或BLOBs, 是SQL Server中可以用在不同用途的任意数据对象。 一种可能的应用是用BLOBs存储图象数据。例如, 一个具有与特定物件相称的数据记录的网站包含一个物件图象的图表。一些程序员为数据库能存储各种数据的便利和轻捷方式所吸引。虽然这听起来是一个极好的做法, 但实际上并不是非常好的方法, 有几个理由:

第一,投入如此多的数据库处理资源和内存代宽将图象前后传送影响数据库的整体性能。图象不一定要存到数据库里, 但一般的通用数据需要存到数据库里。为数据库留出确实需要的空间越多越好。

第二,在每个安装好的Windows服务器都有非常强劲的分层数据库, 其设计是很明确地存储和复制大量的大数据-特别是图象数据。这称为NTFS文件系统。Windows已经具有很多系统资源来专门存储和管理文件系统, 所以不利用其功能是不能理解的。在设定了适当的许可和安全措施后, 现成的文件系统是理想的手段来存储与数据库相关的图象。 不要再重复文件系统的工作。

第三, 在SQL Server 中储藏大容量的二进制数据会造成数据库管理问题和浪费空间。SQL Server以8K的页来分派数据, 而NTFS可以接受的最小数据段可以达到 512 字节。在SQL Server中存储大量图象会产生更多的浪费空间。SQL Server可以存储少于64字节的一堆二进制数据作为组成数据库的树形根结构的一部分, 但很少有图象会小于64字节。另外, 备份和恢复单一的可能会增长为好十亿字节的数据库将比备份个别文件会遇到更多的问题和耗费更多的时间。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航