sql >> Database >  >> RDS >> Mysql

Waarom is MySQL InnoDB zo veel langzamer bij volledige tafelscans dan MyISAM?

Op mijn server met jouw configuratie zijn mijn basisprestaties als volgt:

  • InnoDB:5.71s
  • MijnISAM:2.50s

Dit is niet slecht in mijn boek, maar het kan wat aanpassingen gebruiken.

Uw InnoDB-prestaties kunnen op verschillende fronten worden verbeterd:

Verhoog innodb_buffer_pool_size

  • Dit is de allerbelangrijkste InnoDB-configuratievariabele. Idealiter zou dit 70-80% van uw beschikbare RAM moeten zijn op een server die speciaal is bedoeld voor MySQL en InnoDB.
  • Toenemende innodb_buffer_pool_size op mijn server naar 2G (meer dan genoeg voor deze test) verlaagd de InnoDB-tijd tot 4.60s

Maak id de PRIMAIRE SLEUTEL

  • InnoDB clustert zijn gegevens op basis van PRIMAIRE SLEUTEL. Als u er geen declareert, genereert InnoDB impliciet een willekeurige. Het hebben van een sequentiële primaire sleutel (id) is sneller dan een willekeurige.
  • Het maken van id de PRIMARY KEY op mijn server verlaagd de InnoDB-tijd tot 3.80s

Upgrade uw MySQL/InnoDB

Met MySQL 5.1+ ondersteunt MySQL pluggable storage-engines. Met name de nieuwe InnoDB-plug-in .

De nieuwe InnoDB-engine biedt tal van prestatieverbeteringen die mogelijk significante invloed hebben op dit specifieke type zoekopdracht.

Van belang:

  • Vanaf MySQL 5.1.38 is de InnoDB-plug-in opgenomen in MySQL
  • Vanaf MySQL 5.1.43 is de InnoDB-plug-in niet alleen inbegrepen, maar is deze ook de standaardengine voor MySQL



  1. PostgreSQL-functie / opgeslagen procedure CURRENT_TIMESTAMP verandert niet

  2. hoe duplicaten in mysql te verwijderen met case

  3. MySql toevoegen van een join geeft onjuiste resultaten

  4. Overwegingen rond kolomvolgorde in indexen en sorteringen