Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 关于索引压缩_Oracle_Database Performance_Database Administration_Sqlperformance_Sql Tuning - Fatal编程技术网

Oracle 关于索引压缩

Oracle 关于索引压缩,oracle,database-performance,database-administration,sqlperformance,sql-tuning,Oracle,Database Performance,Database Administration,Sqlperformance,Sql Tuning,我在互联网上搜索过有关索引压缩的信息。但是找不到答案 我的问题是, 索引段中的新条目的索引压缩是如何工作的?(将此主题保留在基本压缩主题中,即不需要高级压缩许可证的主题中) 索引由两种类型的块组成-分支和叶 分支块总是“压缩”的,因为我们尽可能少地存储,但仍然能够成功地指向树中的下一级(分支或叶)。在不影响指针完整性的情况下,我们从键上剥离尽可能多的后缀。例如,如果分支块需要区分“SMITH”和“ADAMS”两个键,那么存储“S”和“a”就足够了,而不是存储完整的键 如果在创建/重建索引时指定压

我在互联网上搜索过有关索引压缩的信息。但是找不到答案

我的问题是,

索引段中的新条目的索引压缩是如何工作的?

(将此主题保留在基本压缩主题中,即不需要高级压缩许可证的主题中)

索引由两种类型的块组成-分支和叶

分支块总是“压缩”的,因为我们尽可能少地存储,但仍然能够成功地指向树中的下一级(分支或叶)。在不影响指针完整性的情况下,我们从键上剥离尽可能多的后缀。例如,如果分支块需要区分“SMITH”和“ADAMS”两个键,那么存储“S”和“a”就足够了,而不是存储完整的键

如果在创建/重建索引时指定压缩前缀因子,则叶块将被压缩。这是一种简单的重复数据消除机制(因为如果你采用更“严肃”的压缩机制,你将付出CPU代价)。例如,如果您有三个键(最后一个、第一个)的名称

(约翰·史密斯) (史密斯,迈克) (琼斯,苏)

然后,前导压缩1将沿以下线创建结构:

前缀:SMITH,指向条目JOHN和MIKE 前缀:琼斯,指向苏

因此,每个叶只存储一次“SMITH”,而不是两次

因此,在索引维护方面,与正常索引维护没有太大区别,即,一行进入,我们需要对受影响的引导块进行适当的更改。如果是非压缩索引,则完整键进入叶。如果是压缩索引,我们将其拆分为压缩前缀和余数,并相应地调整叶块。

(将其保留在基本压缩主题中,即不需要高级压缩许可证的主题)

索引由两种类型的块组成-分支和叶

分支块总是“压缩”的,因为我们尽可能少地存储,但仍然能够成功地指向树中的下一级(分支或叶)。在不影响指针完整性的情况下,我们从键上剥离尽可能多的后缀。例如,如果分支块需要区分“SMITH”和“ADAMS”两个键,那么存储“S”和“a”就足够了,而不是存储完整的键

如果在创建/重建索引时指定压缩前缀因子,则叶块将被压缩。这是一种简单的重复数据消除机制(因为如果你采用更“严肃”的压缩机制,你将付出CPU代价)。例如,如果您有三个键(最后一个、第一个)的名称

(约翰·史密斯) (史密斯,迈克) (琼斯,苏)

然后,前导压缩1将沿以下线创建结构:

前缀:SMITH,指向条目JOHN和MIKE 前缀:琼斯,指向苏

因此,每个叶只存储一次“SMITH”,而不是两次


因此,在索引维护方面,与正常索引维护没有太大区别,即,一行进入,我们需要对受影响的引导块进行适当的更改。如果是非压缩索引,则完整键进入叶。如果是压缩索引,我们会将其分为压缩前缀和剩余部分,并相应地调整叶块。

我不是100%确定,但现在大多数数据库都会自动更新索引和数据操作,因此,索引压缩也应遵循此规则,并在索引发生更改时更新或修改自身。这意味着,一旦创建键压缩索引,它将像普通索引一样工作,除非发生特定事件,否则不需要担心。你为什么要问这个问题?您是出于好奇而想知道内部实现,还是想知道索引压缩是如何工作的,以确保您的数据库能够正确地利用它?我不是100%确定,但现在大多数数据库都会自动更新索引,然后进行数据操作,因此,索引压缩也应遵循此规则,并在索引发生更改时更新或修改自身。这意味着,一旦创建键压缩索引,它将像普通索引一样工作,除非发生特定事件,否则不需要担心。你为什么要问这个问题?您是出于好奇而想知道内部实现,还是想知道索引压缩是如何工作的,以确保您的数据库能够正确地利用它?