DML操作是否维护不可见索引?

所以我决定进行模拟,看看发生了什么(我正在学习oracle大约7个月,可能是错误),我知道在正常索引中维护了DML操作(当DML操作引起时更新了索引),但是我想检查一下是否维护的DML操作中的invisible indexes。现在我创建表=>

create table emin1 ( id number primary key,nomre number );

insert into emin1 values(1,1);
insert into emin1 values(2,1);

首先获取索引名称(我没有创建索引),然后在normal index =>

中使用了analyst
SQL> select index_name,table_name  from user_indexes a where table_name = 'EMIN3';

INDEX_NAME      TABLE_NAME
--------------- ---------------
SYS_C008422     EMIN3

analyze index SYS_C008422 validate structure;

SQL> select name,lf_rows,distinct_keys from index_stats;

NAME               LF_ROWS DISTINCT_KEYS
--------------- ---------- -------------
SYS_C008422              2             2

我不知道index_stats中的大多数列,而是选择DISTINCT_KEYS列(我只知道:))),在静力学之后,我再次插入2行并再次进行分析=>

insert into emin1 values(3,1);
insert into emin1 values(4,1);

analyze index SYS_C008422 validate structure;

SQL>  select name,distinct_keys from index_stats;

NAME               LF_ROWS DISTINCT_KEYS
--------------- ---------- -------------
SYS_C008422              4             4

因此,在插入操作之后,我们看到index_stats中的值发生了变化(这意味着保持不变),在normal index之后,我将其强制设置为invisible index =>

SQL> alter index SYS_C008422 invisible;

Index altered.

插入一些行=>

insert into emin1 values(5,1);
insert into emin1 values(6,1);
insert into emin1 values(7,1);

SQL> analyze index SYS_C008422 validate structure;

Index analyzed.

SQL> select name,distinct_keys from index_stats;

NAME               LF_ROWS DISTINCT_KEYS
--------------- ---------- -------------
SYS_C008422              7             7

所以它又被改变了,我不知道我是否正确,但是我想知道专家的意见,因为在google中搜索了更多有关此问题的信息,但是我找不到明确的答案,因此我模拟了一下以查看DML操作中发生了什么,我找到了这种方法,并且我认为这将对更多的初学者有所帮助。

wyq_1234 回答:DML操作是否维护不可见索引?

很容易混淆索引的两个重要属性:

1)可见性。如您所见,由于DML,这不会影响索引的基础维护,它仅在设计出运行查询的最佳方法时控制该索引是否适合优化器使用。 “可见性”与优化程序关联。例如,如果使索引不可见,但是该索引定义为UNIQUE,那么请放心,如果您尝试插入重复项,则该不可见索引仍会引发错误。

2)可用性。索引也可以设置为“不可用”。这是DML发生时数据库将不再更新索引中条目的地方。因此,不能简单地使用索引,因为它不再代表索引的真实状态。我们通常使索引无法使用,从而无法在表上更有效地执行大型操作。在大型操作结束时,我们需要在该索引上发出REBUILD以便使其与(已更改的)表数据重新对齐,从而使其再次可用。

希望有帮助。

本文链接:https://www.f2er.com/3167218.html

大家都在问