> On Jul 7, 2019, at 6:02 PM, Rob Sargent <robjsarg...@gmail.com> wrote: > > > >> On Jul 7, 2019, at 6:01 PM, Rob Sargent <robjsarg...@gmail.com >> <mailto:robjsarg...@gmail.com>> wrote: >> >> >> >>> On Jul 7, 2019, at 5:49 PM, Tom Mercha <merch...@hotmail.com >>> <mailto:merch...@hotmail.com>> wrote: >>> >>> On 08/07/2019 01:46, Rob Sargent wrote: >>>> >>>> >>>>> On Jul 7, 2019, at 5:22 PM, Tom Mercha <merch...@hotmail.com >>>>> <mailto:merch...@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 <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) >> > Well not the last one of course.
Better yet, “where category ~* ‘planner’"