博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL Daily Maintenance - cluster table
阅读量:6153 次
发布时间:2019-06-21

本文共 1813 字,大约阅读时间需要 6 分钟。

Cluster簇管理 : 
在PostgreSQL的统计信息表中, 有一项指标correlation指明了heap表存储的物理顺序和索引顺序的关系.
例如 :
digoal=# create table tbl (id int primary key, info text);CREATE TABLETime: 25.762 msdigoal=# insert into tbl select generate_series(1,10000),'test';INSERT 0 10000Time: 32.397 msdigoal=# select correlation from pg_stats where schemaname='public' and tablename='tbl' and attname='id'; correlation -------------           1(1 row)Time: 2.648 ms
1表示该列的物理存储顺序和索引顺序完全一致. 如果是-1则表示和索引顺序完全相反, 这种情况出现在索引使用了反向排序即desc的时候.
接下来按随机顺序插入.
digoal=# truncate tbl;TRUNCATE TABLETime: 34.648 msdigoal=# insert into tbl select trunc(random()*100000),'test' from generate_series(1,100000) group by 1,2;INSERT 0 63321Time: 332.371 msdigoal=# select correlation from pg_stats where schemaname='public' and tablename='tbl' and attname='id'; correlation -------------   0.0047608(1 row)Time: 1.476 ms
现在这个值就很低了, 说明物理顺序和索引顺序偏差很大.
索引顺序和物理存储顺序一致的话, 使用索引进行范围检索时, 可以减少IO量. 例如 : 
取1到100的id范围, 使用上述偏差很大的表查询时, 使用索引扫描的话需要扫描50个表的数据块,  如下 :
digoal=# select split_part(ctid::text, ',', 1) from tbl where id between 1 and 100 group by 1 order by 1; split_part ------------ (0 (1 (103 (127 (130 (132 (134 (135 (139 (14 (143 (151 (157 (160 (164 (178 (180 (188 (189 (201 (203 (204 (22 (223 (238 (270 (272 (274 (275 (310 (314 (327 (33 (330 (334 (337 (37 (38 (40 (49 (51 (53 (60 (63 (75 (78 (8 (87 (88 (90(50 rows)
在执行cluster后, 
使用索引扫描的话
只需要扫描1个数据块. 可以大大降低范围查询的HEAP block扫描量.
digoal=# cluster tbl using tbl_pkey;CLUSTERTime: 198.924 msdigoal=# analyze tbl;ANALYZETime: 15.418 msdigoal=# select correlation from pg_stats where schemaname='public' and tablename='tbl' and attname='id'; correlation -------------           1(1 row)Time: 1.327 msdigoal=# select split_part(ctid::text, ',', 1) from tbl where id between 1 and 100 group by 1 order by 1; split_part ------------ (0(1 row)

转载地址:http://ilzfa.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
利用红帽 Piranha 方案实现 WEB 负载均衡
查看>>
【Android】带进度条的WebView
查看>>
Excel,遗忘密码后如何撤销工作表保护密码
查看>>
XenDesktop 5 VS XenDesktop 4-你必须了解的几点
查看>>
Windows Server 2008安装与基本配置
查看>>
daemon守护中的超级进程xinetd
查看>>
服务器SAS硬盘raid5崩溃lvm丢失的数据恢复过程
查看>>
详解二次封装VLAN技术——QINQ
查看>>
个推基于 Apache Pulsar 的优先级队列方案
查看>>
insert all实例
查看>>
【分享】晒晒技术门诊获得的奖品
查看>>
数据中心UPS电源选用指南
查看>>
浅谈需求分析和系统设计
查看>>
Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫
查看>>
『转』
查看>>
五险一金
查看>>
我的友情链接
查看>>
安装CubieBoard最小系统
查看>>
【OPNsense】18.1踩坑记录之一:接口、DHCP Service、DHCP RELAY
查看>>