+ All Categories
Home > Documents > Please install fonts before using - Oracle

Please install fonts before using - Oracle

Date post: 24-Dec-2021
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
42
Chulnam Kim SE HUB Data Management Dec 07, 2020 Automatic Indexing Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted 1
Transcript
Page 1: Please install fonts before using - Oracle

Chulnam Kim

SE HUB Data Management

Dec 07, 2020

Automatic Indexing

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted1

Page 2: Please install fonts before using - Oracle

Safe harbor statement

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.

The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation.

2 Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 3: Please install fonts before using - Oracle

索引的历史

Agenda

1

2

3

4

5

自动化索引的来龙去脉

自动化索引的驾驭

使用案例及使用场景

3

实验操作DEMO

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 4: Please install fonts before using - Oracle

4

在关系型数据库索引是使得查询加速的重要手段,而如何设计和创建有效的索引,长期以来是一项复杂的任务

1. 索引的历史

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 5: Please install fonts before using - Oracle

5

1. 索引的历史索引的作用

1)加快数据的检索,类似于书籍的索引。

2)索引是建立在表上的可选对象,取代默认的全

表扫描检索方式,从而提高检索效率

3)创建或者删除不会影响基本的表。

4)索引一旦建立,oracle会自动管理索引,索引删

除,不会对表产生影响。

5)表上是否有索引,sql语句的用法不变。

6)oracle创建主键时会自动在该列上创建索引。

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 6: Please install fonts before using - Oracle

6

1. 索引的历史索引类型

逻辑上 INDEX_TYPE

单列/多列索引 NORMAL

Unique/NonUnique NORMAL

LOB LOB

Index Organized Table IOT

Function-based函数索引 NORMAL

Domain(文本空间和图像) DOMAIN

Bitmap 位图索引 BITMAP

物理上 分区类型

Partitioned 分区索引

NonPartitioned 非分区索引

B-tree: INDEX_TYPE

Normal 正常型B树 NORMAL

Reverse Key 反转型B树 NORMAL/REV

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 7: Please install fonts before using - Oracle

7

• Streaming Insert for IoT• Active Data Guard Updates• Automatic Indexing• SQL Query of Object Stores• JSON Enhancements

Long-term support

Premier support to March 2023

Extended support to March 2026

2019

Oracle 19c 的创新

2. 自动化索引的来龙去脉

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 8: Please install fonts before using - Oracle

8

2. 自动化索引的来龙去脉自动索引提供以下功能

• 以指定时间间隔定期运行自动化索引特性。

• 分析应用程序工作负载,并相应地创建新索引并删除现有性能不佳的索引以提高数

据库性能。

• 重建由于表分区维护操作而标记为不可用的索引,例如ALTER TABLE MOVE。

• 提供了PL/SQL API接口,用于在数据库中配置自动索引并生成与自动索引操作相

关的报告。

注:

1. 当前版本Auto indexes 是 Local B-tree 索引

2. 支持分区和非分区表(Only Local Index),不支持临时表

3. 自动创建只针对 = 的查询,不支持 范围、模糊、Min/Max等查询

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 9: Please install fonts before using - Oracle

9

Automatic indexing支持

• 对于On-Prem环境仅支持 Oracle Exadata 平台

• Oracle Cloud 支持 ExaCS, ADB

2. 自动化索引的来龙去脉

出处: https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-0F9EB85D-4610-4EDF-89C2-4916A0E7AC87

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 10: Please install fonts before using - Oracle

10

2. 自动化索引的来龙去脉通过启用“_exadata_feature_on”初始化参数,可以解决测试问题。

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 11: Please install fonts before using - Oracle

11

• 自动化索引是基于手动SQL调优的常用方法

• 通过内置的专家系统不断评估(机器学习)执行 的SQL

和相关基础表以确定要创建哪些索引以及可能删除哪些

索引。

• 自动识别索引候选项,自动创建、验证、判断和 决策,

然后持续监视,不影响既有SQL的执行计划

• 整个过程是全自动的,不需要用户干预

• 透明度与复杂的自动化同样重要(所有调整工作有提供

报告供审核)

Capture

Identify

VerifyDecide

Monitor

无需人介入的全自动化索引的创建

2. 自动化索引的来龙去脉

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 12: Please install fonts before using - Oracle

2. 自动化索引的来龙去脉

12

Capture(获取)

• 定期从ASTS (Automatic SQL Tuning Set)内的应用程序工作负载中获取SQL语句

• SQL、执行计划、绑定变量、执行统计等

Identify Candidates(选定后补)

• 识别并生成对新抓取的SQL有帮助的候选索引

• 创建具有Unusable and Invisible属性的索引候补(metadata only)

• 删除将作为新生成的候选人索引被废弃的索引(逻辑合并)

Verify(确认)

• 询问Optimizer 索引候补是否用于SQL

