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 / 339593
Accepted
KoalaMaybe
KoalaMaybe
Asked: 2024-05-17 09:14:53 +0800 CST2024-05-17 09:14:53 +0800 CST 2024-05-17 09:14:53 +0800 CST

Como os bancos de dados colunares são mais rápidos para consultas?

  • 772

Por que tantas pessoas preferem bancos de dados colunares? No meu entender, as pessoas preferem bancos de dados colunares porque são mais rápidos para consultas devido ao fato de que a CPU seria capaz de armazenar em cache os próximos valores de forma previsível.

database-design
  • 3 3 respostas
  • 58 Views

3 respostas

  • Voted
  1. Best Answer
    Paul White
    2024-05-17T20:16:01+08:002024-05-17T20:16:01+08:00

    Geralmente, há três razões principais pelas quais o armazenamento de dados colunar é preferido para cargas de trabalho de data warehousing e análise:

    1. O armazenamento de colunas normalmente é compactado melhor do que o armazenamento de linhas porque os valores são todos do mesmo tipo de dados e geralmente têm valores semelhantes. A compactação aprimorada pode beneficiar o armazenamento na memória e o armazenamento persistente.

    2. As consultas geralmente selecionam apenas algumas colunas de uma tabela. Em vez de buscar a linha inteira do armazenamento na memória, apenas as colunas necessárias são carregadas. Isso reduz ainda mais a E/S e o uso de memória.

    3. As CPUs modernas são muito mais rápidas que a memória principal. Melhorias significativas de desempenho podem ser encontradas fazendo melhor uso dos caches no chip relativamente pequenos, mas de alta velocidade, e usando instruções vetoriais de CPU como SIMD em dados semelhantes. Preencher linhas de cache com dados de coluna geralmente é mais eficiente do que carregar linhas inteiras, onde muitos dos valores não são necessários para a consulta.

    O armazenamento de linha é preferido para cargas de trabalho transacionais, onde pequenos números de registros podem ser encontrados rapidamente com buscas de árvore b. Também há benefícios de gravação porque uma única linha pode ser gravada de uma só vez, enquanto o armazenamento colunar precisa atualizar diversas estruturas separadamente e geralmente tem uma sobrecarga de CPU maior para compactação.

    • 2
  2. Steve
    2024-05-17T14:07:13+08:002024-05-17T14:07:13+08:00

    No meu entender, as pessoas preferem bancos de dados colunares porque são mais rápidos para consultas devido ao fato de que a CPU seria capaz de armazenar em cache os próximos valores de forma previsível.

    Meu entendimento nesta área é que bancos de dados colunares são mais rápidos para determinados padrões de acesso , devido a uma única coluna de dados ser sequencial no armazenamento (ou seja, em disco).

    Um caso específico que ouvi ser mais eficiente é quando a carga de trabalho principal agrega subintervalos de dados de séries temporais - como pode ser típico de certos tipos de análise financeira.

    Não entendo todos os detalhes das implementações ou suas áreas de aplicação, mas suspeito que não haja uma razão simples e decisiva pela qual os bancos de dados colunares sejam mais rápidos para determinadas cargas de trabalho, mas sim uma série de melhorias marginais em diferentes camadas e funções do implementação do banco de dados quando sob carga simultânea.

    No entanto, os bancos de dados colunares são definitivamente para aplicações especiais e não são mais rápidos em geral para cargas OLTP.

    • 1
  3. J.D.
    2024-05-17T12:51:14+08:002024-05-17T12:51:14+08:00

    Como os bancos de dados colunares são mais rápidos para consultas?

    Eles não são, holisticamente falando. Eles apenas oferecem uma maneira diferente de armazenar dados e, quando usados ​​corretamente, podem ser eficientes para casos de uso específicos. Bancos de dados específicos não colunares podem ser usados ​​de maneira igualmente eficiente quando usados ​​adequadamente.

    Por que tantas pessoas preferem bancos de dados colunares?

    Em mais de uma década de minha carreira, raramente encontrei alguém que tivesse alguma preferência específica por bancos de dados colunares em vez de bancos de dados específicos não-colunares. (Observe que continuo usando esse termo especificamente porque existem sistemas de banco de dados focados em rowstore que também oferecem armazenamento de dados colunar sobre a tabela rowstore*, como o Microsoft SQL Server.)

    No meu entender, as pessoas preferem bancos de dados colunares porque são mais rápidos para consultas devido ao fato de que a CPU seria capaz de armazenar em cache os próximos valores de forma previsível.

    Eu não acredito que isso esteja correto. Nunca ouvi falar disso antes e, honestamente, estou tendo dificuldade em conceituar o significado disso.

    Se a aceleração vier do cache, os bancos de dados baseados em linhas não seriam tão eficazes para consultas?

    Claro. Os sistemas de banco de dados rowstore típicos aproveitam a memória para armazenar em cache automaticamente os dados comumente usados ​​para melhorar o desempenho.

    As poucas pessoas com quem conversei que estavam interessadas em bancos de dados colunares específicos eram pessoas que pareciam não entender como os bancos de dados funcionam tão bem e estavam tentando migrar seus fluxos de trabalho OLTP para algo como o Snowflake, o que é bobagem. Suspeito que você tenha conversado com pessoas que pensam da mesma forma. Não me interpretem mal, não há nada explicitamente errado com um banco de dados colunar, mas eles não têm um desempenho magicamente melhor do que um sistema de banco de dados rowstore, assim como o NoSQL também não é automaticamente mais rápido. E quando usado de forma inadequada, você passará por momentos difíceis, independentemente do tipo de sistema que escolher.


    * O SQL Server 2014 e versões posteriores também oferecem armazenamento colunar como armazenamento primário (“clustered columnstore”) onde nenhum rowstore subjacente é usado). A partir do SP1 2016, todas as edições oferecem suporte ao columnstore. Antes disso, a Enterprise Edition era necessária.

    • 0

relate perguntas

  • Os índices filtrados podem ajudar a melhorar as consultas baseadas em uma hora inserida ou isso deve ser evitado?

  • Qual é a diferença entre os tipos de dados MySQL VARCHAR e TEXT?

  • É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]

  • Armazenar vs calcular valores agregados

  • Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?

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