Oracle性能分析7:创建索引
在创建索引时,我们往往希望可以预估索引大小,以评估对现有project环境的影响,我们也希望创建索引的过程可以最小化的影响我们正在执行的project环境,并能查看索引的状况。
预估索引大小
预估索引大小,最好的办法是在測试环境中创建它,測试环境最好包括完整的project环境数据,否则仅仅有通过部分数据来推算完整的索引大小。
假设不能搭建測试环境,Oracle提供了存储过程DBMS_SPACE.CREATE_INDEX_COST来估算索引的大小,以下是一个样例:
declare
used_bytes number(10);
alloc_bytes number(10);
begin
dbms_stats.gather_table_stats(user, 'HISTORYALARM');
dbms_space.create_index_cost('create index idx_historyalarm on historyalarm(position1)',
used_bytes => used_bytes,
alloc_bytes => alloc_bytes);
dbms_output.put_line('used_bytes : ' || used_bytes);
dbms_output.put_line('alloc_bytes : ' || alloc_bytes);
end;
在计算索引大小的时候,你须要先收集表的统计信息,由于Oracle是依据表的数据信息来推算的,以下是输出的结果:
used_bytes : 151994511
alloc_bytes : 251658240
创建索引
在估算了索引大小后,假设没有问题,就能够開始实际的创建索引了:
create index idx_historyalarm on historyalarm(position1) tablespace uep4x_fm_index
创建索引的索引会对表加排他DDL锁(Exclusive DDL lock),这会防止其它会话得到他们自己的DDL锁或TM(DML)锁,也就是在创建索引期间你可以查询一个表,可是无法以不论什么方式改动这个表。这导致创建索引的操作在project环境中实施时会存在问题,因此,Oracle企业版提供了在线创建索引的方式:
create index idx_historyalarm on historyalarm(position1) tablespace uep4x_fm_index online
online将改变详细创建索引的过程,Oracle不会再加一个排他DDL锁来防止数据改动,改为试图得到表上的一个低级(mode 2)TM锁,这将有效地防止其它DDL(data definition language,包含CREATE、ALTER、DROP等)操作发生,但同意DML(data manipulation language,包含SELECT、UPDATE、INSERT、DELETE)操作正常进行。在Oracle的内部,Oracle会将创建索引期间做的DML操作放到一个暂时表中,等创建索引操作完毕后,再将DML操作所做的改动同步到新的索引。这样就有效的攻克了project环境中实施的问题。
查看索引信息
能够通过上面的方式查看创建成功后的索引:
select * from user_indexes where index_name = upper('idx_historyalarm')
能够通过以下的方式显示所占用的空间的实际数额:
select bytes from user_segments where segment_name = upper('idx_historyalarm')
以下是输出结果,空间分配字节数的预计量略小于实际使用量:
BYTES
--------------------------
293601280
随着记录插入到表中,该索引将添加,对索引大小监控能够确保有足够的磁盘空间,以适应未来的数据添加需求。
Oracle性能分析7:创建索引的更多相关文章
- Oracle性能分析12:对象统计信息
对象统计信息描写叙述数据是如何在数据库中存储的,查询优化器使用这些统计信息来做出正确的决定.Oracle中有三种类型的对象统计信息:表统计.列统计和索引统计.而在每种类型中,有细分为:表或索引级别的统 ...
- MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...
- oracle 物化视图及创建索引
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...
- oracle海量数据中提升创建索引的速度
基本信息情况: 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 操作系统版本:Ce ...
- Oracle性能分析3:TKPROF简介
tkprof它是Oracle它配备了一个命令直插式工具,其主要作用是将原始跟踪文件格文本文件的类型,例如,最简单的方法,使用下面的: tkprof ly_ora_128636.trc ly_ora_1 ...
- Oracle性能分析11:系统统计信息
早期Oracle查询优化器的开销计算是基于运行SQL语句所须要的物理读,这种方法被叫做I/O开销模式(I/O cost model),这种方法的主要缺点是觉得单块读和多块读开销相当.在Oracle 8 ...
- Oracle性能分析1:开启SQL跟踪和获取trace文件
当Oracle查询出现效率问题时,我们往往须要了解问题所在,这样才干针对问题给出解决方式.Oracle提供了SQL运行的trace信息,当中包括了SQL语句的文本信息.一些运行统计,处理过程中的等待, ...
- Oracle 性能分析
1.--查出耗时长的 10条SQL select * from (select v.sql_id, v.child_number, v.sql_text, v.elapsed_time, v.cpu_ ...
- Mysql高级操作学习笔记:索引结构、树的区别、索引优缺点、创建索引原则(我们对哪种数据创建索引)、索引分类、Sql性能分析、索引使用、索引失效、索引设计原则
Mysql高级操作 索引概述: 索引是高效获取数据的数据结构 索引结构: B+Tree() Hash(不支持范围查询,精准匹配效率极高) 树的区别: 二叉树:可能产生不平衡,顺序数据可能会出现链表结构 ...
随机推荐
- [Swust OJ 1097]--2014(数位dp)
题目链接:http://acm.swust.edu.cn/problem/1097/ Time limit(ms): 1000 Memory limit(kb): 32768 今年是2014年,所 ...
- Java Interface,反射
先看代码, package reflect; //Class Word public class Word implements OfficeAble{ public static void main ...
- springmvc中使用response的out.print问题
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws E ...
- Flask web开发 处理Ajax请求
本文介绍如何处理ajax请求, 一.处理ajax的post请求 举例一: js代码举例如下: var id = obj.parentNode.parentNode.id; $.post("/ ...
- 设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)
设计模式 ( 二十 ) 访问者模式Visitor(对象行为型) 1.概述 在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象, ...
- 设计模式(七)组合模式Composite(结构型)
设计模式(七)组合模式Composite(结构型) 1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面. 例子1:就是多级树形菜单. 例子2:文件和文件夹目录 2.问题 ...
- spider-web 是爬虫的网页版,使用xml配置
spider-web 是爬虫的网页版,使用xml配置,支持大部分页面的爬取,支持爬取内容的保存.下载等. 其中配置文件格式为: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- (未解决)在JSTL中,session 和 sessionScope 有什么区别 ??
在JSP页面中,使用JSTL标签获取Session中的值并显示 为何当使用 ${session.user} 时,页面跳转后,第一次能够成功显示, 但是单击按钮重定向的时候,就获取不到了? 而使用 ${ ...
- coreldraw圆形裁剪
裁剪方法: http://zhidao.baidu.com/link?url=9-OuTkkr7igOHgKDOhJgU6iUYY5MeGEGdNXX8p6RGq79Im4va0UdMAmH4gSDz ...
- sublime2 c++的一些使用配置
1 下载安装好tdw gcc后,配置好环境变量后,配置sublime2. tools->build system-> new build system... 里面输入: { "c ...