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 / 24034
Accepted
Edmon
Edmon
Asked: 2012-09-11 06:14:49 +0800 CST2012-09-11 06:14:49 +0800 CST 2012-09-11 06:14:49 +0800 CST

Limitações de escalabilidade do PostgreSQL e MySQL

  • 772

Ouvi dizer que o desempenho do banco de dados relacional não fragmentado, como MySQL ou PostgreSQL, "quebra" além de 10 TB.

Suspeito que existam limites como tal, pois não se apresentaria Netezza, Greenplum ou Vertica, etc., no entanto, gostaria de perguntar se alguém aqui tem uma referência a algum artigo de pesquisa ou estudo de caso formal onde esses limites são quantificados.

mysql postgresql
  • 1 1 respostas
  • 36810 Views

1 respostas

  • Voted
  1. Best Answer
    Chris Travers
    2012-10-01T19:22:13+08:002012-10-01T19:22:13+08:00

    Não há uma resposta simples para sua pergunta, mas aqui estão algumas coisas para pensar.

    Primeiro, a escala não é a única coisa com que se preocupar. O que você faz com seus dados é. Se você tiver 500 tabelas 30 TB de dados e estiver fazendo OLTP simples com muito pouco relatório, acho que não terá muitos problemas. Existem bancos de dados de 32 TB no PostgreSQL por aí. No entanto, ao mesmo tempo, o desempenho será degradado um pouco porque é necessário atingir o disco em tudo. Da mesma forma, se você tiver 50 TB de dados, mas tiver um conjunto comum de cerca de 100 GB, poderá criar um servidor com RAM suficiente para manter essa parte do banco de dados na memória e você será de ouro.

    Por outro lado, se você estiver tentando tirar o modo (valor mais comum) de 1 TB de dados, não importa qual sistema você esteja usando, isso será doloroso com ou sem fragmentação. (Edit: Sharding pode, de fato, piorar esse problema . )

    Os principais problemas que você encontrará com bancos de dados enormes no MySQL e no PostgreSQL envolvem o fato de que nenhum deles suporta paralelismo intraconsulta. Em outras palavras, uma consulta é executada como um único bloco por um único thread e não pode ser dividida em partes e executada separadamente. Isso geralmente é um problema ao executar grandes consultas analíticas em grandes quantidades de dados. É aqui que o Postgres-XC e o Green Plum vêm em socorro, pois separam o armazenamento da execução e podem fazer isso no nível do coordenador. Observe que o Postgres-XC e o Green Plum usam essencialmente o sharding internamente, mas os coordenadores impõem toda a consistência globalmente.

    Com o paralelismo intraconsulta, você pode dividir a consulta, fazer com que diferentes processadores/canais de E/S de disco executem partes dela e relatar partes do conjunto de resultados a serem montados e passados ​​de volta para o aplicativo. Novamente, isso geralmente é mais útil em cargas de processamento analítico do que em transações.

    A segunda coisa é que alguns sistemas, como o Vertica ou o Greenplum, armazenam colunas de informações juntas. Isso torna o sistema mais difícil de usar de uma perspectiva OLTP e diminui o desempenho, mas aumenta drasticamente o desempenho para grandes cargas de trabalho analíticas. Portanto, essa é uma compensação específica da carga de trabalho.

    Portanto, a resposta é que, quando você atingir um tamanho acima de 1-2 TB, poderá se deparar com várias compensações entre sistemas e cargas de trabalho. Novamente, isso é específico para bancos de dados, tamanho de conjuntos de trabalho, etc. No entanto, neste ponto, você realmente precisa usar sistemas de floco de neve, ou seja, únicos e adaptados à sua carga de trabalho.

    Isso, obviamente, significa que os limites geralmente não são quantificáveis.

    Edit : Eu já trabalhei com um banco de dados de 9 TB que lida com uma mistura de cargas de trabalho de suporte à decisão e processamento transacional no PostgreSQL. O maior desafio é que, se você tiver perguntas que atingem grandes partes do conjunto de dados, terá que esperar um pouco pela resposta.

    No entanto, com atenção cuidadosa aos fundamentos (incluindo índices, autovacuum, como eles funcionam no nível baixo, etc.)

    Edit2 : Quando você chegar a 100 TB, o que funcionará dependerá do seu conjunto de dados. Estou trabalhando em um agora que não será dimensionado para esse intervalo porque atingirá primeiro o limite de 32 TB por tabela no PostgreSQL.

    • 53

relate perguntas

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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