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 / 71213
Accepted
chris
chris
Asked: 2014-07-11 13:47:47 +0800 CST2014-07-11 13:47:47 +0800 CST 2014-07-11 13:47:47 +0800 CST

Existem benefícios em usar mais de 4 CPUs para o MySQL?

  • 772

Estamos executando o MySQL 5.5 no Linux sob VMWare, executando em 2 CPUs. Estamos planejando aumentar para 4, mas temos CPUs não usadas disponíveis e gostaria de saber se há algum benefício em aumentar o número para 8?

mysql innodb
  • 2 2 respostas
  • 3822 Views

2 respostas

  • Voted
  1. Best Answer
    jynus
    2014-07-11T14:21:41+08:002014-07-11T14:21:41+08:00

    O MySQL Server executará apenas cada consulta em um único thread de primeiro plano , não há suporte para execução multi-thread no lado do SQL. Ele também executa operações de manutenção como ALTER TABLEs que podem reconstruir uma tabela inteira em um único thread.

    No entanto, mecanismos como o InnoDB , especialmente em versões recentes, são capazes de executar seus threads de segundo plano simultaneamente , o que significa que certas operações de E/S, como descarga de dados, pré-cache e limpeza de dados, podem ocorrer simultaneamente, com alguns benchmarks de "laboratório" de fornecedores do MySQL mostrando que ele pode escale até 64 núcleos sob alto estresse.

    Dito isso, entenda que, na maioria dos casos, um banco de dados como o MySQL não é limitado por CPU, mas por IO , o que significa que não é a potência da CPU que está causando o gargalo na latência, é a latência de leitura e gravação e throughput do armazenamento secundário. Existem certos casos em que você pode estar vinculado à CPU, por exemplo, em alguns casos especiais ao executar determinadas somas de verificação em um dispositivo FusionIO, se precisar de SSL/outro tipo de criptografia, se executar operações matemáticas complexas no nível SQL ou aplicar filtros de linha que podem ser feitos exclusivamente na memória.

    Se você sofreu picos de CPU no passado ou tem alto uso constante de CPU, isso pode ajudar , mas apenas supondo que você possa paralelizar o cálculo da consulta: isso não tornará a análise ALTER TABLES ou SQL mais rápida para uma única consulta. Isso, combinado com a abordagem "leve" que muitos de nós recomendamos ao trabalhar com o MySQL (tentar evitar a lógica de negócios -procedimentos armazenados- no lado do MySQL) torna o benchmark de laboratório que mencionei antes difícil de reproduzir na realidade. Começar a usar a simultaneidade extra às vezes requer uma versão recente do MySQL e alterações de configuração . Em geral, para o MySQL, é bem melhor investir em núcleos mais poderosos do que muitos deles .

    • 7
  2. RolandoMySQLDBA
    2014-07-11T17:55:05+08:002014-07-11T17:55:05+08:00

    InnoDBGenericName

    O InnoDB pode acessar vários núcleos, mas não espere que seja assim fora da caixa. O InnoDB deve ser configurado para fazer isso.

    • Mar 16, 2012: Usando vários núcleos para consultas MySQL únicas no Debian
    • Sep 20, 2011: Múltiplos núcleos e desempenho do MySQL
    • Sep 12, 2011: Possível fazer o MySQL usar mais de um núcleo?
    • May 26, 2011: Sobre o desempenho de bancos de dados de thread único versus multithread

    Se você não configurar os recursos multicore, as versões mais antigas do MySQL serão melhores

    • Jun 19, 2011: Como eu executo corretamente um Bake-off do MySQL?
    • Oct 05, 2011: A consulta é executada por muito tempo em algumas versões mais recentes do MySQL
    • Nov 24, 2011: Por que mysql 5.5 é mais lento que 5.1 (linux, usando mysqlslap)

    Ambientes VM

    Quando se trata do MySQL em uma VM, o InnoDB deve ser tratado com muito cuidado e de forma muito conservadora. Por quê ?

    Quando o InnoDB é usado pronto para uso (sem ajuste para threading), ele pode fornecer menos do que ganhos lineares. Você pode até dizer que nivela um pouco ( consulte a página 8 deste PDF ). O que pode piorar isso é o fato de que mais CPUs virtuais exigem maior sobrecarga de agendamento ( consulte a página 18 deste PDF ).

    Epílogo

    Conhecendo ambos os lados da questão do MySQL em uma VM, agora você pode ajustar moderadamente para obter mais Cpus. Isso é vital, pois você pode enlouquecer um pouco em um servidor bare metal se tiver muitos núcleos físicos junto com mais de 192 GB de RAM .

    Portanto, para se beneficiar de mais CPUs, você deve ajustar o InnoDB com responsabilidade.

    Você só pode ser um pouco mais liberal se

    • Você aumenta os recursos físicos do VMWare (são necessários bolsos profundos e um CFO feliz)
    • Você vai para um servidor bare metal
    • 3

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • 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ê?

  • 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

    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