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 / 199591
Accepted
Alireza
Alireza
Asked: 2018-03-08 04:39:51 +0800 CST2018-03-08 04:39:51 +0800 CST 2018-03-08 04:39:51 +0800 CST

Eu ganho melhoria de desempenho de leitura usando zlib em vez de compactação rápida no MongoDB?

  • 772

Meu mecanismo de armazenamento atual é WiredTigere seu nível de compactação é padrão, rápido. Eu me deparei com a documentação do MongoDB e foi mencionado que usar o zlib compacta melhor, mas precisa de mais CPU.

Eu quero saber vai zlibarmazenar mais dados na memória em comparação com snappycomo comprimir os dados? Eu tenho um servidor com 16 núcleos de CPU. Como a RAM é mais cara, prefiro economizar na memória caso ela mantenha mais dados.

Isso está correto? Posso mudar cegamente para zlib para armazenar mais dados em cache e melhorar o desempenho de leitura?

NOTA: Nosso servidor é de leitura intensiva.

mongodb memory
  • 1 1 respostas
  • 2902 Views

1 respostas

  • Voted
  1. Best Answer
    David Spillett
    2018-03-08T06:19:25+08:002018-03-08T06:19:25+08:00

    A documentação em https://docs.mongodb.com/manual/core/wiredtiger/#memory-use diz que os dados de coleta são compactados apenas no disco, portanto, descompactados na memória. Os índices mantêm sua compactação de prefixo na memória, mas não a compactação em nível de bloco.

    Portanto, alterar os algoritmos de compactação não reduzirá diretamente a quantidade de memória necessária para manter uma carga de trabalho de leitura pesada eficiente (ou seja, para garantir que seu conjunto de trabalho permaneça na RAM), a menos que você já esteja com falta de memória, caso em que uma melhor compactação pode ajudar reduzindo a E/S à medida que o sistema de armazenamento é prejudicado porque todos os dados do banco de dados nos buffers e cache do sistema operacional serão compactados. A única maneira de saber com certeza é comparar uma carga de trabalho realista em dados semelhantes à produção em um ambiente de teste com cada combinação de opções que você está considerando.

    O "a menos que você já esteja com falta de memória" é significativo aqui: uma vez que você esteja nesse estado, o melhor que a compactação provavelmente fará é melhorar seu desempenho de muito, muito lento para muito lento.

    Uma exceção ao acima seria qualquer consulta que precise ler um conjunto de dados muito grande para caber em qualquer quantidade prática de memória; nesse caso, você poderá ver melhorias significativas: todos os dados de que a consulta precisa precisarão ser lidos do subsistema de E/S de qualquer maneira, e a compactação provavelmente ajudará nisso. Precisaríamos saber muito mais sobre os dados e cargas de trabalho do seu aplicativo para fornecer dicas específicas sobre se isso teria um efeito perceptível no seu caso e, mesmo assim, a única maneira de ter certeza é, novamente, executar benchmarks.

    NOTA: este não é o caso para todos os bancos de dados. Por exemplo, com as opções de compactação do MS SQL Server, os dados nas páginas na RAM são compactados exatamente como estão no disco. Isso reduz o uso de RAM pelo pool de buffers em detrimento do tempo de CPU em cada leitura de cada página. Quando os dados são descompactados na RAM, a descompactação da CPU ocorre apenas quando os dados são carregados do disco, portanto, não afetará as leituras subsequentes até que a página/bloco/documento seja despejado porque não foi referido recentemente.

    Posso cegamente...

    A resposta curta é não.

    Uma resposta mais longa é: Nnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooo...

    Menos jocoso: fazer qualquer coisa cegamente em um banco de dados e/ou aplicativo de produção é perigoso, portanto, nunca é um curso de ação recomendado. Nunca faça isso se você valoriza seus usuários e sua própria sanidade. Sempre teste em um ambiente de desenvolvimento/teste primeiro, não importa o quanto você confie em qualquer fonte de aconselhamento que sugira o contrário. Pode parecer uma perda de tempo quando você testa e não encontra efeitos nocivos, mas em algum momento de sua carreira ficará muito feliz por ter aplicado a devida diligência e se salvado de um evento desagradável e embaraçoso em um aplicativo em produção! Se você não seguir a devida diligência dessa maneira, poderá enfrentar eventos de atualização de CV não planejados.

    • 3

relate perguntas

  • A fragmentação é eficaz para coleções pequenas?

  • Não há "Usando páginas bloqueadas para buffer pool" no log do SQL Server

  • Estou usando o mecanismo de armazenamento MEMORY, mas o MySQL ainda grava em meu disco... Por quê?

  • PostgreSQL: Força dados na memória

  • Bons recursos para operar/administrar o MongoDB

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