Oracle(12)Managing Indexes

这篇具有很好参考价值的文章主要介绍了Oracle(12)Managing Indexes。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

目标:

一、基础知识

1、Classification ofindexes 索引的分类

2、B-Tree vs Bitmap 

3、Creating Indexes: Guidelines 创建索引:准则

4、Offline Index Rebuild 脱机索引重建

5、RebuildingIndexes 重建索引

6、Online Index Rebuild 在线索引重建

7、Index Coalescing 索引合并

8、Getting Index Information 获取索引信息

二、基础操作

1、创建普通索引

 2、Creating B-Tree Indexes 创建B树索引

3、创建Bit map索引

4、Storage Params for indexes 修改索引的存储参数

5、Alloc & Dealloc Index Space 分配和取消分配索引空间

6、Rebuilding Indexes 重建索引

7、Rebuilding indexes Online 在线重建索引

8、Coalescing Indexes 合并索引(解决碎片化问题)

9、Checking Index Validity 检查索引有效性

10、Dropping Indexes 删除索引

11、Identifying Unused indexes 识别未使用的索引


Oracle(12)Managing Indexes,数据库运维,oracle,数据库,运维,linux

Managing Indexes 管理索引

目标:

  • 列出不同类型的索引及其用法
  • 创建各种类型的索引
  • 重组索引
  • 维护索引
  • 监视索引的使用情况
  • 获取索引信息

一、基础知识

1、Classification ofindexes 索引的分类

  • Logical 逻辑分类:
    • Single column or concatenated 单列或级联
    • Unique or nonunique 唯一或非唯一
    • Function-based 基于功能的
    • Domain 域名
  • Physical 物理分类:
    •  Partitioned or nonpartitioned  分区或非分区
    • B-tree: Normal or reverse key B树:正常键或反向键
      • Oracle(12)Managing Indexes,数据库运维,oracle,数据库,运维,linux
      • 每一个绿色结点都是一个Block,真正的数据是放在Leaf结点上,而Root和Branch只是为了找到Leaf结点
    • Bitmap :位图
      • Oracle(12)Managing Indexes,数据库运维,oracle,数据库,运维,linux

2、B-Tree vs Bitmap 

  • B树(大部分索引使用的都得B树索引)
    • 适用于高基数色谱柱
    • 更新的按键相对便宜
    • 使用OR谓词的查询效率低下
    • 对OLTP有用
  • 位图
    • 适用于低基数列
    • 对关键列的更新非常昂贵
    • 对于使用OR谓词的查询是有效的
    • 对数据仓库很有用

3、Creating Indexes: Guidelines 创建索引:准则

  • 平衡查询和DML需求
  • 放置在单独的表空间中
  • 使用统一的扩展大小:五个块的倍数或表空间的最小扩展大小
  • 对于大型索引,请考虑NOLOGING
  • INITRANS通常在索引上的块比在相应的表上更高

4、Offline Index Rebuild 脱机索引重建

  • 1.Lock the table 创建锁表
  • 2.Create a new, temporary index by reading againstthe contents of the existing index. 通过读取现有索引的内容来创建新的临时索引。
  • 3.Drops the original index.删除原始索引。
  • 4. Renames the temporary index to make it seem tobe the original index.重命名临时索引,使其看起来像是原始索引。
  • 5.Remove the table lock..移除表锁。

5、RebuildingIndexes 重建索引

在以下情况下重建索引:

  • 必须将现有索引移动到不同的表空间。如果索引与表在同一个表空间中,或者需要跨磁盘重分发对象,则可能需要这样做。
  • 一个索引包含许多已删除的条目。这是滑动索引的典型问题,例如对订单表的订单号的索引,其中已完成的订单被删除,编号更高的新订单被添加到表中。如果有几个旧订单未完成,则可能有几个索引叶块,除了几个已删除的条目外,其余都是索引叶块。
  • 必须将现有的普通索引转换为反向键索引。从早期版本的甲骨文服务器迁移应用程序时可能会出现这种情况。
  • 使用ALTERTABLE将索引的表移到了另一个表空间..移动表空间命令。

