Re: Measuring the Query Optimizer Effect: Turning off the QO? - Mailing list pgsql-general

From Rob Sargent
Subject Re: Measuring the Query Optimizer Effect: Turning off the QO?
Date
Msg-id 9F86AE55-36AC-461C-87C9-34C11C734491@gmail.com
Whole thread Raw
In response to Re: Measuring the Query Optimizer Effect: Turning off the QO?  (Tom Mercha <mercha_t@hotmail.com>)
Responses Re: Measuring the Query Optimizer Effect: Turning off the QO?  (Rob Sargent <robjsargent@gmail.com>)
List pgsql-general


On Jul 7, 2019, at 5:49 PM, Tom Mercha <mercha_t@hotmail.com> wrote:

On 08/07/2019 01:46, Rob Sargent wrote:


On Jul 7, 2019, at 5:22 PM, Tom Mercha <mercha_t@hotmail.com> wrote:

Hi All

As we know, a query goes through number of stages before it is executed.
One of these stages is query optimization (QO).

There are various parameters to try and influence optimizer decisions
and costs. But I wanted to measure the effect of such a stage by turning
it off completely and I can't find such a parameter which explicitly
does that. Then I could execute a query to get the effect of "QO active
and "QO inactive" and compare.

Obviously, I know well what the results would generally look like but I
am just interested in measuring the differences for various types of
queries. I am also aware that this is a simple comparison - there are
https://gitlab.com/camplab/jpsgcs interesting comparisons to perform with QO tweaks, but right now I
am interested in something basic.

So how would one shut down QO? Or at least, obtaining the guarantee of
generating the worst plan possible, ideally without touching many
parameters?

Best,
Tom

Drop all indices?


Sorry, maybe my question wasn't clear enough.

A query can be rewritten in various ways by applying rules and costs of
relational algebra operators, as well as their parallelisation. I am
talking about turning off this query optimization, so I am already
assuming that indexes aren't present.

Have you played with any of these settings?

postgres=# select version();
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
(1 row)

postgres=# select name, setting, unit,short_desc from pg_settings where name ~ 'para';
              name               | setting | unit |                                             short_desc                                             
---------------------------------+---------+------+----------------------------------------------------------------------------------------------------
 force_parallel_mode             | off     |      | Forces use of parallel query facilities.
 max_parallel_workers            | 16      |      | Sets the maximum number of parallel workers that can be active at one time.
 max_parallel_workers_per_gather | 8       |      | Sets the maximum number of parallel processes per executor node.
 min_parallel_index_scan_size    | 64      | 8kB  | Sets the minimum amount of index data for a parallel scan.
 min_parallel_table_scan_size    | 1024    | 8kB  | Sets the minimum amount of table data for a parallel scan.
 parallel_setup_cost             | 1000    |      | Sets the planner's estimate of the cost of starting up worker processes for parallel query.
 parallel_tuple_cost             | 0.1     |      | Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend.
 ssl_dh_params_file              |         |      | Location of the SSL DH parameters file.
(8 rows)

pgsql-general by date:

Previous
From: Tom Mercha
Date:
Subject: Re: Measuring the Query Optimizer Effect: Turning off the QO?
Next
From: Rob Sargent
Date:
Subject: Re: Measuring the Query Optimizer Effect: Turning off the QO?