• 物理生成Invisible索引,执行SQL,测试索引是否能够提升性能

• 所有校验都在应用程序之外执行

Decide(决定)

• 如果所有SQL的性能都提高,索引就会变成Visible

• 如果所有SQL的性能都变差,索引就会保持Invisible

• 虽然有些SQL会导致性能下降,但如果整体性能提高,索引就会变成Visible

Monitor(监控)

• 对使用索引的持续监测。

• 删除长期未使用的自动生成的索引

Automatic Indexing的执行过程

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 13: Please install fonts before using - Oracle

13

2. 自动化索引的来龙去脉Unusable and Invisible 的区别

可用性Usability 可见性Visibility

被优化器忽略的不可用索引不是由DML操作

维护的。不可使用的索引可以提高批量加载

的性能。您可以使索引不可用,然后重新构

建它,而不是删除索引然后重新创建它。不

可用的索引和索引分区不会占用空间。当您

使一个可用的索引不可用时,数据库会删除

它的索引段

不可见索引由DML操作维护,但优化器默认

不使用。使索引不可见是使其不可用或删除

它的另一种选择。不可见索引对于测试在删

除索引之前删除它或在不影响整个应用程序

的情况下临时使用索引特别有用。

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 14: Please install fonts before using - Oracle

14

2. 自动化索引的来龙去脉自动索引和Cursor的变化

create index IX_TEST_ID on TEST (ID) invisible;

alter index IX_TEST_ID visible;

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 15: Please install fonts before using - Oracle

15

2. 自动化索引的来龙去脉以下是自动索引功能的TASK

select TASK_NAME,DESCRIPTION,ADVISOR_NAME from DBA_ADVISOR_TASKS;

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Automatic Indexing 后台服务每隔15分钟运行一次

Page 16: Please install fonts before using - Oracle

16

2. 自动化索引的来龙去脉以下是自动索引功能全部的执行过程

1 Compiled statements 18 Significant improvement with index33 Index marked unusable4 New index candidate 19 Ineffective indexes 34 Index marked visible5 Candidate indexes 19 Effective indexes 35 Index marked invisible6 Index for rebuild 20 Error for statement 37 Auto index clean up work done7 Rebuilt indexes 21 Timeout for statement 40 Auto index compilation verification done8 Redundant index 22 No buffer gets for statement 42 Statement locked down9 Redundant indexes 23 Statement regressed or no significant improvement10 Misestimate in sql_id 24 Regressed statements 43 Max space budget reached11 Pruned indexes 25 Statement produced same plan 44 Report mode12 Lockdown candidate 26 Statement has same performance 45 Out-of-space during rebuild13 Locked down statements 27 Unchanged statements 46 Statements in STS14 Indexes in first verification 28 Statement improved 47 Starting auto index execution15 Indexes in second verification 29 Improved statements 48 Resuming auto index execution16 No significant improvement with index 30 Index created 49 Skipping table from auto index creation17 Ineffective indexes 31 Index dropped 50 Auto index execution end18 No significant improvement with index 32 Index rebuilt 51 Implement validated auto index

select ATTR7,SYS.DBMS_AUTO_INDEX_INTERNAL.FINDING_NAME(ATTR7) from (select ROWNUM

attr7 from XMLTABLE('1 to 200')) order by 1;

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 17: Please install fonts before using - Oracle

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted17

SQL Tuning Sets SQL Performance Analyzer

Example 1 1000 buffer gets / exe 900 buffer gets → similar 🔀 x1.11

Example 2 1000 buffer gets / exe 800 buffer gets → improvement ✅ x1.25

Example 3 1000 buffer gets / exe 1050 buffer gets → similar 🔀 x0.95

Example 4 1000 buffer gets / exe 1100 buffer gets → regression ❌ x0.80

2. 自动化索引的来龙去脉自动索引的改进(Improvement)和退化(Regression)

• 执行来自SQL Tuning Sets 的SQL

• 在SPA(SQL Performance Analyzer) 执行

• Invisible 索引只对 SPA(SQL Performance Analyzer) 可见

• 运行并收集执行统计信息

• 与STS(SQL Tunning Set)统计数据进行比较,减去解析时间

Page 18: Please install fonts before using - Oracle

18

2. 自动化索引的来龙去脉Automatic Indexing的问世将可大幅度减轻工作负荷

•Automatic Indexing执行时使用

CPU,Mem及Storage进行

•Resource manager plan会限制其只

使用1 CPU

•创建索引时可指定其使用的

Temporary Tablespace

•对于存储索引的Default Tablespace

可以进行制定且限制其使用量

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 19: Please install fonts before using - Oracle

19

No. 参数名字 参数内容

1 AUTO_INDEX_MODE 启用、禁用自动索引

2 AUTO_INDEX_SCHEMA 指定用户启用自动索引