6、Online Index Rebuild 在线索引重建

  • 1.创建表所。
  • 2.创建一个新的临时空索引和一个IOT来存储正在进行的DML。
  • 3.松开表锁。
  • 4.通过读取现有索引的内容填充临时索引。
  • 5将lOT的内容与新索引合并
  • 6.锁好表锁。
  • 7.最后从IOT合并并删除原始索引。
  • 8重命名临时索引,使其看起来像是原始索引。
  • 9.移除表锁。

7、Index Coalescing 索引合并

  • 沿着索引的底部扫描。
  • 如果相邻的节点可以组合成一个节点,那么就这样做
  • 合并索引比索引重建效率更快

8、Getting Index Information 获取索引信息

可以通过查询以下视图来获取有关索引的信息:

  • DBA_INDEXES:DBA索引:提供关于索引的信息
  • DBA_IND_COLUMNS:数据库管理系统IND列:提供有关索引的列的信息
  • V$OBJECT_USAGE:对象用法:提供有关索引使用的信息

二、基础操作

1、创建普通索引

格式:CREATE INDEX 索引名字 ON 添加索引的表字段

样例:

CREATE INDEX t_idX1 ON t(id);

创建一个索引,名字为t_idX1在t表的id字段上

选择是否创建索引需要根据具体情况而论,如果你需要经常查询且数据量比较大的时候创建索引会大大增加查询的速度,但是对于经常插入、修改等操作的数据不适合创建索引,因为索引会使得这写操作速度降低

 2、Creating B-Tree Indexes 创建B树索引

CREATE INDEX hr.employees_last_name_idx
ON hr.employees (last_name)
PCTFREE 30 -- 如果块的剩余空间小于百分之30就无法插入
STORAGE (INITIAL 200K NEXT 200K
PCTINCREASE O MAXEXTENTS 50)
TABLESPACE indx;

简单的创建B树索引的话只需要写以上代码前两行即可(后边参数默认),高级的话需要全写进行修改参数。

3、创建Bit map索引

格式:CREATE BITMAP INDEX 索引名 ON 添加索引的表字段;

CREATE BITMAP INDEX my_bit_idx ON t(sex);

4、Storage Params for indexes 修改索引的存储参数

ALTER INDEX employees_last_name idx
STORAGE (NEXT 400K
MAXEXTENTS 100);

5、Alloc & Dealloc Index Space 分配和取消分配索引空间

分配

ALTER INDEX orders_region_id_idx
ALLOCATE EXTENT (SIZE 200K
DATAFILE '/DISK6/indx01.dbf');

取消分配

ALTER INDEX orders_id_idx
DEALLOCATE UNUSED:

6、Rebuilding Indexes 重建索引

  • 使用ALTERINDEX命令可以:
    • 将索引移动到不同的表空间
    • 通过删除已删除的条目来提高空间利用率
ALTER INDEX orders_region_id_idx REBUILD
TABLESPACE indx02;

7、Rebuilding indexes Online 在线重建索引

  • Indexes can be rebuilt with minimal table locking 可以用最少的表锁定重新生成索引
    • ALTER INDEX orders_id_idx REBUILD ONLINE;
  • Some restrictions still apply 一些限制仍然适用

8、Coalescing Indexes 合并索引(解决碎片化问题)

Oracle(12)Managing Indexes,数据库运维,oracle,数据库,运维,linux文章来源地址https://www.toymoban.com/news/detail-739862.html

ALTER INDEX orders_id_idx COALESCE;

9、Checking Index Validity 检查索引有效性

ANALYZE INDEX orders_region_id_idx
VALIDATE STRUCTURE:

10、Dropping Indexes 删除索引

  • 在大容量加载之前删除并重新创建索引
  • 删除不经常需要的索引,并在必要时生成索引
  • 删除并重新创建无效索引
DROP INDEX hr.departments_name_idx;

