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

OrangeDog's questions

Martin Hope
OrangeDog
Asked: 2023-12-18 23:05:45 +0800 CST

Como re-TOAST dados específicos após alterar a compactação?

  • 8

Depois de mudar default_toast_compressionde pglz para lz4, gostaria de atualizar os dados existentes para a nova compactação mais rápida.

A única maneira parece ser despejar a tabela inteira e recriá-la do zero, o que não é ideal para bancos de dados muito grandes e/ou em uso.

Encontrei este tópico da lista de discussão que sugere que UPDATE tab SET id = idisso aconteceria, mas os testes mostram que nada aconteceu.

postgres=# SHOW default_toast_compression;
 default_toast_compression
---------------------------
 lz4
(1 row)

postgres=# SELECT pg_column_compression(data) FROM pg_largeobject WHERE loid=49946 AND pageno=0;
 pg_column_compression
-----------------------
 pglz
(1 row)

postgres=# UPDATE pg_largeobject SET data=data WHERE loid=49946 AND pageno=0;
UPDATE 1

postgres=# SELECT pg_column_compression(data) FROM pg_largeobject WHERE loid=49946 AND pageno=0;
 pg_column_compression
-----------------------
 pglz
(1 row)
postgresql
  • 1 respostas
  • 100 Views
Martin Hope
OrangeDog
Asked: 2020-11-06 02:50:59 +0800 CST

Como prever quanto espaço um VACUUM FULL recuperaria?

  • 5

Existe uma maneira de determinar antecipadamente quanto espaço em disco VACUUM FULLem uma tabela específica retornaria ao sistema operacional? Portanto, você pode decidir se vale a pena o custo de fazê-lo.

Bônus se houver uma consulta simples para fazer isso para cada tabela em um banco de dados/servidor (em vez de fazer cada uma separadamente).

postgresql vacuum
  • 1 respostas
  • 516 Views
Martin Hope
OrangeDog
Asked: 2019-07-05 07:21:10 +0800 CST

Vários agregados com junção cruzada (lateral)

  • 2

Seguindo combinando array_agg e unnest , dados estes dados:

key |  a | b | c
------------------
 1  |  0 | 1 | {1,2}
 1  |  1 | 2 | {3}
 1  | -1 | 3 | {2}
 1  |  2 | 4 | {}

Executando esta consulta:

SELECT 
  d.key,
  min(d.a) AS a,
  sum(d.b) AS b,
  array_agg(DISTINCT x.c) AS c 
FROM data AS d
  CROSS JOIN LATERAL unnest(d.c) AS x(c)
GROUP BY d.key

Dá o resultado inesperado:

key |  a | b | c
------------------
 1  | -1 | 7 | {1,2,3}

O que está acontecendo aqui, e como obter a soma correta?


Desempenho da resposta

Em meus dados reais (16.642 linhas, 1.942 chaves, 6 agregados), recebo essas estimativas de custo para cada solução sugerida.

  • a_horse_with_no_name opção 1:1761.12..49370.52
  • a_horse_with_no_name opção 2:0.57..89214.72
  • Erwin Brandstetter :1761.12..49370.61
postgresql join
  • 2 respostas
  • 1751 Views
Martin Hope
OrangeDog
Asked: 2019-07-04 06:18:53 +0800 CST

Combinando array_agg e unnest

  • 7

Dado um conjunto de dados (com um GINíndice em values):

key | values
-------------
 1  | {4,2,1}
 1  | {2,5}
 2  | {4,1,3}

Eu quero agregar os arrays:

key | values
-------------
 1  | {4,2,1,5}
 2  | {4,1,3}

Meu primeiro pensamento não funcionou:

SELECT key, array_agg(DISTINCT unnest(values)) AS values FROM data GROUP BY key

[0A000] ERRO: as chamadas de função agregada não podem conter chamadas de função de retorno de conjunto
Dica: você pode mover a função de retorno de conjunto para um item LATERAL FROM.

Não estando familiarizado com LATERAL FROM, não é óbvio para mim como obter a saída desejada.

postgresql aggregate
  • 1 respostas
  • 8415 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