问:在SQL中应避免使用哪种格式的存储图象文件?
答:在大型的二进制对象,或BLOBs中, SQL Server中可以用作不同用途的任意数据对象。 一种可能的应用是用BLOBs存储图象数据。例如, 一个具有与特定物件相称的数据记录的网站包含一个物件图象的图表。一些程序员为数据库能存储各种数据的便利和轻捷方式所吸引。
虽然这听起来是一个极好的做法, 但实际上并不是非常好的方法, 有几个理由:
第一,投入如此多的数据库处理资源和内存代宽将图象前后传送影响数据库的整体性能。图象不一定要存到数据库里, 但一般的通用数据需要存到数据库里。为数据库留出确实需要的空间越多越好。
第二,在每个安装好的Windows服务器都有非常强劲的分层数据库, 其设计是很明确地存储和复制大量的大数据-特别是图象数据。这称为NTFS文件系统。Windows已经具有很多系统资源来专门存储和管理文件系统, 所以不利用其功能是不能理解的。在设定了适当的许可和安全措施后, 现成的文件系统是理想的手段来存储与数据库相关的图象。 不要再重复文件系统的工作。
第三, 在SQL Server 中储藏大容量的二进制数据会造成数据库管理问题和浪费空间。SQL Server以8K的页来分派数据, 而NTFS可以接受的最小数据段可以达到 512 字节。在SQL Server中存储大量图象会产生更多的浪费空间。SQL Server可以存储少于64字节的一堆二进制数据作为组成数据库的树形根结构的一部分,但很少有图象会小于64字节。另外, 备份和恢复单一的可能会增长为好十亿字节的数据库将比备份个别文件会遇到更多的问题和耗费更多的时间。