WEB开发网
开发学院数据库DB2 DB2 Spatial Extender 性能调优(1) 阅读

DB2 Spatial Extender 性能调优(1)

 2007-06-01 16:21:39 来源:WEB开发网   
核心提示: 可以使用 ALTER TABLE ... ALTER COLUMN ... SET INLINE LENGTH ... 语句修改(增加)已有空间列的 inline length,除非通过 REORG TABLE 语句 加 LONGLOBDATA 选项重组存储在表中的数据,DB2 Spati

可以使用 ALTER TABLE ... ALTER COLUMN ... SET INLINE LENGTH ... 语句修改(增加)已有空间列的 inline length。除非通过 REORG TABLE 语句 加 LONGLOBDATA 选项重组存储在表中的数据,否则这种修改只影响 DB2 编目和随后的数据修改。如果值的大小小于新的 inline length,那么这个重组过程将把大对象化的空间值转换成内联值。

选择适当的 inline length

在将所有空间数据存储到 32K 的表空间上并且将 inline length 设置成尽可能大的值之前,应该首先分析您的数据实际上有多大以及其他参数可能对页宽产生的影响。如果只有 ST_Point 值,那么每个点将需要最多 245 字节的物理存储,如清单 3 所示。在这种情况下,甚至 减少 inline length 更有帮助,因为可以使用更小的页宽和/或在表中使用更多的列。但是要注意,ALTER TABLE 语句只允许增加 inline length。如果想使用更小的值,那么必须在创建表的时候指定。Spatial Extender 导入过程允许显式地为空间列指定 inline length。

在结构类型中嵌套 LOB

虽然 points 属性被定义为 BLOB,但是 DB2 并不会单独地存储它。相反,整个几何图形信息(包括 BLOB 数据)都存储在一起 —— 至于存储为内联值还是大对象化值,则取决于列的 inline length。结构类型的实现使所有属性值并置到一个二进制流中,任何添加的必要的元信息和产生的二进制流在物化(也就是存储到一个表中)的时候,或者存储为内联值,或者存储为大对象化值。

这种方法使任何处理 LOB 的应用程序可以以内联方式存储短的 LOB 值,并利用 DB2 的缓冲池。

清单 3 展示了如何计算每个几何图形在以内联方式存储时需要多少磁盘空间。我们假设所有几何图形都存储在一个名为 SPATIAL_DATA 的表的 GEOMETRY 列中。第一个查询使用 LENGTH 函数。该函数显示以内联方式存储的值的宽度。如果是大对象化的值,那么它显示引用实际值的定位符的宽度。所以只有知道所有空间值都是内联值时,才可以放心地使用该函数。因此,下面的查询根据空间数据类型的属性来计算数据的宽度。关于属性的信息可以从 DB2 编目视图 SYSCAT.DATATYPES 和 SYSCAT.ATTRIBUTES 获得。如果空间数据是使用结构类型实现的,那么在 SQL Reference 中关于 CREATE TYPE 语句的解释中提到的判断结构类型值宽度的法则同样适用(请参阅 参考资料 一节,了解关于 CREATE TYPE 语句的信息)。具体地说,ST_Geometry 类型定义 16 个属性,它的子类型都没有添加自己的属性。除了三个属性外,所有属性都是所谓的 短属性。其中两个非短属性 anno_text 和 ext 没有被使用,第三个非短属性 points 包含内部编码为 BLOB 的几何图形信息。除了实际的数据外,DB2 需要维护强制的 null 指示符(1 个字节)和长度信息(4 个字节)。因此,几何图形的大小可以通过公式 “32 + 16*10 + 5 + LENGTH(points) = 197 + LENGTH(points)” 得出。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:DB Spatial Extender

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接