sql >> Databasteknik >  >> RDS >> Mysql

Varför är MySQL InnoDB så mycket långsammare vid fullbordssökningar än MyISAM?

På min server med din konfiguration är min basprestanda följande:

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

Det här är inte dåligt i min bok, men det kan behöva lite justeringar.

Din InnoDB-prestanda kan förbättras på flera fronter:

Öka innodb_buffer_pool_size

  • Detta är den enskilt viktigaste InnoDB-konfigurationsvariabeln. Helst bör det vara 70-80 % av ditt tillgängliga RAM-minne på en server dedikerad till MySQL och InnoDB.
  • Ökar innodb_buffer_pool_size på min server till 2G (mer än tillräckligt för detta test) minskat InnoDB-tiden till 4,60s

Gör ID till PRIMÄRNYCKEL

  • InnoDB kluster sin data baserat på PRIMÄRNYCKEL. När du inte deklarerar en, genererar InnoDB en slumpmässig en implicit. Att ha en sekventiell primärnyckel (id) är snabbare än en slumpmässig.
  • Att göra id till PRIMÄRNYCKEL på min server minskat InnoDB-tiden till 3,80s

Uppgradera din MySQL/InnoDB

Med MySQL 5.1+ stöder MySQL pluggbara lagringsmotorer. Närmare bestämt den nya InnoDB Plugin .

Den nya InnoDB-motorn ger många många prestandaförbättringar som kan har betydande inverkan på just den här typen av sökning.

Att notera:

  • Från och med MySQL 5.1.38 ingår InnoDB Plugin i MySQL
  • Från och med MySQL 5.1.43 är InnoDB Plugin inte bara inkluderad, utan är standardmotorn för MySQL



  1. Bestäm radstorleken för tabellen

  2. Konvertera frågeresultat till en kommaseparerad lista i MariaDB

  3. 3 sätt att konvertera HEX till INT i SQL Server (T-SQL)

  4. Hur hanterar man MySQL tung trafik?