3 AUTO_INDEX_RETENTION_FOR_AUTO 指定未使用的索引的保留时间

4 AUTO_INDEX_DEFAULT_TABLESPACE 指定索引的表空间

5REPORT_ACTIVITY

REPORT_LAST_ACTIVITY生成自动化索引报告

6DROP_AUTO_INDEXES

DROP_SECONDARY_INDEXES删除自动索引

7 AUTO_INDEX_REPORT_RETENTION 为自动索引 logs指定保留期

8 AUTO_INDEX_COMPRESSION 索引压缩

3. 自动化索引的驾驭通过 DBMS_AUTO_INDEX.CONFIGURE 存储过程进行配置

https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_AUTO_INDEX.html#GUID-A40B3A11-4571-46CE-9B12-563F46CC2B0A

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 20: Please install fonts before using - Oracle

20

3. 自动化索引的驾驭1. AUTO_INDEX_MODE - 启用、禁用自动索引

启用:

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');

启用,但是只作为不可见自动索引,无法被SQL所使用

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','REPORT ONLY');

禁用:

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 21: Please install fonts before using - Oracle

21

3. 自动化索引的驾驭1. AUTO_INDEX_MODE - 启用、禁用自动索引

DBA_INDEXES, ALL_INDEXES, USER_INDEXES 试图:

SYS_AI ======➔ 自动索引创建的索引名字的开头,以与手动创建索引进行区分

新增 AUTO 列,YES为自动索引创建

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 22: Please install fonts before using - Oracle

22

3. 自动化索引的驾驭2. AUTO_INDEX_SCHEMA - 只对特定用户启用自动索引

单纯启动自动索引,默认所有用户都可以使用自动索引

除了用户LEI之外,其他用户使用自动索引

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'LEI', FALSE);

只有LEI用户可使用自动索引

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'LEI', NULL);

所有用户都可以使用自动索引

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', NULL, TRUE);

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 23: Please install fonts before using - Oracle

23

3. 自动化索引的驾驭3. AUTO_INDEX_RETENTION_FOR_AUTO - 指定未使用的索引的保留时间

配置手动创建的索引,未使用60天时删除(未配制时默认永不删除)

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_RETENTION_FOR_MANUAL', '60');

配置手动索引永远不删除

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_RETENTION_FOR_MANUAL', NULL);

指定自动索引,在未使用60天后删除(默认值373天)

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_RETENTION_FOR_AUTO', '60');

重置自动索引保留时间,恢复到373天后删除

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_RETENTION_FOR_AUTO', NULL);

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 24: Please install fonts before using - Oracle

24

3. 自动化索引的驾驭4. 指定索引的表空间

指定表空间TBS_AUTO

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_DEFAULT_TABLESPACE', 'TBS_AUTO');

指定表空间的百分比用于存储自动索引指定表空间总大小的百分比用于存储自动索引相关数据。如:指定5%用于存储自动索引

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SPACE_BUDGET', '5’);

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 25: Please install fonts before using - Oracle

25

3. 自动化索引的驾驭5. REPORT - 生成自动化索引报告(1/3)

指定时间间隔、报告类型、级别、内容生成报告declarereport clob := null;

beginreport := DBMS_AUTO_INDEX.REPORT_ACTIVITY(

activity_start => TO_TIMESTAMP('2018-11-01', 'YYYY-MM-DD'), --开始时间activity_end => TO_TIMESTAMP('2018-12-01', 'YYYY-MM-DD'), --结束时间type => 'HTML', --报告类型section => ‘ALL -ERRORS’, --报告内容 SUMMARY, INDEX_DETAILS, VERIFICATION_DETAILS, ERRORSlevel => ‘BASIC’); --报告级别 允许值(BASIC ,TYPICAL ,ALL )

end;

通过sqlplus简化查看

select DBMS_AUTO_INDEX.REPORT_ACTIVITY(sysdate-1/24,NULL,'text','all','all') REPORT from DUAL;

通过DBMS_AUTO_INDEX包中的REPORT_ACTIVITY和REPORT_LAST_ACTIVITY两个存储过程来生成报告

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 26: Please install fonts before using - Oracle

26

3. 自动化索引的驾驭5. REPORT - 生成自动化索引报告(2/3)

通过DBMS_AUTO_INDEX包中的REPORT_ACTIVITY和REPORT_LAST_ACTIVITY两个存储过程来生成报告

上次自动索引操作的摘要,索引详细信息和错误信息。报告以HTML格式生成

declarereport clob := null;

beginreport := DBMS_AUTO_INDEX.REPORT_LAST_ACTIVITY(

type => 'HTML',section => 'SUMMARY +INDEX_DETAILS +ERRORS',level => 'BASIC');

end;

通过sqlplus简化查看

