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 / 342858
Accepted
Jeff
Jeff
Asked: 2024-10-08 07:33:56 +0800 CST2024-10-08 07:33:56 +0800 CST 2024-10-08 07:33:56 +0800 CST

Qual é a relação entre uma consulta SQL e max_stack_depth?

  • 772
Esta pergunta foi migrada do Stack Overflow porque pode ser respondida no Database Administrators Stack Exchange. Migrada há 19 horas .

A maioria das perguntas max_stack_depthé sobre como ignorá-lo, ou aumentá-lo, etc. Estou ciente de que o limite padrão é 2 MB e não pode ser definido como maior que ulimit -s. Gostaria de saber exatamente como o Postgres determina que uma consulta está acima do limite.

É o número de nós em um plano de explicação? Número de caracteres na consulta SQL bruta, após parâmetros, com ou sem parâmetros vinculados? etc.

Por exemplo, gostaria de fazer uma consulta como

SELECT a, b, c 
FROM table 
WHERE x IN (1, 2, 3);

e traduzir isso para um valor numérico (byte) que me diria o quão longe max_stack_depthestou.

postgresql
  • 1 1 respostas
  • 22 Views

1 respostas

  • Voted
  1. Best Answer
    Laurenz Albe
    2024-10-08T10:32:21+08:002024-10-08T10:32:21+08:00

    O PostgreSQL executa regularmente a função stack_is_too_deep(), que faz algo simples:

    • ele declara uma variável automática (que está na pilha)

    • ele usa aritmética de ponteiro para calcular a distância de outra variável global estática (que foi inicializada na pilha quando o processo começou)

    /*
     * Stack base pointer -- initialized by PostmasterMain and inherited by
     * subprocesses (but see also InitPostmasterChild).
     */
    static char *stack_base_ptr = NULL;
    
    [...]
    
    bool
    stack_is_too_deep(void)
    {
        char        stack_top_loc;
        long        stack_depth;
    
        /*
         * Compute distance from reference point to my local variables
         */
        stack_depth = (long) (stack_base_ptr - &stack_top_loc);
    
        /*
         * Take abs value, since stacks grow up on some machines, down on others
         */
        if (stack_depth < 0)
            stack_depth = -stack_depth;
    
        /*
         * Trouble?
         *
         * The test on stack_base_ptr prevents us from erroring out if called
         * during process setup or in a non-backend process.  Logically it should
         * be done first, but putting it here avoids wasting cycles during normal
         * cases.
         */
        if (stack_depth > max_stack_depth_bytes &&
            stack_base_ptr != NULL)
            return true;
    
        return false;
    }
    

    Não creio que haja uma maneira de acessar essas informações via SQL, a não ser escrevendo uma extensão C.

    • 1

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