Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que o MySQL InnoDB é muito mais lento em varreduras de tabela completas do que o MyISAM?


No meu servidor com sua configuração meu desempenho base é o seguinte:
  • InnoDB:5,71s
  • MyISAM:2,50s

Isso não é ruim no meu livro, mas pode usar alguns ajustes.

O desempenho do seu InnoDB pode ser melhorado em várias frentes:

Aumentar innodb_buffer_pool_size

  • Esta é a variável de configuração do InnoDB mais importante. Idealmente, deve ser 70-80% de sua RAM disponível em um servidor dedicado ao MySQL e InnoDB.
  • Aumentando innodb_buffer_pool_size no meu servidor para 2G (mais que suficiente para este teste) diminuiu o tempo do InnoDB para 4,60s

Faça do id a CHAVE PRIMÁRIA

  • InnoDB agrupa seus dados com base em PRIMARY KEY. Quando você não declara um, o InnoDB gera um aleatório implicitamente. Ter uma chave primária sequencial (id) é mais rápido do que uma chave aleatória.
  • Fazer id como PRIMARY KEY no meu servidor diminuiu o tempo do InnoDB para 3,80s

Atualize seu MySQL/InnoDB


Com o MySQL 5.1+, o MySQL suporta mecanismos de armazenamento conectáveis. Especificamente o novo InnoDB Plugin .

O novo mecanismo InnoDB oferece muitos aprimoramentos de desempenho que podem têm efeitos significativos sobre esse tipo específico de consulta.

De importância:
  • A partir do MySQL 5.1.38, o plug-in InnoDB está incluído no MySQL
  • A partir do MySQL 5.1.43, o plug-in InnoDB não está apenas incluído, mas é o mecanismo padrão do MySQL