11、Identifying Unused indexes 识别未使用的索引

  • To start monitoring the usage of an index:要开始监视索引的使用情况
  • ALTER INDEX hr.dept_id_idx
    MONITORING USAGE
  • To stop monitoring the usage of an index:若要停止监视索引的使用情况:
  • ALTER INDEX hr.dept_id_idx
    NOMONITORING USAGE

到了这里,关于Oracle(12)Managing Indexes的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle 12c/19c PDB数据库配置自动启动

    在Oracle 12c/19c多租户环境中,默认情况下,使用startup命令启动数据库实例后,你会发现PDB数据库的状态为MOUNT状态,PDB不会随着CDB启动而启动。如下例子所示: Oracle 12.1.0.2之前,CDB启动后,所有的PDB都处于加载状态(MOUNTED)。CDB启动时,没有默认机制自动启动PDB。只能通过在

    2024年02月07日
    浏览(49)
  • 好文分享 | 记一次Oracle12c数据库SQL短暂缓慢问题分析

    本文为墨天轮社区作者 张sir 原创作品,记录了日常运维Oracle数据库过程中遇到的一个慢SQL问题的解决、优化过程,文章内容全面具体、分析到位,且含有经验总结,分享给各位。 这次出问题的数据库比较特殊,承接的系统交易要求很高,SQL基本都是短平快,响应时间基本不

    2024年02月05日
    浏览(43)
  • LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve

    接着前面的Langchain,继续实现读取YouTube的视频脚本来问答Indexes for information retrieve LangChain 实现给动物取名字, LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字 LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄 引用向量数据库Faiss 查看OpenAI model main.p

    2024年02月05日
    浏览(45)
  • 【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2024年02月05日
    浏览(35)
  • 为什么要给数据库加索引?转自 https: //blog.tankery.me/development/why-we-need-indexes-for-database

    这篇文章不是数据库索引的使用文档,不会给每个功能的使用都做介绍,而是通过我自己的案例,对案例中遇到的几个点做详细的说明。如果想查看具体的使用帮助,可以参考官网的文档:Query Planning “老谭,测试发现睡眠历史记录页面的打开速度太慢了,你给快速解决一下

    2024年02月03日
    浏览(30)
  • 数据库数据恢复-Oracle数据库数据恢复案例

    数据库数据恢复环境: Oracle数据库ASM磁盘组有4块成员盘。 数据库故障分析: Oracle数据库ASM磁盘组掉线 ,ASM实例无法挂载,用户联系我们要求恢复oracle数据库。 数据库数据恢复工程师拿到磁盘后,先将所有磁盘以只读方式进行扇区级别的镜像备份,后续的数据分析和数据恢

    2024年02月13日
    浏览(49)
  • Oracle数据库

    ①层次型数据库 ②网状型数据库 ③关系型数据库(主要介绍) E-R图:属性(椭圆形),实体(矩形),联系(菱形-一对一、一对多、多对多) 注:有的联系也有属性 关系型数据库的设计范式: 第一范式(1NF):属性不可再分,字段保证原子性 第二范式(2NF):在满足1

    2024年02月08日
    浏览(48)
  • Oracle 数据库恢复删除的数据

    需求描述: 同事让删除脏数据,结果删错了,需要恢复数据 思路: 利用闪回恢复数据只能恢复15分钟之内的,后面undo空间会被重写,就恢复不了,所以删除数据后,要谨慎再三确认,若发现不对,则利用闪回恢复 先查询删除时的时间节点的快照 查到时间戳之后 闪回恢复数

    2024年01月24日
    浏览(55)
  • 【数据库】日常使用PL/SQL 登录ORACLE 数据库查询数据

    一、PL/SQL 登录方式 username: ##访问数据库的账号 password: ##访问数据库的密码 Databse: ##数据库IP地址/实例名 数据库集群心跳地址/实例名 Connect as : ##Normal,如果使用sysdba账户登录选择SYSDBA 二、PL/SQL使用SQL语句查询 点击上方导航栏,New,选择SQL Window,即可再次输入要查询的

    2024年02月19日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包