From db64c0da6433269e42ea93d4cdc8644fd50c55af Mon Sep 17 00:00:00 2001 From: = Date: Tue, 19 Mar 2024 15:57:14 +0800 Subject: [PATCH 1/2] blog about single table cost estimation --- ...5\210\235\346\216\242-explain result1.png" | Bin 0 -> 43162 bytes ...5\210\235\346\216\242-explain result2.png" | Bin 0 -> 44501 bytes ...60\350\256\241\345\210\235\346\216\242.md" | 190 ++++++++++++++++++ 3 files changed, 190 insertions(+) create mode 100644 "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result1.png" create mode 100644 "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result2.png" create mode 100644 "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" diff --git "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result1.png" "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result1.png" new file mode 100644 index 0000000000000000000000000000000000000000..1ed5256145a7f1b01a210cf0b444b0776f0c08b1 GIT binary patch literal 43162 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
  • +|bu)qky<-qQ(0L5IgX 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 literal 0 HcmV?d00001 diff --git "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result2.png" "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result2.png" new file mode 100644 index 0000000000000000000000000000000000000000..04c95cf813b241d94bf275816ea631ae1b3760f2 GIT binary patch literal 44501 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 }nwe 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 JDQEHFe*m;lX1xFa literal 0 HcmV?d00001 diff --git "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" new file mode 100644 index 00000000..1c85fe70 --- /dev/null +++ "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" @@ -0,0 +1,190 @@ +~~~shell +title: '单表代价估计初探' +date: '2024-03-19' +category: 'blog' +tags: ['代价估计'] +archives: '2024-03-19' +author: 'zhoujing' +summary: '通过分析一个单表查询的执行计划,了解sequence scan, index scan, sort等代价估计逻辑' +times: '19:30' +~~~ + +在分析一个分区表索引扫描,顺序扫描及排序的代码的过程中,学习并分析了一下相关代码估计代码。做个记录及分享。 + +1.创建分区表 + +create table top1 ( + +pk_report_asset character(32) NOT NULL, + +c1 int, c2 int,c3 int, is_deleted smallint, + +org_code int NOT NULL) + +PARTITION BY LIST (org_code) + +( + +PARTITION p1 VALUES (1) TABLESPACE pg_default, + +PARTITION p2 VALUES (2) TABLESPACE pg_default, + +PARTITION p3 VALUES (3) TABLESPACE pg_default, + +PARTITION p4 VALUES (4) TABLESPACE pg_default, + +PARTITION p5 VALUES (5) TABLESPACE pg_default, + +PARTITION p6 VALUES (6) TABLESPACE pg_default, + +PARTITION p7 VALUES (7) TABLESPACE pg_default, + +PARTITION p8 VALUES (8) TABLESPACE pg_default, + +PARTITION p9 VALUES (9) TABLESPACE pg_default, + +PARTITION p10 VALUES (10) TABLESPACE pg_default + +); + +2.增加约束 + +ALTER TABLE top1 + +ADD CONSTRAINT pk_top1 PRIMARY KEY (pk_report_asset, org_code); + +3.产生数据库 + +insert into top1 values + +(generate_series(1,1000000), + +generate_series(1,100),generate_series(1,1000),generate_series(1,10000), + +0, + +generate_series(1,10) + +); + +4.收集统计信息 + +ANALYZE; + +5.比较如下SQL语句的执行代价: + +explain (analyze,timing) +select * from top1 order by PK_REPORT_ASSET desc; + + + +explain(analyze,timing) + +select /*+ indexscan(top1 pk_top1) */ * from top1 order by PK_REPORT_ASSET desc + + + +可以看到seqscan的估算代价20310比index scan代价1230199少很多,而实际运行时间729和2067,相差没这么大。而排序代价对于两种计划差别不大,详见下表。 + +| | estimation cost | actual cost | +| ----------- | --------------- | ----------- | +| seq scan | 20310 | 729 | +| seq sort | 184190 | 4599 | +| seq total | 204500 | 5328 | +| index scan | 1230199 | 2067 | +| index sort | 184191 | 5352 | +| index total | 1414390 | 7419 | + +所以下文主要分析一下,影响相关代码估计的因素,及其对应估算方法。 + +首先需要如下统计信息或配置信息进行收集: + +**cost estimation输入** + +| 统计信息 | 解释 | value | 获取方式 | +| -------------------- | ------------------------------------------------------------ | ----------- | ------------------------------------------------------------ | +| Nindex,page | index pages,analyze获得 | 12551 | select relpages,reltuples from pg_class where relname = 'pk_top1'; | +| Nindex,tuple | index tuples,analyze获得 | 1000000 | | +| Ntable,pages | table pages,analyze获得 | 10310 | select relpages,reltuples from pg_class where relname = 'top1'; | +| Ntable,tuple | table tuples,analyze获得 | 1000000 | | +| H index | index 高度 | 1 | 内存中结构获得 | +| var correlation | column correlation,列值排序与存储之间的相关性, analyze获得 | 0.0865771 | select correlation from pg_stats where tablename = 'top1' and attname = 'pk_report_asset'; | +| index correlation | index correlation,列值排序与存储之间的相关性,用于估计index访问造成的table io cost | 0.064932825 | index column number>1时候,0.75*column correlation,否则=column correlation | +| cpu_operator_cost | postgresql.conf中配置 | 0.0025 | | +| cpu_index_tuple_cost | postgresql.conf中配置 | 0.005 | | +| cpu_tuple_cost | postgresql.conf中配置 | 0.01 | | +| random_page_cost | postgresql.conf中配置 | 4 | | +| seq_page_cost | postgresql.conf中配置 | 1 | | +| qual_op_cost | postgresql.conf中配置 | 0 | 0.0025,此处没有qualification,故为0 | +| comparison_cost | 2*cpu_operator_cost | 0.005 | | +| dop | postgresql.conf中配置 | 1 | | +| sort_mem | postgresql.conf中配置 | 65536 | | +| Nsort,tuple | 计算获得 | 1000000 | | +| limit | sql语句中包含 | 720000 | | +| | | | | +| selectivity | 根据统计信息计算所得,此例中没有过滤条件故为1 | 1 | | + +**sequence access** + +顺序扫描,也叫表扫描,顺序读取表中所有记录。计算公式如下表。start_up cost为0。 + +若打开并行,即dop>1, 则相关代价会除以并行数,此处为默认值1. + +相关代码见costsize.cpp::cost_seqscan() + +| seqscan cost | 计算公式 | 估计结果 | +| ------------------- | ------------------------------------------ | -------- | +| cpu_run_cost | (cpu_tuple_cost+qual_op_cost)*Ntable,tuple | 10000 | +| disk_run_cost | seq_page_cost*Ntable, page | 10310 | +| seqscan total cost | cpu_run_cost+disk_run_cost | 20310 | + +**index scan** + +index cost包括startup cost, index io+cpu cost,以及对应表的cpu+io cost几部分。 + +一般B树索引,是通过btcostestimate_internal这个函数计算indexTotalCost的,包含index cpu cost, index page cost及start up cost。该计划中indexTotalCost为55204.3 + +如果index scan可以访问到所有的列,也就不需要估计table的cpu 及io cost了,但本例中,index只包含两列,需要再访问表获取所有列的信息的。计算table io cost,需要根据index correlation来分析最好及最坏情况下table io的访问数目。再根据公式计算最终table io cost。该例子中min_io_cost为correlation为1时,table io为所有表页面顺序访问代价。max_io_cost为所有页面均为随机访问的代价,根据公式:max_io_cost+indexCorrelation* indexCorrelation*(min_io_cost-max_io_cost) + +计算最终table io cost, 为1164994。已经远大于sequence scan代价。 + +| index scan cost | 计算公式 | 估计结果 | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ----------- | +| **start-up cost** | {ceil(log2(Nindex,tuple))+(Hindex+1)*50}*cpu_operator_cost | 0.3 | +| **index cpu cost** | selectivity * Nindex,tuple *(cpu_index_tuple_cost+qual_op_cost) | 5000 | +| **table cpu cost** | selectivity* Ntable,tuple *cpu_tuple_cost | 10000 | +| **index io cost** | ceil(Selectivity* Nindex,page) *random_page_cost | 50204 | +| **table io cost** | max_io_cost+indexCorrelation* indexCorrelation*(min_io_cost-max_io_cost) | 1164994.934 | +| Npages,(临时计算),考虑buffer cache的情况,在uncorrelated case下计算table pages | index_pages_fetched()apply the Mackert and Lohman formula 线性计算table io pages | 292471 | +| max_io_cost(临时计算),最差情况下所有table页都是随机访问 | max_io_cost=Npages*random_page_cost | 1169884 | +| min_io_cost(临时计算), 最好情况下所有table页按照顺序访问 | min_io_cost=1* random_page_cost+(ceil(selectivity* Npage)-1)*seq_page_cost | 10313 | +| indexTotalCost(临时计算) | indexTotalCost(临时计算)=index cpu cost+index io cost+ start-up cost | 55204.3 | +| ***total_cost*** | | 1230199.234 | + + + +**sort cost** + +再看下sort cost。 本例子中,每个partition如果使用index访问,可以保证每个parition按照index key也就是PK_REPORT_ASSET 做了排序。最终结果集按照PK_REPORT_ASSET 排序后是否可以省略sort的代价呢? + +这涉及到排序的实现方法。 + +在排序记录能全部放在sort memory中时,会使用快排序。在不能放在sort memory中时,会使用归并排序。本例中查询及排序的记录数较多,不能全部在sort memory中进行,故使用了归并排序。而归并排序的时间复杂度是O(Nlog2N)。即使所有partition已经按照PK_REPORT_ASSET排好序,最终结果需要将所有partition按照PK_REPORT_ASSET重新排序。时间复杂度仍为O(Nlog2N) 。 + +下面来看下具体sort cost的计算 + +| sort cost | 计算公式 | | 估算代价 | +| ------------- | ------------------------------------------------------------ | --------------------------------------- | ----------- | +| input_sort | sort之前的花费 | | 20310 | +| start-up cost | comparison_cost* Nsort*log2Nsort | | 202000.8428 | +| run cost | cpu_operator_cost*Nsort | | 2500 | +| io traffic | if(output_bytes>sort_mem_bytes) ,tape stype merge algorithm | 2* relsize * ceil(logM(p/(2*sort_mem))) | 82033 | +| total cost | | | 204500.8428 | + +而无论sequence scan还是index scan的estimation cost及actual cost相差并不大。 + + + +**小结** + +从上述分析我们看到,sort cost针对sequence scan与index scan并没有降低。而使用index scan会造成Npages较Ntable,pages增大很多,并且默认情况下index scan在correlation不是1的情况下产生更多的random io。而默认情况下 random_page_cost: seq_page_cost = 4:1 这个参数对SSD磁盘可能造成index代价估计过高。在调整random_page_cost=1后,估算代价与实际代价相近。但仍然会选择sequence scan。 \ No newline at end of file -- Gitee From 185ee969f90f18cb48ac58da2d8c1c75bfa7b976 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 10 Apr 2024 16:00:46 +0800 Subject: [PATCH 2/2] fix the image link error --- ...241\345\210\235\346\216\242-explain-result1.png" | Bin ...241\345\210\235\346\216\242-explain-result2.png" | Bin ...\274\260\350\256\241\345\210\235\346\216\242.md" | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result1.png" => "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain-result1.png" (100%) rename "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result2.png" => "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain-result2.png" (100%) diff --git "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result1.png" "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain-result1.png" similarity index 100% rename from "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result1.png" rename to "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain-result1.png" diff --git "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result2.png" "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain-result2.png" similarity index 100% rename from "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain result2.png" rename to "app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242-explain-result2.png" diff --git "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" index 1c85fe70..dd0101b7 100644 --- "a/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" +++ "b/app/zh/blogs/zhoujingbnu/2024-03-19-\345\215\225\350\241\250\344\273\243\344\273\267\344\274\260\350\256\241\345\210\235\346\216\242.md" @@ -76,13 +76,13 @@ ANALYZE; explain (analyze,timing) select * from top1 order by PK_REPORT_ASSET desc; - + explain(analyze,timing) select /*+ indexscan(top1 pk_top1) */ * from top1 order by PK_REPORT_ASSET desc - + 可以看到seqscan的估算代价20310比index scan代价1230199少很多,而实际运行时间729和2067,相差没这么大。而排序代价对于两种计划差别不大,详见下表。 -- Gitee