oracle loop index,oracle index 聚集因子

简单看一下clustering_factor

简单的说CLUSTERING_FACTOR 用于INDEX 的有序度和表的混乱度之间比较

b*tree index是经过排序的

例如 INDEX中 记录的第一个rowid指向 表所在DATAFILE 中 BLOCK#1 第1行 计数器 记为1,第2个rowid 指向 BLOCK#2 由于改变了块 所以 计数器加1 ,INDEX 第3个rowid

指向BLOCK#2 块没变 所以计数器还为2,接着沿INDEX执行 第4个rowid 指向BLOCK#1 块又变了计数器加1

计数器对应着CLUSTERING_FACTOR 计数器每次从一个块到另一个新块时候加1 这样CLUSTERING_FACTOR也加一

所以clustering_factor可以描述数据在表中的散布方式

如果clustering_factor接近表中的行数,大多行都不在同一个块中,分布太散

当clustering_factor接近表中的块数,说明数据集中有序

当用INDEX 获取一行以上数据时(INDEX RANGE SCAN),需要遍历INDEX的一部分 叫INDEX的 X%,扫描INDEX 时必须逐行的读取表,那么当遍历INDEX 的 X%时,转换表块的次数就等于clustering_factor 的 X%

另外clustering_factor对于oracle 优化器计算index cost 有直接关系

cost =

blevel +

ceiling(leaf_blocks * effective index selectivity) +

ceiling(clustering_factor * effective table selectivity)

今天读troubleshooting oracle performance 找到一个直接获取clusering_factor的函数脚本特此记录,仔细看可以发现 计算方式与上面的理论是一样的

SQL> show user

USER is "XH"

SQL> create table t3 (a int ,b int);

Table created.

SQL> declare

2  begin

3  for i in 1..10000 loop

4  insert into t3 values(i,i+1);

5  end loop;

6  commit;

7  end;

8  /

PL/SQL procedure successfully completed.

SQL> create index t3_ind on t3(a);

Index created.

SQL> select clustering_factor from user_ind_statistics where index_name='T3_IND';

CLUSTERING_FACTOR

-----------------

18

SQL> CREATE OR REPLACE FUNCTION clustering_factor (

2    p_owner IN VARCHAR2,

3    p_table_name IN VARCHAR2,

4    p_column_name IN VARCHAR2

5  ) RETURN NUMBER IS

6    l_cursor             SYS_REFCURSOR;

7    l_clustering_factor  BINARY_INTEGER := 0;

8    l_block_nr           BINARY_INTEGER := 0;

9    l_previous_block_nr  BINARY_INTEGER := 0;

10    l_file_nr            BINARY_INTEGER := 0;

11    l_previous_file_nr   BINARY_INTEGER := 0;

12  BEGIN

13    OPEN l_cursor FOR

14      'SELECT dbms_rowid.rowid_block_number(rowid) block_nr, '||

15      '       dbms_rowid.rowid_to_absolute_fno(rowid, '''||

16                                               p_owner||''','''||

