关于ORACLE索引

oracle是一个庞大的知识体系,各个知识点之间存在着错综复杂的立体网状关系,孤立的引用某个
论点四处应用,南辕北辙的结果恐怕往往会伴随在你左右。同时,Oracle版本众多,同一个知识点在不同的版本里常有一些应用上的
区别,这也是需要引起足够重视的。
建立索引

分析索引
虽然cost-base优化技术帮助了避免在查询中使用不被选中(nonselective)的索引,但是SQL引擎必然一直对表的所有索引进行维护,而不管这个索引是否被使用。在定操作很多的应用中,索引的维护会消耗非常巨大的CPU和I/O资源(resourse),换句话说,请不要建立不必要的索引。
为了最优性能,删除(drop)所有不被使用的索引。你可以通过使用“ALTER INDEX MONITORING USAGE”这个监控功能一段时间,以观察索引的使用情况。这个监控功能记录了一个索引是否被使用。注意选择合适的工作量负载去监控(Be careful to select a representative workload to monitor)。
Indexes within an application sometimes have uses that are not immediately apparent from a survey of statement execution plans. An example of this is a foreign key index on a parent table, which prevents share locks from being taken out on a child table.
你可以通过“EXPLAIN PLAN”语句去判断你将要建立的索引是否会被你的应用用上。
有一点要注意:当你在调整一个语句的性能是可能会影响到其他的语句。举个例子,你建立了一个索引给一语句使用,同时,oracle优化器也可能让其他的语句来使用这个索引。从这一点上来说,在你调整了这些语句后,最好重新检查这些语句的性能。
注:
你可以通过“Oracle Index TuningWizard”去检测一个表的索引的使用效率。类示的功能还存在于“Virtual Index Advisor”和“Oracle Expert”。

优化索引
维护索引


索引管理指导(guidelines):
1. 插入数据后,再建索引;
2. 如果你频繁的想去检索一张大表(retrieve)15%以下的行的话,那么就建立索引;
3. 为了提高联合查询的速度,往往有必要把联合用到的字段建立索引;
4. 小表没必要建立索引
5. 有必要建立索引的字段往往具有如下一个或者多个的特征:
a. 字段的值比较具有唯一性
b. 具有比较广的值域(wide range of values),适合建立普通(regular)索引
c. 具有比较窄的值域(small range of values),适合建立位图(bitmap)索引
d. 一个字段具有较多的null值,但是,查询语句往往只查具有值的行
6. 具有如下特征的行不合适建立索引:
a. 字段值中有很多null,同时,又不去检索那些非null值
b. long, long raw字段
7. 在CREATE INDEX语句中,几个字段[注:被建立复合索引的字段]之间的先后关系会影响查询的性能。
一般情况下,把最常用的字段放在[复合索引位置中]最前面。举例说明:如果一个索引由三个字段组成:
col1, col2, col3,那么,如果仅查询col1或者col1+col2,那么,这两都的查询速度都会加快,而那些
只查询col2、col2或者col2+col3的语句将不会用到这个索引
8. 索引并不是越多越好,要注意表检索和表更新之间的性能衡
9. 指明索引的区块空间使用(Specify Index Block Space Use):
如果你计划往被索引的表里插很多数据,那么,PCTFREE值应该比较大;而如果被索引的表的数据相对变
化较小,那么,PCTFREE可以小一点[个人建议,如果表数据总是存在比较大的变动,那么,每次变动后,
重建索引更合适]
10. 估计索引的大小,并设置[合理的]存储参数
11. 为索引指定表空间:
表和索引建立在不同的表空间有利于性能[如果只有一个物理磁盘的话,意义不大]
12. 建立索引时考虑采用并行技术(Consider Parallelizing Index Creation)
并行建立一个索引时,存储参数被每个[并行的]查询服务进程(query sever process)单独使用,因此,
一个采用12个并行,INITIAL参数为5M的索引建立过程至少要用掉60M的存储[空间]
13. 建立索引时考虑使用“NOLOGGING”[参数],[这能带来不少的好处]
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值