Depois de fazer algumas experiências, parece que COMPRESSION lz4
não tem nenhum efeito nas JSONB
colunas (ao contrário de JSON
, e TEXT
). É realmente esse o caso? Se sim, por que isso acontece?
Eu poderia mergulhar nas listas de discussão e/ou no código-fonte do Postgresql para tentar encontrar a resposta, mas espero que alguém que já saiba a resposta possa intervir.
Presumo que você esteja falando sobre
Isso certamente terá efeito, mas somente se a linha da tabela inserida for grande o suficiente para que o PostgreSQL comece a compactar o
jsonb
valor. Esse limite é definido como um quarto do espaço disponível em uma página de 8 KB, ou seja, um pouco menos de 2 KB.Basicamente, o tipo de dados
jsonb
pode ser compactado:Ver:
Mas isso só acontece com valores de coluna recém-inseridos que excedem o limite de tamanho apontado por Laurenz e somente se a origem não for uma coluna inalterada e já compactada no mesmo banco de dados. O Postgres não descompacta e recompacta valores existentes, mesmo quando previamente compactados com um algoritmo diferente. O algoritmo é lembrado para cada valor compactado individual.
A alteração de um valor compactado aciona a recompactação e, em seguida, com o algoritmo padrão atual para a coluna. (Uma operação autônoma também aciona isso.)
Relacionado: