For a simple demo, with this explain statement: -- Test sort stats summary set force_parallel_mode=on; select explain_filter('explain (analyze, summary off, timing off, costs off, format json) select * from tenk1 order by unique1');
Before this patch, we got plan like this: "Node Type": "Sort", + "Parent Relationship": "Outer", + "Parallel Aware": false, + "Async Capable": false, + "Actual Rows": 10000, + "Actual Loops": 1, + "Sort Key": ["unique1"], + "Workers": [ + { + "Worker Number": 0, + "Sort Method": "external merge",+ "Sort Space Used": 2496, + "Sort Space Type": "Disk" + } + ], + After this patch, the effected plan is this: "Node Type": "Sort", + "Parent Relationship": "Outer", + "Parallel Aware": false, + "Async Capable": false, + "Actual Rows": N, + "Actual Loops": N, + "Sort Key": ["unique1"], + "Workers planned": N, + "Sort Method": "external merge", + "Average Sort Space Used": N, + "Peak Sort Space Used": N, + "Sort Space Type": "Disk", + ________________________________ From: Jian Guo <gj...@vmware.com> Sent: Monday, March 21, 2022 15:50 To: pgsql-hackers@lists.postgresql.org <pgsql-hackers@lists.postgresql.org> Cc: Zhenghua Lyu <z...@vmware.com> Subject: Re: Summary Sort workers Stats in EXPLAIN ANALYZE There is some problem with the last patch, I have removed the `ExplainOpenWorker` call to fix. And also, I have added a test case in explain.sql according to the code change. ________________________________ From: Jian Guo <gj...@vmware.com> Sent: Monday, March 21, 2022 11:36 To: pgsql-hackers@lists.postgresql.org <pgsql-hackers@lists.postgresql.org> Cc: Zhenghua Lyu <z...@vmware.com> Subject: Summary Sort workers Stats in EXPLAIN ANALYZE In current EXPLAIN ANALYZE implementation, the Sort Node stats from each workers are not summarized: https://github.com/postgres/postgres/blob/d4ba8b51c76300f06cc23f4d8a41d9f7210c4866/src/backend/commands/explain.c#L2762<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpostgres%2Fpostgres%2Fblob%2Fd4ba8b51c76300f06cc23f4d8a41d9f7210c4866%2Fsrc%2Fbackend%2Fcommands%2Fexplain.c%23L2762&data=04%7C01%7Cgjian%40vmware.com%7C0f2c3df25e8a46bdd84f08da0aebff59%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637834305971955895%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=RXY0uDuK7cFraHJqwU%2FQv%2BXhq3n%2F2cO6nv%2BoxHTbmCM%3D&reserved=0> When the worker number is large, it will print out huge amount of node details in the plan. I have created this patch to summarize the tuplesort stats by AverageSpaceUsed / PeakSpaceUsed, make it behave just like in `show_incremental_sort_group_info()`: https://github.com/postgres/postgres/blob/d4ba8b51c76300f06cc23f4d8a41d9f7210c4866/src/backend/commands/explain.c#L2890<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpostgres%2Fpostgres%2Fblob%2Fd4ba8b51c76300f06cc23f4d8a41d9f7210c4866%2Fsrc%2Fbackend%2Fcommands%2Fexplain.c%23L2890&data=04%7C01%7Cgjian%40vmware.com%7C0f2c3df25e8a46bdd84f08da0aebff59%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637834305971955895%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=NotrZFufFycTmlVy3SKioUSWGzLalSu9SWCOccMXGCI%3D&reserved=0>