GiST索引
GiST(Generalized Search Tree)也是一棵平衡树,B-tree和比较语义强关联,适用于(>、>=、=、<=、<)这五个操作符。但现代数据库中存储的一些数据,如地理位置、图像数据等这五个操作符可能没有实际意义,GiST索引允许定义规则来将数据分布到平衡树中,并允许定义方法来访问数据。例如,GiST索引可以定义一棵存储空间数据的R-Tree,支持相对位置运算符(如位于左侧、右侧、包含等)。
GiST屏蔽了数据库的内部工作机制,比如锁的机制和预写日志,使得实现新的GiST索引实例(或称作索引操作符类)的工作相对比较轻松。基于GiST架构的索引操作符类只需实现预定义的几个接口。
GIN索引
Generalized Inverted Tree倒排索引。主要用于多值类型,如数组、全文索引等。如果对应TID的列表很小,可以和元素放在一个页面内(称为posting list)。如果TID列表很大,需要使用更高效的数据结构B-tree,这棵B-tree存储在单独的页面中(称为posting tree)。
行存表支持的索引类型:B-tree(缺省值)、GIN、GiST。
列存表支持的索引类型:Psort(缺省值)、B-tree、GIN。
索引相关系统表
PG_AM
PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。表中各个字段的含义可以参考官方文档:https://opengauss.org/zh/docs/2.0.0/docs/Developerguide/PG_AM.html
PG_INDEX
PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。
对于分区表的partition local index,除了在pg_index中有一行数据外,每个分区的索引信息存储在pg_partition中。
表中具体字段含义参考官方文档:https://opengauss.org/zh/docs/2.0.0/docs/Developerguide/PG_INDEX.html,其中indisvalid、indisready、indcheckxmin等字段会在后续内容详细介绍。
除了上述两张表外,索引使用流程中涉及的相关的系统表还有很多,如 pg_class、pg_attribute、pg_depend、pg_constraint等不一一介绍了,大家参考官方文档。
原文链接:https://blog.csdn.net/enmotech/article/details/119362121




