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

Hvorfor er MySQL InnoDB så meget langsommere ved fuldbordsscanninger end MyISAM?

På min server med din konfiguration er min basisydelse som følger:

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

Dette er ikke dårligt i min bog, men det kan bruge nogle justeringer.

Din InnoDB-ydeevne kan forbedres på flere fronter:

Forøg innodb_buffer_pool_size

  • Dette er den vigtigste InnoDB-konfigurationsvariabel. Ideelt set bør det være 70-80 % af din tilgængelige RAM på en server dedikeret til MySQL og InnoDB.
  • Øger innodb_buffer_pool_size på min server til 2G (mere end nok til denne test) faldet InnoDB-tiden til 4,60s

Gør id til den PRIMÆRE NØGLE

  • InnoDB klynger sine data baseret på PRIMÆR NØGLE. Når du ikke erklærer en, genererer InnoDB en tilfældig implicit. At have en sekventiel primær nøgle (id) er hurtigere end en tilfældig.
  • At gøre id'et til den PRIMÆRE NØGLE på min server nedsat InnoDB-tiden til 3,80s

Opgrader din MySQL/InnoDB

Med MySQL 5.1+ understøtter MySQL pluggbare lagermotorer. Nærmere bestemt det nye InnoDB-plugin .

Den nye InnoDB-motor giver mange adskillige ydeevneforbedringer, der kan har betydelig indflydelse på denne særlige type forespørgsel.

Bemærk:

  • Fra og med MySQL 5.1.38 er InnoDB-pluginet inkluderet i MySQL
  • Fra og med MySQL 5.1.43 er InnoDB-plugin'et ikke kun inkluderet, men er standardmotoren for MySQL



  1. Hvordan forbinder man fra en pulje af Google Compute Engine-instanser til Cloud SQL DB i det samme projekt?

  2. Mysql langsom forespørgsel:INNER JOIN + ORDER BY forårsager filesort

  3. Fjernelse af duplikerede data fra en tabel ved hjælp af MySQL

  4. Tæl rækker i MySQL sammen med det faktiske rækkeindhold