为什么BLOB难于处理

ZDNet软件频道 时间:2003-09-15 作者:ZDNet China |  我要评论()
本文关键词:
如果你使用SQL Server 2000的主要目的是进行事务处理,你么你应该熟悉SQL的数字数据功能的使用。
本文译自Builder.com,未经许可请勿转载如果你使用SQL Server 2000的主要目的是进行事务处理,你么你应该熟悉SQL的数字数据功能的使用。不过,SQL Server 2000还提供了一些其它功能,你可以用它们来管理一种叫着BLOB(Binary Large Objects,大型二进制对象)的多比特数据类型。

BLOB可以参考大量数值(如保存在文本或者ntext栏中的数据)以及特别长的二进制数据(如图像和数字音频)。

当元素的存储要求超过了SQL所设置的每栏8000个字符时,最好使用text和image数据类型。text和image数据类型的每个对象可以保存多达2GB的二进制数据。

有许多函数和语句可以使用BLOB,如DATALENGTH、PATINDEX、SUBSTRING、TEXTPTR、TEXTVALID、READTEXT、SET TEXTSIZE、UPDATE TEXT和WRITE TEXT。

SQL Server 2000并不在表格栏中保存大段的二进制数据,而是在表格中保存一个16位指针,实际数据则保存在一个单独的数据页中。

BLOB笨重而且影响数据库性能,这一点很值得我们注意。如果有可能的话,我建议你把数据库分解成较小的块。让BOLB难以管理的原因还有:有关栏和数据类型的规则不再适用了。因此,你最好把大的条目分别存储在各自的文件里,然后在数据库中保存这些文件的路径。

当使用BLOB时,你还需要考虑以下几点:

  • 由于你不能对BLOG使用常见的选择语句,因此很难检索到它。还有,你不能控制你可能正在检索的大段文本。不过,你可以用READTEXT语句从任何字段中找到特定的文本块。
  • 如果你只是想检索一个较小的子字符串,那么使用PATINDEX函数可能比较合适。
  • 你可以用UPDATETEXT来修改 BLOB字段的一部分、用WRITETEXT来替代整个字符串的内容。
  • 你可以在使用UPDATETEXT和 WRITETEXT时带上WITH LOG,但是默认情况下BLOB的更新是没有日志记录下来的。这就你的交易日志实际上是没有用的,你只有做完全的备份才可以让备份数据有用。

现在,你对BLOB有了全面的认识,你应该对是否依然使用BLOB有了理性的判断。


本文作者J.E.Harvey(获得计算机科学硕士学位和MCDBA认证)从事技术编著工作已逾二十年。


责任编辑:炒饭

欢迎评论投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134