首页 > > > PostgreSQL中并行查询代价估算方法
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)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917105/viewspace-3125565/ ,如需转载,请注明出处,否则将追究法律责任。