zoukankan      html  css  js  c++  java
  • Oracle Spatial分区应用研究之七:同等分区粒度下全局索引优于分区索引的原因分析

    1、实验结论

    1. 同等分区粒度下,使用分区空间索引进行空间查询,比使用全局空间索引进行查询,对数据字典表的访问次数更多。假设分区数为X,则大概多3X次访问。具体说明见6实验结论。

    2、实验目的

    在之前的测试中,发现这样一个现象:同等分区粒度下,分区空间索引效率不如全局空间索引。可是,深层次的原因是什么呢?

    3、实验方法

    分别以按县分区、按省分区组织数据,按县分区表共有2531个分区,按省分区表共有43个分区。数据内容为2531个区县,共46982394条要素。分别在两个分区表上创建本地空间索引。

    开启10046事件,跟踪SDO_FILTER操作。使用tkpof分析trc文件中耗时最多的SQL,对根据绑定变量的值分析不同SQL(主要是对数据字典的递归查询)查询的数据内容。比较在使用分区索引时所查询的数据字典内容,与在使用全局索引时查询的数据字典内容。

    4、实验结果

    在使用分区空间索引时,按县分区与按省分区对数据字典的访问次数及返回记录数如下:

    1. Seg$

        查询内容包括LOB INDEX PARTITION、LOB PARTITION、TABLE PARTITION、少量sys和mdsys用户下的表、其它表。

    以按县分区表为例,包括:

        INDEX PARTITION : 2531 * 3 = 7593 (此处不包括分区空间索引,仅包括LOB INDEX PARTITION)

        LOB PARTITION : 2531 * 3 = 7593

    TABLE PARTITION:2531

    1. Obj$

    查询内容包括LOB PARTITION、SPATIAL INDEX PARTITION、相关的TABLE PARTITION

    以按省分区表分为,包括:

        LOB PARTITION : 43 * 3 =129

        INDEX PARTITION : 43 (此处包括SPATIAL INDEX PARTITION ,不包括LOB INDEX PARTITION)

        TABLE PARTITION : (仅包括与查询范围相关的分区,可忽略不计)

    1. Lobfrag$

    查询内容与全局空间索引下一致。

    1. Indpart$

    查询内容包括INDEX PARTITION,包括LOB INDEX PARTITON 以及 SPATIAL INDEX PARTITION。

    以按省分区表为例,包括:

    INDEX PARTITION : 43 * 4 =172

    1. Obj$(2)

        查询内容包括LOB PARTITION、SPATIAL INDEX PARTITION,少量其它表。

    以按省分区表为例,包括:

    LOB PARTITION : 43 * 3 =129

        INDEX PARTITION : 43 (此处包括SPATIAL INDEX PARTITION ,不包括LOB INDEX PARTITION)

    其它:82个sys和mdsys用户下的表、以及test用户下的其他一些表,可忽略。

    1. Tabpart$

      查询内容全局空间索引下一致。

    5、实验结论

    结合3实验结果中的说明,假设分区数以X表示,lob column个数以Y表示,在使用分区空间索引进行查询时,不同字典表的访问次数见下表:

    数据字典表

    访问次数

    Seg$

    (1+2Y)*X

    Lobfrag$

    XY

    Obj$

    (1+Y)*X

    Indpart$

    (1+Y)*X

    Obj$(2)

    (1+Y)*X

    Tabpart$

    X

    若已经获知对各数据字典表的平均访问时间,甚至可以估算查询耗时。在每例中seg$ 、lobfrag$ 、obj$ 、indpart$、obj$(2) 、tabpart$,各数据字典表的平均访问时间约为100us、240us、50us、150us、180us、120us。因此可估算时间为:

    Elapsed all= 100*(1+2Y)*X+240XY+50*(1+Y)*X+150*(1+Y)X+180*(1+Y)*X+120X

    =X(820Y+600)

    与全局索引X(820Y+220)相比,查询数据字典多耗时380X(单位是us)。

  • 相关阅读:
    数据库-第六章 关系数据理论-6.2.1 函数依赖
    数据库-第六章 关系数据理论-6.1 问题的提出
    编译原理-第四章 语法分析-4.4 自顶向下的语法分析
    计算机组成及系统结构-第五章 指令系统
    编译原理-第四章 语法分析-4.3 设计文法
    Java数据结构之堆和优先队列
    进程与线程杂谈
    Java的多态浅谈
    Java的自定义注解使用实例
    elasticsearch6.6.2在Centos6.9的安装
  • 原文地址:https://www.cnblogs.com/6yuhang/p/8275103.html
Copyright © 2011-2022 走看看