PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Planos de armazenamento de colunas


No pgsql-general, Bráulio Bhavamitra pergunta:

Essa é uma pergunta bem interessante. Substituir completamente o armazenamento atual baseado em linhas não seria uma boa ideia:ele nos atendeu muito bem e tenho certeza de que substituí-lo inteiramente por um armazenamento colunar seria desastroso em termos de desempenho para casos de uso de OLTP.

Algumas colunas. Imagem cortesia de Yiming Sun no Flickr

Isso não significa que as lojas colunares sejam uma má ideia em geral – porque não são. Eles apenas têm um caso de uso mais limitado do que “todo o banco de dados”. Para consultas analíticas em dados principalmente anexados, um armazenamento colunar é uma representação muito mais apropriada do que o armazenamento regular baseado em linha, mas nem todos os bancos de dados são analíticos.

No entanto, para obter ganhos de desempenho interessantes, você precisa fazer muito mais do que apenas alterar o armazenamento subjacente:você precisa garantir que o restante do sistema possa aproveitar a representação alterada, para que ele possa executar consultas de maneira otimizada; por exemplo, você pode querer agregados que operam em um modo SIMD em vez de um valor por vez como é hoje. Isso, por si só, é um grande empreendimento, e há outros desafios também.

Como se vê, há uma equipe no 2ndQuadrant trabalhando precisamente nesses assuntos. Publicamos um patch no ano passado, mas não foi muito interessante - ele fez apenas uma melhoria percentual de um dígito nas pontuações do TPC-H; não o suficiente para incomodar a comunidade de desenvolvimento (era um patch bastante invasivo). Queremos mais do que isso.

Em nosso design, colunar ou não será uma opção:você poderá dizer Caro servidor, para esta tabela, gentilmente, configure o armazenamento colunar para mim, sim? Muito obrigado . E então você terá uma tabela que pode ser mais lenta para uso regular, mas que será ótima para análises. Para a maioria de suas tabelas, o armazenamento baseado em linha atual provavelmente ainda será a melhor opção, porque o armazenamento baseado em linha é muito mais adequado para os casos mais gerais.

Ainda não temos um prazo. Fique atento.