Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum ist MySQL InnoDB bei Full-Table-Scans so viel langsamer als MyISAM?

Auf meinem Server mit Ihrer Konfiguration ist meine Basisleistung wie folgt:

  • InnoDB:5,71 s
  • MyISAM:2,50 s

Das ist nicht schlecht in meinem Buch, aber es kann einige Optimierungen gebrauchen.

Ihre InnoDB-Leistung kann an mehreren Fronten verbessert werden:

Erhöhen Sie innodb_buffer_pool_size

  • Dies ist die wichtigste InnoDB-Konfigurationsvariable. Idealerweise sollte es 70-80 % Ihres verfügbaren RAMs auf einem Server ausmachen, der für MySQL dediziert ist und InnoDB.
  • Erhöhen von innodb_buffer_pool_size auf meinem Server auf 2G (mehr als genug für diesen Test) verringert die InnoDB-Zeit auf 4,60 s

Machen Sie id zum PRIMÄRSCHLÜSSEL

  • InnoDB gruppiert seine Daten basierend auf PRIMARY KEY. Wenn Sie keine deklarieren, generiert InnoDB implizit eine zufällige. Einen sequenziellen Primärschlüssel (ID) zu haben ist schneller als ein zufälliger.
  • Id zum PRIMARY KEY auf meinem Server zu machen verringert die InnoDB-Zeit auf 3,80 s

Aktualisieren Sie Ihr MySQL/InnoDB

Mit MySQL 5.1+ unterstützt MySQL Pluggable Storage Engines. Insbesondere das neue InnoDB-Plugin .

Die neue InnoDB-Engine bietet viele zahlreiche Leistungsverbesserungen, die können haben erhebliche Auswirkungen auf diesen speziellen Abfragetyp.

Hinweis:

  • Ab MySQL 5.1.38 ist das InnoDB-Plugin in MySQL enthalten
  • Ab MySQL 5.1.43 ist das InnoDB-Plugin nicht nur enthalten, sondern ist die Standard-Engine für MySQL