AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-285761

0xbadc0de's questions

Martin Hope
0xbadc0de
Asked: 2024-02-01 19:26:33 +0800 CST

O Postgres não está usando núcleos de CPU, a menos que esteja executando o psql ou usando "explicar análise"

  • 5

Estou executando o postgres 16.1 com um único usuário e nenhuma outra atividade no servidor. Eu executo este teste várias vezes e os resultados são muito consistentes.

O problema

A consulta abaixo será executada com tempos muito consistentes e o mesmo plano de execução (independentemente de o servidor ter sido iniciado há 3 segundos ou executado por semanas). Mas o tempo total de execução depende se a consulta será executada a partir de um cliente SQL ou de psql no servidor.

O tempo de qualquer SQL-Client é cerca de 3 vezes maior em comparação ao psql. Mas se eu executar a mesma consulta em um cliente SQL, mas com

explicar analisar tempos detalhados wal buffers

o tempo é muito comparável à execução do psql.

A observação que fiz é que a execução no psql usa 5 núcleos correspondentes à configuração ax_parallel_workers_per_gather=5. Por outro lado, a execução do SQL-Client utiliza apenas 1 núcleo e o tempo de execução é de cerca de 90 segundos em vez de 30.

Você pode me ajudar a elaborar isso?

2024-02-01 09:56:25.828 CET [650041] postgres@E_LOG:  duration: 29491.907 ms  plan:
    Query Text: WITH
    "x0" AS
        (
        SELECT
            "x1"."cal_dateid" AS "cal_dateid",
            "x1"."cal_dateint" AS "cal_dateint",
            "x1"."cal_date" AS "cal_date",
            "x1"."cal_year" AS "cal_year",
            "x1"."cal_month" AS "cal_month",
            "x1"."cal_day" AS "cal_day",
            "x1"."cal_yearmonth" AS "cal_yearmonth",
            "x1"."cal_datetext" AS "cal_datetext",
            "x1"."cal_yearmonthtext" AS "cal_yearmonthtext",
            "x1"."cal_monthtext" AS "cal_monthtext",
            extract(week from "x1"."cal_date") AS "c_date",
            "x1"."QWE" AS "QWE"
        FROM
            "public"."ABC" "x1"
        ),
    "DEF" AS
        (
        SELECT
            "x0"."cal_date" AS "cal_date",
            "x0"."cal_year" AS "cal_year"
        FROM
            "x0"
        )
    SELECT
        "DEF"."cal_year" AS "intr_year",
        SUM("ABC_ALL"."ID") AS "ID",
        COUNT(DISTINCT "ABC_ALL"."id") AS "id_sing",
        SUM("CDC"."SUM") AS "SUM_1"
    FROM
        "public"."ABC_2" "ABC_ALL"
            LEFT OUTER JOIN "DEF"
            ON "DEF"."cal_date" = "ABC_ALL"."date_occ"
                LEFT OUTER JOIN "public"."case" "CDC"
                ON "CDC"."id_fk" = "ABC_ALL"."occ_id"
    GROUP BY
        "DEF"."cal_year"
    ORDER BY
        "intr_year" DESC NULLS last;
    GroupAggregate  (cost=1753092.95..5239798.05 rows=151 width=28)
      Group Key: x1.cal_year
      ->  Gather Merge  (cost=1753092.95..4973483.11 rows=26631343 width=26)
            Workers Planned: 5
            ->  Sort  (cost=1752092.87..1765408.54 rows=5326269 width=26)
                  Sort Key: x1.cal_year DESC NULLS LAST, ABC_ALL.id
                  ->  Hash Left Join  (cost=164169.92..1084201.62 rows=5326269 width=26)
                        Hash Cond: (ABC_ALL.date_occ = x1.cal_date)
                        ->  Parallel Hash Right Join  (cost=162083.00..1068132.16 rows=5326269 width=26)
                              Hash Cond: (CDC.id_fk = ABC_ALL.occ_id)
                              ->  Parallel Seq Scan on case CDC  (cost=0.00..892067.69 rows=5326269 width=12)
                              ->  Parallel Hash  (cost=155333.00..155333.00 rows=540000 width=22)
                                    ->  Parallel Seq Scan on ABC_2 ABC_ALL  (cost=0.00..155333.00 rows=540000 width=22)
                        ->  Hash  (cost=1397.52..1397.52 rows=55152 width=8)
                              ->  Seq Scan on ABC x1  (cost=0.00..1397.52 rows=55152 width=8)
    JIT:
      Functions: 22
      Options: Inlining true, Optimization true, Expressions true, Deforming true
postgresql
  • 1 respostas
  • 29 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve