Oracle Spatial分区应用研究之四:不同分区粒度+全局空间索引效率对比
1、实验目的
在实验之前先回答这样一个问题——对同一份数据使用不同的分区粒度,但均创建全局空间索引,问:它们的全局空间索引一致吗?
怎样算是一致的呢?R-TREE的树结构一致算一致吗?空间索引条目数及大小一致算一致吗?严格的一致,当然是指索引条目数、索引大小、R-TREE树结构完全一致。但经过分析发现,它们的索引条目数、R-TREE树结构是完全一致的,但索引大小有微小的差别。但我们仍然认为它们的全局索引是一致的,这是因为,R-TREE树结构才是决定空间索引是否一致的关键。
基于上述前提条件,思考一个问题:在执行空间查询时,若执行计划的第一步是扫描全局空间索引,这种情况下使用不同分区粒度的表,查询效率是相同的吗?实验之前,我会认为是相同的。因为尽管分区粒度不一样,但执行逻辑完全一致——根据全局空间索引查找匹配的ROWID,根据ROWID返回记录。而ROWID是无差别的,即相同磁盘设备下访问不同ROWID损耗是一样的。但真实情况呢?
2实验数据
实验数据为全国2531个区县,要素总数为46982394。分别以按县、市、省、区域分区,以及不分区来进行组织。在所有表上均创建全局空间索引。先介绍按省分区、按区域分区相关信息。
按省分区,各分区记录数及blocks:

按区域分区,各分区记录数及blocks:

3实验方法
在1:500、1:2000、1:10000、1:25000、1:50000、1:100000比例尺下,随机从全国范围内选择3个样本范围,作为空间查询时的查询范围。将6*3个样本范围分别与3个实验主体进行空间查询运算,记录每次查询的耗时。
算法统一使用最适合全局空间索引的算法:part_query3。
4实验结果
实验结果如下表:

求每种比例尺3个样本的平均值:

绘制不同分区粒度在不同比例尺下响应时间的折线图。

5实验结论
- 尽管全局空间索引一致,但不同的数据组织方式影响查询效率。从图中可知,过于分散数据(按县分区)将导致性能下降;适度分散对性能影响较小甚至没有影响。
- 在使用全局索引的情况下,未分区效率最高(命中18次中的9次),按区域分区次之(18次命中6次),按省分区又次之(18次命中3次)。
- 按省分区、按区域分区、不分区在全局空间索引下的查询效率相差不大,是否产用分区,产用何种分区,应结合业务场景选择合适的组织方式。
(未完待续……)
Oracle Spatial分区应用研究之四:不同分区粒度+全局空间索引效率对比的更多相关文章
- Oracle Spatial分区应用研究之五:不同分区粒度+本地空间索引效率对比
1.实验目的 若使用本地空间索引,不同分区粒度将产生不同索引组织,其索引分区个数.大小.R-TREE树结构均不相同.那么,在什么分区粒度下的本地空间索引效率较高呢? 2实验数据 实验数据为全国2531 ...
- Oracle Spatial分区应用研究之一:分区与分表查询性能对比
1.名词解释 分区:将一张大表在物理上分成多个分区,逻辑上仍然是同一个表名. 分表:将一张大表拆分成多张小表,不同表有不同的表名. 两种数据组织形式的原理图如下: 图 1分表与分区的原理图 2.实验目 ...
- Oracle Spatial分区应用研究之三:县市省不同分区粒度的效率比较
在<Oracle Spatial分区应用研究之一:分区与分表查询性能对比>中已经说明:按县分区+全局空间索引效率要优于按县分区+本地空间索引,因此在该实验报告中,将不再考虑按县分区+本地空 ...
- Oracle Spatial分区应用研究之六:全局空间索引下按县分区与按省分区效率差异原因分析
1.实验结论 全局空间索引下,不同分区粒度之所有效率会有不同,差异并不在于SDO_FILTER操作本身,而在于对于数据字典表的访问次数上: 分区越多.表上的lob column越多,对数据字典表的访问 ...
- Oracle Spatial分区应用研究之七:同等分区粒度下全局索引优于分区索引的原因分析
1.实验结论 同等分区粒度下,使用分区空间索引进行空间查询,比使用全局空间索引进行查询,对数据字典表的访问次数更多.假设分区数为X,则大概多3X次访问.具体说明见6实验结论. 2.实验目的 在之前的测 ...
- Oracle Spatial分区应用研究之八:不同分区粒度在1.5亿要素量级下的查询性能
以土地调查地类图斑层作为测试数据,共计约1.5亿条要素.随机生成90次各比例尺的查询范围,在ORACLE 11gr2数据库中进行空间查询,记录查询耗时.最后计算平均值和第90百分位数,结果如下图所示: ...
- Oracle Spatial分区应用研究之二:按县分区与按省分区对比测试报告
1.实验目的 在上一轮的实验中,oracle 11g r2版本下,在87县市实验数据的基础上,比较了分表与分区的效率,得出了分区+全局索引效率较高的结论(见上一篇博客).不过我们尚未比较过不同的分区粒 ...
- oracle表分区的,分区操作,分区查询,子分区查询
一.摘要 有关表分区的一些维护性操作: 注:分区根据具体情况选择. 表分区有以下优点: 1.数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高. 2.数据修剪:保存历史数据非常的理想. ...
- Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区(转载)
一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: 1 create table graderecord 2 ( 3 sno varchar2(10), 4 sname varcha ...
随机推荐
- param动作
param动作通常与forword一起使用 <jsp:forword page="目标页面" > <jsp:param value="参数值" ...
- 学习:Windows数据类型
WINDOWS API中出现的常见的数据类型有以下几种: 1.DWORD:DWORD用于表示无符号整型的数据类型,实际名为double word,32位 2.HANDLE:HANDLE为32位的数据类 ...
- vim文本编辑器——删除、复制、剪切、更改某一个字符、替换、撤销、关键字搜索
1.删除: (1)删除光标所在处的字符: 如上图所示:点击一次x键只能删除一个字符. (2)删除光标所在处后的n个字符(nx): 删除前: 输入6x: (3)删除光标所在的行(dd): 删除前: 输入 ...
- 2.Servlet入门
一.Servlet简介 Servlet为sun公司开发动态web的一门技术 Sun公司在这些API中提供了一个接口叫做:Servlet,如果想开发Servlet程序,需要完成两个小步骤: 编写一个类, ...
- 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)
query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...
- python url码转换 chr()码
爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet ...
- [golang][gui]Hands On GUI Application Development in Go【在Go中动手进行GUI应用程序开发】读书笔记03-拒交“智商税”,解密“GUI”运行之道
和老外的原文好像没多大联系了,哈哈哈,反正是读书笔记,下面的内容也是我读此书中的历程,也写进来吧.不过说实话,这框架的作者还挺对我脾气的,哈哈哈. 拒交“智商税”,解密“GUI”运行之道 我很忙 项目 ...
- Shell 逐行读取文件的4中方法
方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE do echo $LINE done < ...
- Centos7 守护进程supervisord 安装使用
pervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统.它 ...
- ELK(Elasticsearch + Logstash + Kibana) 日志收集
单体应用或微服务的场景下,每个服务部署在不同的服务器上,需要对日志进行集重收集,然后统一查看所以日志. ELK日志收集流程: 1.微服务器上部署Logstash,对日志文件进行数据采集,将采集到的数据 ...