DB2数据库的可扩展索引与组件数据库支持
立即解锁
发布时间: 2025-08-24 02:13:35 阅读量: 2 订阅数: 4 

### DB2 数据库的可扩展索引与组件数据库支持
#### 1. DB2 可扩展索引的基础与示例
在 DB2 通用数据库中,可扩展索引提供了强大的功能。例如,通过精确索引扩展 `TextIDX` 进行搜索的语句如下:
```plaintext
SEARCH BY EXACT INDEX EXTENSION TextIDX
WHEN KEY(TextHd) USE rankSearch(s_arg, limit));
```
其中,`EXPRESSION AS limit` 子句以及在 `USE` 子句中使用 `limit` 作为额外参数,意味着如果 DB2 优化器选择利用索引扩展,`>` 谓词的第二个操作数 `limit` 将作为额外参数提供给 `rankSearch` 搜索方法。最终,这会导致 `rankSearch` 搜索方法的范围生成函数调用如下:
```plaintext
TXGetRankHandleSet(
‘...IX1234...’,
‘“database” IN SAME SENTENCE AS “object-relational”’,
0.5)
```
#### 2. GIS 应用性能对比
在 GIS 应用中,现有的 GIS 架构(以 ESRI 的 Spatial Database Engine, SDE 3.0.2 on DB2 UDB Version 5 为例)和集成方法的性能有所不同。
##### 2.1 现有 GIS 架构
现有 GIS 架构使用数据库外部的空间数据引擎来优化空间查询。对于包含业务数据和空间属性列的表,SDE 引入了新的要素表来表示空间数据,并创建新的索引来处理空间查询。要素表包含作为主键的 `id` 列以及所有空间属性和几何形状。原表(业务表)中的空间列被替换为指向要素表的外键 `id` 列。此外,SDE 还维护一个空间索引表,在本例中使用基于三级网格的索引方法。空间索引表包含要素 `id`(要素表的外键)和索引信息,如左下角网格单元的位置和要素的最小边界矩形(MBR)。
处理空间搜索查询时,SDE 使用空间索引表和要素表计算满足空间谓词的候选形状(`id`)列表,然后使用该列表通过应用空间搜索查询 `WHERE` 子句中的其余谓词从业务表中检索数据。目前,SDE 通过执行不同的查询来处理业务表和要素表之间的连接。
##### 2.2 典型 GIS 查询操作
以下是 GIS 应用中的一些典型查询操作:
- **加载**:通过一系列 SQL 插入语句加载原始数据并维护空间索引。
- **区域查询**:针对不同位置的三个预定义区域进行查询,答案集大小分别为 3155、2387 和 1457。
- **点查询**:进行一百次随机点搜索,模拟用户在空间浏览时指向多边形的操作。
- **带属性的区域查询**:与区域查询类似,但除了空间数据外,还会获取非空间属性,如名称和总人口。
- **全量获取**:测量从数据库中提取数据的速度。
所有查询都在 IBM RS6000/J40 服务器的非工作时间运行,以减少其他用户和进程的影响。GIS 客户端程序与服务器在同一台机器上运行。查询执行时间(四舍五入到秒)的测量结果如下表所示:
| 查询类型 | 加载 | 区域查询(R1) | 区域查询(R2) | 区域查询(R3) | 带属性的区域查询(R1) | 带属性的区域查询(R2) | 带属性的区域查询(R3) | 点查询 | 全量获取 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| GIS | 3012 | 19 | 13.66 | 8 | 20 | 14.66 | 9 | 9.66 | 731 |
| 集成方法 | 706 | 8 | 5 | 3.33 | 7.66 | 4.66 | 3 | 8 | 169.67 |
从表中数据可以看出,在加载和全量获取操作中,集成方法大约比 GIS 方法快四倍。对于加载操作,集成方法中的一行插入语句在 GIS 方法中变成了三条插入语句(分别针对业务表、要素表和空间索引表)。在全量获取操作中,由于 GIS 方法自行处理业务表和要素表之间的连接,它会针对要素表重复执行单独的查询,每次从业务表检索一组数据都要执行一次。对于不包含非空间属性的区域查询,集成方法比 GIS 方法快约两倍半;对于包含非空间数据的区域查询,集成方法快约三倍,这是因为后者涉及对业务表的访问。不过,GIS 方法在点查询方面表现出色。总体而言,空间数据的高级索引集成方法性能更好,这体现了增强数据库引擎以支持复杂数据可扩展索引的价值。
#### 3. 可扩展访问和索引的相关方法
##### 3.1 查询重写方法
通过查询重写来支持可扩展索引是一种方法。通常,一个单独的实体管理特殊访问方法和复杂数据的索引,而数据库引擎对此并不了解。涉及复杂数据谓词的用户查询会根据复杂数据的特定访问方法和索引转换为不同的查询。索引可以存储在关系数据库或外部文件中。例如,
0
0
复制全文
相关推荐









