暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
PG13索引去重
565
2页
0次
2020-09-16
5墨值下载
PG13
btree
索引去重
正文
PG13
一个重要的特性就是
Btree
索引去重。使得物理文件大小更小,减小
IO
,帮助
提升
select
性能。
GIN
tuple IDs
posting list
B-tree
Commit
0d86bbb70
引入了
B-tree
索引去重。只在索引页分裂的时候去重。这些额外的工作被减
少页分裂次数和索引大小平衡掉。
不会影响唯一索引?
每次
update
都会建一新的,每行版都需被索。因一个一索
会包含相同索引记录多次。如果
update
频繁时,也会减小唯一索引膨胀。
优点
小索小,空间是尽
RAM
缓存使
扫描索引更快并减小索引膨胀。
升级注意事项
pg_upgrade
REDINDEX
pg_dumpall
restore
使
用逻辑复制重建索引时,自动去重。
设置
deduplicate_items = of
,使用老的行为。
测试
CREATE TABLE rel (
aid bigint NOT NULL,
bid bigint NOT NULL
);
ALTER TABLE rel
ADD CONSTRAINT rel_pkey PRIMARY KEY (aid, bid);
CREATE INDEX rel_bid_idx ON rel (bid);
INSERT INTO rel (aid, bid)
SELECT i, i / 10000
FROM generate_series(1, 20000000) AS i;
/* set hint bits and calculate statistics */
VACUUM (ANALYZE) rel;
这里关注索引
rel_bid_idx
,查看
REINDEX
前后的大小。最后执行多次:
DO $$BEGIN
PERFORM * FROM rel WHERE bid < 100::bigint;
END;$$;
执行索引扫描,打开
\timing
查看执行时间。比较
PG12
PG13
以及
GIN
索引。
测试结果
PG13 PG12 PG12 GIN
大小
126MB 408MB 51MB
REINDEX
后大小
133MB 429MB 47MB
查询时间
130ms 130ms 140ms
结论
测试结果显示
PG13
的索引大小是
PG12
1/3
左右,仍比
GIN
索引大。测试中观
察到去重后的索引查询时间执行差异更大,这个目前无法解释。
这个特性是
B-tree
索引的一大进步。
原文
https://www.cybertec-postgresql.com/en/b-tree-index-deduplication/
of 2
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