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-13231

zaadeh's questions

Martin Hope
zaadeh
Asked: 2019-09-07 19:59:14 +0800 CST

Converter uma linha em um documento JSON aninhado contendo todas as relações

  • 2

No PostgreSQL 10.10, criei uma função de gatilho em PL/pgSQL que converte a NEWlinha em um objeto JSON usando to_jsonb(NEW). Mas agora preciso incluir os registros do outro lado das chaves estrangeiras do NEWregistro no objeto JSON de maneira aninhada.

Por exemplo:

antes da:

employee = {
    "id": 1,
    "name": "myname",
    "department": 2,
    "phone_no": "123456789"
}

depois:

employee = {
    "id": 1,
    "name": "myname",
    "department": {
        "id": 2,
        "name": "IT"
    },
    "phone_no": "123456789"
}

Qual é a melhor e mais genérica maneira de fazer isso sem conhecimento prévio sobre o esquema do NEWregistro? Eu preciso manter essa função de gatilho o mais genérica possível porque pretendo usá-la em todas as tabelas. Atualmente, um nível de profundidade em seguir chaves estrangeiras é suficiente para mim. Também para simplificar, posso assumir que todas as chaves estrangeiras devem ser uma única coluna.

Pelo que entendi, preciso fazer um loop em todas as colunas no NEWregistro, descobrir se a coluna é uma chave estrangeira usando information_schemaou pg_catalog, encontrar os detalhes da chave estrangeira, como para qual coluna em qual tabela ela aponta, e executar um SQL dinâmico SELECT(porque Presumo que os nomes de tabela e coluna sejam strings, não identificadores SQL) sobre a tabela de destino para o registro de destino, converta o registro em JSON e, finalmente, atribua-o à chave apropriada do objeto JSON de linha de nível superior.

Ainda estou tentando escrever o código de trabalho real para isso, para o qual agradeço qualquer ajuda ou orientação. E pode haver soluções mais simples para este problema, que eu gostaria de saber.

postgresql trigger
  • 1 respostas
  • 1366 Views
Martin Hope
zaadeh
Asked: 2013-06-17 23:40:36 +0800 CST

Quanto tempo levará uma operação de vácuo/autovácuo?

  • 31

Eu gerencio um grande banco de dados (algumas centenas de shows) contendo tabelas com várias funções, algumas delas com milhões de registros. Algumas tabelas recebem apenas um grande número de inserções e exclusões, outras poucas inserções e grande número de atualizações.

O banco de dados é executado no PostgreSQL 8.4 em um sistema Debian 6.0 amd64 com 16 gigabytes de RAM.

A questão às vezes é o processo de autovacuum em uma mesa, leva muito tempo (dias) para ser concluído. Eu quero ser capaz de dizer aproximadamente quanto tempo um comando de vácuo específico levará, para poder decidir se o cancela ou não. Além disso, se houvesse um indicador de progresso para operações de vácuo postgres, seria muito útil.

Editar:

Não estou procurando uma solução à prova de balas. Apenas uma dica grosseira sobre o número de tuplas mortas ou bytes de E/S necessários é suficiente para decidir. É realmente irritante não ter ideia de quando VACUUMterminará, seja o que for.

Eu vi que pg_catalog.pg_stat_all_tablestem uma coluna para o número de tuplas mortas. Portanto, é possível ter uma estimativa, mesmo que isso signifique que alguém tenha que ir ANALYZEà mesa antes. Por outro lado, autovacuum_vacuum_thresholde as autovacuum_vacuum_scale_factorconfigurações por si só provam que o próprio postgres sabe algo sobre a quantidade de mudança nas tabelas e provavelmente a coloca nas mãos do DBA também.

Não tenho certeza de qual consulta executar, porque quando executo VACUUM VERBOSE, vejo que não apenas as tabelas, mas os índices nelas também estão sendo processados.

postgresql vacuum
  • 4 respostas
  • 49575 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