引言:索引的热块其实和数据块的热块发生的原理大相径庭,也都是因为大量会话一起访问同一个索引块造成的,我们的解决方案有反向索引,分区索引等。我们说任何一
引言:索引的热块其实和数据块的热块发生的原理大相径庭,也都是因为大量会话一起访问同一个索引块造成的,我们的解决方案有反向索引,分区索引等。我们说任何一种方式都不是完美的,有优点就必然有缺点,我们把包含索引键值的索引块从顺序排列打散到无序排列,香港空间,降低了latch争用,同时也增加了oracle扫描块的数量。我们在实际使用时多测试取长补短,以提高系统的整体性能为目标。
LEO1@LEO1>create table leo1 (id number , name varchar2(200)); 创建了一个leo1表
Table created.
LEO1@LEO1>insert into leo1 (id,name) select object_id,object_name from dba_objects; 将dba_objects前2个字段复制到leo1表中。
71966 rowscreated.
LEO1@LEO1>select id,name from leo1 where rownum
ID NAME
----------------------------------------------------
673 CDC_CHANGE_SOURCES$
674 I_CDC_CHANGE_SOURCES$
675 CDC_CHANGE_SETS$
676 I_CDC_CHANGE_SETS$
677 CDC_CHANGE_TABLES$
678 I_CDC_CHANGE_TABLES$
679 CDC_SUBSCRIBERS$
680 I_CDC_SUBSCRIBERS$
681 CDC_SUBSCRIBED_TABLES$
LEO1@LEO1>create index leo1_index on leo1(id); 在leo1表上id列创建一个索引
Index created.
LEO1@LEO1>execute dbms_stats.gather_table_stats('LEO1','LEO1',cascade=>true); 对表和索引一起做一个分析,香港空间,cascade=>true 指的是级联表上的索引一起做分析
PL/SQL proceduresuccessfully completed.
LEO1@LEO1>create table leo2 (id number,name varchar2(200)); 创建leo2表
Table created.
LEO1@LEO1>insert into leo2 (id,name) select object_id,object_name from dba_objects; 插入71968行
71968 rowscreated.
为什么比leo1表多了2行呢,就是多了leo1和leo1_index这2个对象,我们刚刚建的。
LEO1@LEO1>create index leo2_index on leo2(id) reverse; 创建一个反向索引
Index created.
LEO1@LEO1>execute dbms_stats.gather_table_stats('LEO1','LEO2',cascade=>true); 做分析
PL/SQL proceduresuccessfully completed.
LEO1@LEO1>select index_name,index_type,table_name,status from dba_indexes wheretable_name in ('LEO1','LEO2');
INDEX_NAME INDEX_TYPE TABLE_NAME STATUS
--------------------------------------------------------- ------------------------------ --------
LEO1_INDEX NORMAL LEO1 VALID
LEO2_INDEX NORMAL/REV LEO2 VALID
LEO2_INDEX 是反向索引,我们使用它来把顺序的索引块反向成无序索引块存储,这样我们在查询一个区间范围时,索引键值就会落在不连续的索引块上,防止热块的产生,降低“latch 链表”争用。这可能算是反向索引唯一被使用的情况。因为反向索引不支持index range scan功能,只支持index full scan 全索引扫描,如何理解呢,虚拟主机,举个简单的例子 反向索引 不能帮你检索出 id> 1 and id
LEO1@LEO1> set autotrace on; 启动执行计划
LEO1@LEO1>select count(*) from leo1 whereid
COUNT(*)
----------
98
Execution Plan
----------------------------------------------------------
Plan hash value:423232053
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 5 | 2 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1| 5 | | |
|* 2 | INDEX RANGE SCAN| LEO1_INDEX | 96 | 480 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------
索引范围扫描,因为我们查询索引键值都是存放在连续的索引块中,所以只有仅仅的2个一致性读,它只扫描符合条件的索引块就能找到相应的记录。
PredicateInformation (identified by operation id):
---------------------------------------------------
2 - access("ID"
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
526 bytes sent via SQL*Net to client
523 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
LEO1@LEO1>select count(*) from leo2 whereid
COUNT(*)
----------
98
Execution Plan
----------------------------------------------------------
Plan hash value:1710468575
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------

Python函数介绍:exec函数的介绍及示例引言:在Python中,exec是一种内置函数,它用于执行存储在字符串或文件中的Python代码。exec函数提供了一种动态执行代码的方式,使得程序可以在运行时根据需要生成、修改和执行代码。本文将介绍exec函数的使用方法,并给出一些实际的代码示例。exec函数的使用方法:exec函数的基本语法如下所示:exec

Python函数介绍:abs函数的用法和示例一、abs函数的用法介绍在Python中,abs函数是一个内置函数,用于计算给定数值的绝对值。它可以接受一个数字参数,并返回该数字的绝对值。abs函数的基本语法如下:abs(x)其中,x是要计算绝对值的数值参数,可以是整数或浮点数。二、abs函数的示例下面我们将通过一些具体的示例来展示abs函数的用法:示例1:计算

Python函数介绍:sorted函数的功能和示例Python是一门非常强大的编程语言,拥有丰富的内置函数和模块。在这个系列文章中,我们将逐一介绍Python常用的函数,并提供相应的示例来帮助读者更好地理解和应用这些函数。本篇文章将详细介绍sorted函数的功能和示例。sorted函数用于对可迭代对象进行排序,并返回排序后的新列表。可以用于对数字、字

PHP中endwhile关键字的作用和示例在PHP中,endwhile是一种控制结构,用来实现while循环。它的作用是让程序在满足指定条件的情况下,重复执行一段代码块,直到条件不再满足。endwhile的语法形式如下:while(condition)://循环体代码endwhile;在这个语法中,condition是一个逻辑表达式,当该表达

Python函数介绍:filter函数的作用和示例Python是一种功能强大的编程语言,提供了许多内置的函数,其中之一就是filter函数。filter函数用于过滤列表中的元素,并返回满足指定条件的元素组成的新列表。在本文中,我们将介绍filter函数的作用,并提供一些示例来帮助读者理解其用法和潜力。filter函数的语法如下:filter(function

Python函数介绍:zip函数的介绍及示例Python是一种高级语言,它提供了许多有用的函数来帮助开发人员快速地编写程序。其中一个函数就是zip函数。Zip函数是Python中的内置函数之一,它可以接受一组可迭代对象(包括列表、元组、集合和字典等),并返回一个由这些可迭代对象中的元素按顺序成对组成的元组。Zip函数可以用于多种情况,例如:1.将两个列表的元

在PHP中,有很多实用的函数可以帮助我们更方便地处理数组。其中,array_walk()函数就是一个非常实用的函数,它可以对数组中的每个元素进行指定的操作,让我们来了解一下。array_walk()函数介绍array_walk()函数是一个用于处理数组的函数,它的语法结构如下:array_walk(array&$array,callable$callb

PHP中var关键字的作用和示例在PHP中,var关键字用于声明一个变量。以前的PHP版本中,使用var关键字是声明成员变量的惯用方式,现在已经不再推荐使用。然而,在某些情况下,var关键字依然会被使用。var关键字主要用于声明一个局部变量,并且会自动将该变量标记为局部作用域。这意味着该变量仅在当前的代码块中可见,并且不能在其他函数或代码块中访问。使用var


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver Mac版
视觉化网页开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。