作者简介
译者简介
顺序扫描的代价估计
test=# CREATE TABLE t_test ASSELECT id AS many, id % 2 AS fewFROM generate_series(1, 10000000) AS id;SELECT 10000000test=# ANALYZE;ANALYZE
test=# SET max_parallel_workers_per_gather TO 0;SETtest=# explain SELECT count(*) FROM t_test;QUERY PLAN------------------------------------------------------------------------Aggregate (cost=169248.60..169248.61 rows=1 width=8)-> Seq Scan on t_test (cost=0.00..144248.48 rows=10000048 width=0)(2 rows)
test=# SELECT pg_relation_size('t_test') AS size,pg_relation_size('t_test') 8192 AS blocks;size | blocks-----------+--------362479616 | 44248(1 row)
test=# SELECT current_setting('seq_page_cost')::numeric * 44248+ current_setting('cpu_tuple_cost')::numeric * 10000000+ current_setting('cpu_operator_cost')::numeric * 10000000;?column?-------------169248.0000(1 row)
并行顺序扫描估计
test=# SET max_parallel_workers_per_gather TO default;SETtest=# explain SELECT count(*) FROM t_test;QUERY PLAN------------------------------------------------------------------------------------Finalize Aggregate (cost=97331.80..97331.81 rows=1 width=8)-> Gather (cost=97331.58..97331.79 rows=2 width=8)Workers Planned: 2-> Partial Aggregate (cost=96331.58..96331.59 rows=1 width=8)-> Parallel Seq Scan on t_test (cost=0.00..85914.87 rows=4166687 width=0)(5 rows)
estimate = estimated_rows (number_of_cores + (1 – leader_contribution * number_of_cores)

其他并行操作
原文地址

最后修改时间:2020-02-28 13:50:54
文章转载自PostgreSQL中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