17                                               p_table_name||''') file_nr '||

18      'FROM '||p_owner||'.'||p_table_name||' '||

19      'WHERE '||p_column_name||' IS NOT NULL '||

20      'ORDER BY ' || p_column_name;

21    LOOP

FETCH l_cursor INTO l_block_nr, l_file_nr;

22   23      EXIT WHEN l_cursor%NOTFOUND;

24      IF (l_previous_block_nr <> l_block_nr OR l_previous_file_nr <> l_file_nr)

25      THEN

26        l_clustering_factor := l_clustering_factor + 1;

27      END IF;

28      l_previous_block_nr := l_block_nr;

29      l_previous_file_nr := l_file_nr;

30    END LOOP;

31    CLOSE l_cursor;

32    RETURN l_clustering_factor;

33  END;

34  /

Function created.

SQL> select clustering_factor('XH','T3','A') from dual;

CLUSTERING_FACTOR('XH','T3','A')

--------------------------------

18

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分析以太网帧结构_传统以太网中的——中继器及集线器

1.1 Repeater 中继器中继器工作在以太网的第一层即物理层&#xff0c; 两端口设备&#xff0c;主要功能是放大信号&#xff0c;从而延长信号在同一网络上传输的长度。中继器的存在主要是解决解决电信号长距离传播过程中的衰减问题&#xff0c;以增加信号强度和传播距离。Figure…

根据oracle入库数据进行告警,Oracle 启动故障案例之--ORA-600 [4193]错误

ORA-600[4193] 这个错误也是与UNDO 有关系&#xff0c;MOS 上有几篇相关的说明文章.一.MOS说明1.1 ORA-600 [4193] WhenTrying To Open The Database [ID 763566.1]SymptomsCopying database from one server to another server and getting an ORA-600 [4193] error when tryi…

html表ge模板_精选甘特图模板,丰富又好用

你听说过甘特图吗&#xff1f;你可能不知道&#xff0c;也有可能是只是听说过但是并不了解。今天我们就来说一说甘特图吧&#xff01;甘特图其实就是是通过标示出活动顺序和时间间隔来表示某一特定项目的顺序与时间之间的关系的一种图表。与时间表或日程规划表不同的部分是甘特…

js函数提示 vscode_为VSCode / Monaco Intellisence添加JavaScript类型提示

有没有办法暗示VSCode / Monaco的intellisense变量的类型.我有一些像这样的代码var loc window.location;var gl context1.getContext("webgl");var ctx context2.getContext("2d");我看到VSCode知道loc是一个URL但它不知道gl是什么它也不知道ctx是什么…

oracle中调试存储过程,详解Oracle调试存储过程

详解Oracle调试存储过程一 调试关键步骤1、在要调试的存储过程右键&#xff0c;选择编辑以进行调试&#xff0c;截图如下&#xff1a;2、点击小瓢虫&#xff0c;弹出调试窗口&#xff0c;截图如下&#xff1a;3、输入7839员工编号&#xff0c;点击确认&#xff0c;进行调试&…

imp oracle full,Oracle 10g imp 之 full database (转官档)

Using Export and Import to Move a DatabaseBetweenPlatforms10g官档:The Export and Import utilities are the only method that Oracle supports for moving an existing Oracle database from one hardware platform. to another. This includes moving between UNIX and …

python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类

龙源期刊网http://www.qikan.com.cn基于朴素贝叶斯对Wine数据集分类作者&#xff1a;夏赵建杜友福来源&#xff1a;《电脑知识与技术》2017年第29期摘要&#xff1a;为了解决由于葡萄酒的组成成分十分复杂与多样而导致它的类型分类与品质划分困难的问题&#xff0c;减少由于感官…

伪静态php配置,PHP开启伪静态配置

1.检测Apache是否开启mod_rewrite功能可以通过php提供的phpinfo()函数查看环境配置&#xff0c;找到“Loaded Modules”&#xff0c;其中列出了所有apache2handler已经开启的模块&#xff0c;如果里面包括“mod_rewrite”&#xff0c;则已经支持&#xff0c;不再需要继续设置。…

python flask上传文件_Python-Flask-文件上传

一、Python-Flask-文件上传1、简化版文件上传创建目录&#xff1a;cd 5-4mkdir -p uploads #必须先创建uploads文件夹。upload.htmlTitle文件上传示例app.pyimport osfrom flask import Flask, render_template, send_from_directory, request, jsonify, make_responseimport t…

linux的apache安装在哪个目录,在linux系统下apache的默认安装路径在哪

如果采用RPM包安装&#xff0c;安装路径应在 /etc/httpd目录下。(学习教程推荐&#xff1a;apache)apache配置文件&#xff1a;/etc/httpd/conf/httpd.conf 可以修改相关的访问路径及配置Apache模块路径&#xff1a;/usr/sbin/apachectl 启动模块web目录&#xff1a;/var/www/h…

车子Linux系统,Linux车载系统Automotive Grade Linux

【中关村在线软件资讯】7月8日消息&#xff1a;Linux在车载系统上&#xff0c;并不想落后于苹果、谷歌等竞争对手&#xff0c;这不&#xff0c;Linux最近也推出了可定制的车载系统平台——Automotive Grade Linux&#xff0c;旨在建立一个未来智能汽车系统的标准。Linux车载系统…

linux 进程带宽限制,在Linux中限制网络带宽使用

限制网络流量速率的一种方法是通过一个名为trickle的命令行工具。通过在程序运行时&#xff0c;预先加载一个速率限制 socket 库 的方法&#xff0c;trickle 命令允许你改变任意一个特定程序的流量。 trickle 命令有一个很好的特性是它仅在用户空间中运行&#xff0c;这意味着&…

gpedit msc组策略面板 win10在哪里_windows10的组策略在哪

展开全部请参看:网页链接第一种方法:无论32位还是64位,均可.我的是64位.How to Enable Group Policy Editor (gpedit.msc) In Windows 10 Home EditionLast Updated on: July 10, 2020 by Usman Khurshid这里下载的就是个批处理文件gpedit-enabler.bat,内容是:echo offpushd &q…

linux ping监控脚本,WINDOWS和LINUX下带时间的PING包监控脚本

WINDOWS使用方法;cscript ping.vbs 172.26.163.10 -t -l 1000Dim args, flag, unsuccOutargs""otherout""flag0If WScript.Arguments.count 0 ThenWScript.Echo "Usage: cscript ping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]&q…

nx set 怎么实现的原子性_正确地使用Redis的SETNX实现锁机制

setNX&#xff0c;是set if not exists 的缩写&#xff0c;也就是只有不存在的时候才设置, 设置成功时返回 1 &#xff0c; 设置失败时返回 0 。可以利用它来实现锁的效果&#xff0c;但是很多人在使用的过程中都有一些问题没有考虑到。例如某个查询数据库的接口因为请求量比较…

linux img 内核启动,linux的启动流程(initrd.img)

http://www.ibm.com/developerworks/cn/linux/l-initrd.html一、从哪里到哪里本文旨在描述linux中内核如何调用启动&#xff0c;然后如何从img的文件系统切换到硬盘的过程。描述起于&#xff1a;linux-2.6.11/init/main.c中函数 static int init(void * unused)描述止于&#x…

python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask

前些日子研究了一下qq和新浪微博的第三方登陆的东西&#xff0c;发现其实难度并不大。来给大家分享一下我的经验和流程。不论是qq还是新浪微博的第三方登陆都是用了Oauth2.0授权流程&#xff0c;唯一不同的是qq多了一个openid的获取&#xff0c;多了一步。先介绍一下Oauth2.0的…

linux boot分区有什么用,/ boot分区的真正作用是什么?

射门很难引导...好吧...这确实是最难的部分。每次启动计算机时&#xff0c;它基本上都会重新适应。它熟悉其各个部分&#xff0c;并且满足每个部分都具有功能。但可以说&#xff0c;它每次都要从自己的引导程序中拉起自己。在设计启动过程时&#xff0c;技巧是逐步启动计算机。…

内存颗粒位宽和容量_64M的SDRAM颗粒 一般内存是多大的?

内存颗粒识别存储颗粒主要有这样的一些品牌&#xff1a;美国的Micron(美光)、德国的Infineon(英飞凌)&#xff1b;韩国的SAMSUNG(三星)、HY(现代)&#xff1b;日本的NEC(日本电气)、Hitachi(日立)、Mitsubishi(三菱)、Toshiba(东芝)&#xff1b;台湾的EilteMT、ESMT(晶豪)、Etr…

linux ios开发环境,iOS开发环境搭建(Linux版)

iOS开发环境搭建(Linux版)2015-05-11 13:26:503057浏览必须申明的是&#xff0c;我们强烈建议大家在Mac下学习iOS应用开发&#xff0c;迫不得已才选择Windows和Linux。看到Linux的环境搭建步骤&#xff0c;早已凌乱。1. Ubuntu 10.10 iPhone Toolchain 4If you use Ubuntu 11.0…