Mysql
 sql >> Database >  >> RDS >> Mysql

Perché MySQL InnoDB è molto più lento a scansioni complete di tabelle rispetto a MyISAM?

Sul mio server con la tua configurazione le mie prestazioni di base sono le seguenti:

  • InnoDB:5.71s
  • MyISAM:2,50s

Questo non è male nel mio libro, ma può richiedere qualche ritocco.

Le prestazioni di InnoDB possono essere migliorate su diversi fronti:

Aumenta innodb_buffer_pool_size

  • Questa è la singola variabile di configurazione di InnoDB più importante. Idealmente dovrebbe essere il 70-80% della RAM disponibile su un server dedicato a MySQL e InnoDB.
  • Aumento di innodb_buffer_pool_size sul mio server a 2G (più che sufficiente per questo test) diminuito il tempo di InnoDB a 4,60s

Rendi id la CHIAVE PRIMARIA

  • InnoDB raggruppa i dati in base alla CHIAVE PRIMARIA. Quando non ne dichiari uno, InnoDB ne genera uno casuale in modo implicito. Avere una chiave primaria sequenziale (id) è più veloce di una casuale.
  • Rendere id la CHIAVE PRIMARIA sul mio server diminuito il tempo di InnoDB a 3,80s

Aggiorna il tuo MySQL/InnoDB

Con MySQL 5.1+ MySQL supporta i motori di archiviazione collegabili. In particolare il nuovo Plugin InnoDB .

Il nuovo motore InnoDB offre numerosi e numerosi miglioramenti delle prestazioni che possono hanno effetti significativi su questo particolare tipo di query.

Da notare:

  • A partire da MySQL 5.1.38, il plug-in InnoDB è incluso in MySQL
  • A partire da MySQL 5.1.43, il plug-in InnoDB non è solo incluso, ma è il motore predefinito per MySQL