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 / 5926
Accepted
Rick James
Rick James
Asked: 2011-09-19 06:38:17 +0800 CST2011-09-19 06:38:17 +0800 CST 2011-09-19 06:38:17 +0800 CST

Vários núcleos e desempenho do MySQL

  • 772

A importância da RAM é um fato estabelecido, mas muito menos material está disponível sobre a importância dos núcleos e multithreading quando se trata do uso da CPU pelo MySQL. Estou falando sobre a diferença de executar o MySQL em 4 núcleos vs 6 núcleos vs 8 núcleos e assim por diante.

Diferentes mecanismos de armazenamento usam a CPU de maneira diferente?

mysql performance
  • 2 2 respostas
  • 63695 Views

2 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2011-09-20T20:50:05+08:002011-09-20T20:50:05+08:00

    Quando se trata do MySQL, não há comparação entre os mecanismos de armazenamento, exceto que ele se enquadra em duas categorias básicas:

    • Transacional ( compatível com ACID )
    • Não transacional

    MySQL apresenta o uso de vários mecanismos de armazenamento

    • InnoDB (padrão a partir do MySQL 5.5)
    • MyISAM (padrão antes do MySQL 5.5)
    • ARQUIVO
    • BURACO
    • CSV
    • MEMÓRIA
    • MRG_MYISAM
    • FEDERADO
    • NDB também conhecido como MySQL Cluster

    Quanto aos mecanismos de armazenamento listados, os únicos que possuem conformidade com ACID são o InnoDB e o NDB. Por que isso é importante mencionar? Duas razões:

    • Outros mecanismos de armazenamento simplesmente não são beneficiados com a presença de mais núcleos, além de E/S de disco básico, uso de CPU e taxa de transferência geral.
    • O código para cada mecanismo de armazenamento não transacional, que dita basicamente 14 operações internas independentemente do mecanismo de armazenamento, não foi projetado para alavancar o acesso a vários núcleos.

    InnoDB no MySQL 5.5, Plugin InnoDB) e o XtraDB do Percona Server têm opções que você pode definir para acessar vários núcleos (o Percona Server faz isso há mais tempo). Na verdade, Percona injeta cerca de 30.000 linhas de código especificamente para aprimoramento de desempenho do InnoDB com cada nova versão GA do código-fonte do MySQL. Podemos ter certeza de que a Oracle incluiu seus próprios aprimoramentos de seu próprio think tank para rodar no InnoDB para operação multicore (desde o MySQL 5.1.38).

    Com a necessidade de executar MVCC em dados em conjunto com bloqueio de linha/página, o desempenho da transação agora pode ser instrumentado, medido e configurado.

    Se há uma coisa que aprendi sobre o uso de vários núcleos, é que você deve ajustar o InnoDB de forma eficaz e não apenas confiar no InnoDB pronto para uso .

    ATUALIZAÇÃO 2011-09-20 08:03 EDT

    Com relação ao InnoDB se beneficiar de todos os núcleos, precisamos manter as coisas em perspectiva. Os núcleos também devem atender a outros assuntos (SO, Disco, Memória, Aplicativos, Monitoramento, etc.) no Servidor de Banco de Dados. Para aqueles com orçamentos modestos, muitos tendem a ter um servidor de banco de dados que também fornece NFS, monitoramento de Munin, suporte a aplicativos para JBoss, PHP e a lista continua. Se você deseja que o MySQL, mais especificamente o InnoDB, use mais núcleos, o Servidor de Banco de Dados deve ser dedicado exclusivamente ao MySQL e o SO/Disco/Memória deve atender apenas ao MySQL . Dada essa perspectiva, o InnoDB envolverá mais núcleos sem dúvida .

    Quanto ao Plugin InnoDB, foi mencionado apenas para mostrar iniciativas anteriores para ter um InnoDB melhor por parte do MySQL (eh, Oracle. Desculpe, ainda não saiu da língua). Novas variáveis ​​para convocar mais atividades centrais tornaram-se evidentes a partir do MySQL 5.1.38.

    Por exemplo, innodb_read_io_threads e innodb_write_io_threads (ambos desde o MySQL 5.1.38) alocam o número especificado de threads para leituras e gravações. O padrão é 4 e o máximo é 64. As configurações padrão e máxima sendo tão diferentes (4 - 64) mostram que o InnoDB é tão multithread e intensivo em núcleo quanto você o configura !!!

    Atender às necessidades da comunidade MySQL para acessar mais núcleos com o InnoDB foi liderado por Percona. Consequentemente, o MySQL começou a seguir o exemplo. Eu tenho que admitir que a Oracle (eca) fez as melhorias necessárias para uma atividade mais central.

    • 30
  2. Morgan Tocker
    2013-12-30T08:49:31+08:002013-12-30T08:49:31+08:00

    Acho que falar sobre mecanismos de armazenamento usando núcleos pode ser enganoso para iniciantes. Desde que um programa seja suficientemente multiencadeado, o sistema operacional o agendará no maior número possível de núcleos.

    O problema específico que limita o cpu-scaling é quando o código de bloqueio interno ( mutexes ) tem contenção e bloqueia a execução simultânea de threads. Todos os mecanismos de armazenamento exigirão mutexes, mas certamente existem alguns quentes no MyISAM.

    Se ignorarmos a contenção de mutex por um segundo e voltarmos à sua pergunta principal: quão importante é ter muitos núcleos? -

    Gosto de ter muitos núcleos para cargas de trabalho que atendem a solicitações de usuários. Ter muitos pode reduzir a variação entre os tempos de consulta. Pense nisso como fazer fila no supermercado com 12 corredores abertos contra apenas 2.

    Atualização : escrevi um post no blog sobre por que a escalabilidade vertical (multi-cores) é importante.

    • 9

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

  • 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 você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

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

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +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
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +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
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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