Search Postgresql Archives

Re: How to reduce query planning time (10s)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the suggestion!

Reading through the docs it looks like this might involve some downtime (locking writes to the tables whos indexes are being rebuilt) and this is a running system. I may need some time to setup a database copy and try to reproduce the issue (dev deployment doesn't exhibit the performance problem, so it must be related to table contents).

Is there any way to validate the bloated index hypothesis before I invest too much in this direction?

iulian


On Mon, Dec 20, 2021 at 1:42 PM Pavel Stehule <pavel.stehule@xxxxxxxxx> wrote:
Hi

po 20. 12. 2021 v 13:31 odesílatel iulian dragos <iulian.dragos@xxxxxxxxxxxxxx> napsal:
Hi,

I was analyzing the query performance in a certain code path and noticed that practically all of the query time is spent planning (11s planning, 200ms execution time). Here is the output of EXPLAIN ANALYZE. I tried using a prepared statement with three parameters (run_id, and the two text comparisons) and the performance is similar, even when run multiple times with the same parameters. Could someone give me some hints on how to speed this query up?

 explain analyze SELECT x13.run_id, x19.text, x13.id, x17.status

 FROM module_result x13

 INNER JOIN result_name x14 ON x13.name_id = x14.id

 INNER JOIN test_result x17 ON x13.id = x17.module_result_id

 INNER JOIN result_name x19 ON x17.name_id = x19.id

 WHERE x19.text IN ('devtools/devbox/devbox_test_scalastyle') AND x13.run_id IN (3769263) AND x14.text = 'Lint-Pr'

+--------------------------------------------------------------------------------------------------------------------------------------------------+

| QUERY PLAN                                                                                                                                       |

|--------------------------------------------------------------------------------------------------------------------------------------------------|

| Nested Loop  (cost=993.29..160107.01 rows=1 width=557) (actual time=0.147..0.148 rows=0 loops=1)                                                 |

|   Join Filter: (x13.id = x17.module_result_id)                                                                                                   |

|   ->  Nested Loop  (cost=2.27..18.32 rows=1 width=12) (actual time=0.147..0.147 rows=0 loops=1)                                                  |

|         ->  Index Scan using result_name_text_key on result_name x14  (cost=1.69..9.71 rows=1 width=8) (actual time=0.146..0.147 rows=0 loops=1) |

|               Index Cond: (text = 'Lint-Pr'::text)                                                                                               |

|         ->  Index Scan using module_result_run_id_name_id_idx on module_result x13  (cost=0.57..8.59 rows=1 width=20) (never executed)           |

|               Index Cond: ((run_id = 3769263) AND (name_id = x14.id))                                                                            |

|   ->  Nested Loop  (cost=991.02..160087.73 rows=77 width=553) (never executed)                                                                   |

|         ->  Index Scan using result_name_text_key on result_name x19  (cost=1.69..9.71 rows=1 width=549) (never executed)                        |

|               Index Cond: (text = 'devtools/devbox/devbox_test_scalastyle'::text)                                                                |

|         ->  Bitmap Heap Scan on test_result x17  (cost=989.33..159674.48 rows=40354 width=20) (never executed)                                   |

|               Recheck Cond: (name_id = x19.id)                                                                                                   |

|               ->  Bitmap Index Scan on test_result_name_id_idx  (cost=0.00..979.24 rows=40354 width=0) (never executed)                          |

|                     Index Cond: (name_id = x19.id)                                                                                               |

| Planning Time: 11257.713 ms                                                                                                                      |

| Execution Time: 0.204 ms                                                                                                                         |

+--------------------------------------------------------------------------------------------------------------------------------------------------+

EXPLAIN

Time: 11.505s (11 seconds), executed in: 11.496s (11 seconds)



explain analyze execute test_history_prep2(3769263, 'Lint-Pr', 'devtools/devbox/devbox_test_scalastyle')

+--------------------------------------------------------------------------------------------------------------------------------------------------+

| QUERY PLAN                                                                                                                                       |

|--------------------------------------------------------------------------------------------------------------------------------------------------|

| Nested Loop  (cost=993.30..160114.89 rows=1 width=557) (actual time=0.173..0.173 rows=0 loops=1)                                                 |

|   Join Filter: (x13.id = x17.module_result_id)                                                                                                   |

|   ->  Nested Loop  (cost=2.27..18.32 rows=1 width=12) (actual time=0.172..0.173 rows=0 loops=1)                                                  |

|         ->  Index Scan using result_name_text_key on result_name x14  (cost=1.69..9.71 rows=1 width=8) (actual time=0.172..0.172 rows=0 loops=1) |

|               Index Cond: (text = 'Lint-Pr'::text)                                                                                               |

|         ->  Index Scan using module_result_run_id_name_id_idx on module_result x13  (cost=0.57..8.59 rows=1 width=20) (never executed)           |

|               Index Cond: ((run_id = 3769263) AND (name_id = x14.id))                                                                            |

|   ->  Nested Loop  (cost=991.03..160095.61 rows=77 width=553) (never executed)                                                                   |

|         ->  Index Scan using result_name_text_key on result_name x19  (cost=1.69..9.71 rows=1 width=549) (never executed)                        |

|               Index Cond: (text = 'devtools/devbox/devbox_test_scalastyle'::text)                                                                |

|         ->  Bitmap Heap Scan on test_result x17  (cost=989.34..159682.34 rows=40356 width=20) (never executed)                                   |

|               Recheck Cond: (name_id = x19.id)                                                                                                   |

|               ->  Bitmap Index Scan on test_result_name_id_idx  (cost=0.00..979.25 rows=40356 width=0) (never executed)                          |

|                     Index Cond: (name_id = x19.id)                                                                                               |

| Planning Time: 11074.634 ms                                                                                                                      |

| Execution Time: 0.224 ms                                                                                                                         |

+--------------------------------------------------------------------------------------------------------------------------------------------------+

EXPLAIN


Can you try reindex the indexes on related tables. The bloated index is a common source of slow query planning.

Regards

Pavel

 

Time: 11.425s (11 seconds), executed in: 11.417s (11 seconds)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux