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 / dba / Perguntas / 251274
Accepted
Erwin Brandstetter
Erwin Brandstetter
Asked: 2019-10-17 09:32:03 +0800 CST2019-10-17 09:32:03 +0800 CST 2019-10-17 09:32:03 +0800 CST

Quando marcar funções como PARALLEL RESTRICTED vs PARALLEL SAFE?

  • 772

O manual do Postgres 12 diz:

As operações a seguir são sempre restritas em paralelo.

  • Varreduras de expressões de tabela comuns (CTEs).
  • Varreduras de tabelas temporárias.
  • ...

Mais abaixo na mesma página de manual:

[...] Da mesma forma, as funções devem ser marcadas PARALLEL RESTRICTEDse acessarem tabelas temporárias, estado de conexão do cliente, cursores, instruções preparadas ou estado local de back-end diverso que o sistema não pode sincronizar entre os trabalhadores. Por exemplo, setseede randomsão paralelas restritas por este último motivo.

Nenhuma menção a CTEs. Agora não tenho certeza se posso usar PARALLEL SAFEpara funções que contêm um CTE. Faria sentido para mim que esses fossem apenas PARALLEL RESTRICTED.

Contexto: Eu tenho que determinar o melhor rótulo para funções definidas pelo usuário existentes. A configuração é nova desde o Postgres 9.6, e pode ter um grande impacto no desempenho, pois as operações que envolvem funções que não são não PARALLEL SAFEserão executadas por trabalhadores paralelos, PARALLEL RESTRICTEDapenas pelo líder. (E PARALLEL USAFEdesativa o paralelismo completamente.)

Eu postei uma pergunta relacionada em pgsql-general .

postgresql functions
  • 1 1 respostas
  • 1513 Views

1 respostas

  • Voted
  1. Best Answer
    Laurenz Albe
    2019-10-17T22:21:53+08:002019-10-17T22:21:53+08:00

    Se uma função contém uma consulta que usa um CTE e essa função é usada por um processo de trabalho paralelo, a consulta e o CTE só serão executados no contexto de processo privado do trabalhador paralelo. Não há estado compartilhado envolvido na criação ou verificação desse CTE.

    Portanto, é seguro marcar a função PARALLEL SAFE.

    A citação da documentação diz que um CTE definido em uma consulta que deve ser paralelizada só pode ser escaneado pelo processo líder, não pelos trabalhadores paralelos, justamente pelo fato de que o CTE não é compartilhado entre os processos. Isso não tem impacto nas CTEs definidas em consultas executadas em funções chamadas por trabalhadores paralelos, porque essas consultas aninhadas não serão paralelizadas de qualquer maneira :

    Mesmo quando, em geral, é possível gerar planos de consulta paralela, o planejador não os gerará para uma determinada consulta se alguma das seguintes condições for verdadeira:

    [...]

    • A consulta está sendo executada dentro de outra consulta que já é paralela. Por exemplo, se uma função chamada por uma consulta paralela emitir uma consulta SQL, essa consulta nunca usará um plano paralelo.
    • 4

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

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