select DBMS_AUTO_INDEX.REPORT_LAST_ACTIVITY() REPORT from DUAL;

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 27: Please install fonts before using - Oracle

27

3. 自动化索引的驾驭5. REPORT - 生成自动化索引报告(3/3)

REPORT_ACTIVITY报告例子

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 28: Please install fonts before using - Oracle

28

3. 自动化索引的驾驭6. 删除自动索引

删除单个自动索引,并支持重新创建

EXEC DBMS_AUTO_INDEX.DROP_AUTO_INDEXES('SH','"SYS_AI_612ud3j5ngf0c"',TRUE);

删除所有SH的索引,并允许重新创建

EXEC DBMS_AUTO_INDEX.DROP_AUTO_INDEXES('SH',NULL,TRUE);

删除所有索引,除用于约束的索引外的所有索引

EXEC DBMS_AUTO_INDEX. DROP_SECONDARY_INDEXES(‘SH');

EXEC DBMS_AUTO_INDEX. DROP_SECONDARY_INDEXES(‘SH’,’EMP’); --删除只针对表 EMP 的 Index

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 29: Please install fonts before using - Oracle

29

3. 自动化索引的驾驭7. & 8. 为自动索引 logs 指定保留期&索引压缩

缺省是373天,如下示例表示保留60天

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_REPORT_RETENTION', '60');

恢复到缺省373天

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_REPORT_RETENTION',NULL);

索引压缩

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_COMPRESSION','ON');

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_COMPRESSION',NULL); - Default

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 30: Please install fonts before using - Oracle

30

3. 自动化索引的驾驭查看当前PDB的自动索引配置信息

select * from DBA_AUTO_INDEX_CONFIG;

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 31: Please install fonts before using - Oracle

31

3. 自动化索引的驾驭通过CDB_AUTO_INDEX_CONFIG,查看CDB和所有PDB的所有配置

select * from CDB_AUTO_INDEX_CONFIG;

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 32: Please install fonts before using - Oracle

32

参数名字 参数内容

DBA_AUTO_INDEX_EXECUTIONS 自动索引任务执行的历史记录

DBA_AUTO_INDEX_STATISTICS 与自动索引相关的统计信息

DBA_AUTO_INDEX_IND_ACTIONS 在自动索引上执行的操作

DBA_AUTO_INDEX_SQL_ACTIONS 在SQL上执行的用于验证自动索引的操作

DBA_AUTO_INDEX_CONFIG 查看自动索引的配置

3. 自动化索引的驾驭自动化索引相关视图

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 33: Please install fonts before using - Oracle

33

3. 自动化索引的驾驭自动索引的执行周期更改

自动索引的执行周期默认为900秒(15分钟),可通过以下SQL查看

select * from SYS.SMB$CONFIG where parameter_name like '%AUTO_INDEX_TASK_INTERVAL%';

可通过以下命令更改执行周期(120秒,两分钟 ex.)

exec DBMS_AUTO_INDEX_INTERNAL.CONFIGURE('_AUTO_INDEX_TASK_INTERVAL', '120', allow_internal => true);

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 34: Please install fonts before using - Oracle

34

3. 自动化索引的驾驭通过Automatic Indexing 的 Hints 进行管理

也可指定不使用某特定的索引

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

Page 35: Please install fonts before using - Oracle

35

3. 自动化索引的驾驭自动索引可以执行的DDL

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted

可以执行

不可执行

Page 36: Please install fonts before using - Oracle

4. 使用案例及使用场景

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted36

使用案例

Page 37: Please install fonts before using - Oracle

4. 使用案例及使用场景

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted37

使用案例

Page 38: Please install fonts before using - Oracle

4. 使用案例及使用场景

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted38

• 根据精通索引调优的性能工程师的工作实现索引- 但是它可以一天24小时,一周7天,一年52

•它不是顾问- DBA不需要提供任何具体的输入(工作量等)- DBA不需要采取任何行动

• 互动仅限于- 可选的设置参数,例如索引存储的位置等。- 查看执行的操作及其对应用程序的影响的报告

• 适用于 OLTP, DW, Mixed Workload

• 它能适应数据和应用程序的变化

适合自动索引的使用场景

Page 39: Please install fonts before using - Oracle

5. 实验操作DEMO

https://www.notion.so/chulnamkim/Autonomous-Indexing-Lab03-a5dfbd064f34424abdff98daa7ceaa65

请访问下面链接,查看 LAB 的具体操作

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted39

Page 40: Please install fonts before using - Oracle

Thank you

Chulnam Kim

SE HUB Data Management

[email protected]

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted40

Page 41: Please install fonts before using - Oracle

Confidential – © 2019 Oracle Internal/Restricted/Highly Restricted41

Q & A

Page 42: Please install fonts before using - Oracle

Confidential – © 2020 Oracle Internal/Restricted/Highly Restricted42


Recommended