Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego MySQL InnoDB jest o wiele wolniejszy przy skanowaniu pełnych tabel niż MyISAM?

Na moim serwerze z twoją konfiguracją moja podstawowa wydajność jest następująca:

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

To nieźle w mojej książce, ale można to trochę poprawić.

Wydajność InnoDB można poprawić na kilku frontach:

Zwiększ innodb_buffer_pool_size

  • Jest to najważniejsza pojedyncza zmienna konfiguracyjna InnoDB. Idealnie powinno to być 70-80% dostępnej pamięci RAM na serwerze dedykowanym dla MySQL i InnoDB.
  • Zwiększenie innodb_buffer_pool_size na moim serwerze do 2G (więcej niż wystarczająco dla tego testu) zmniejszone czas InnoDB do 4,60s

Ustaw id jako KLUCZ PODSTAWOWY

  • Klastry InnoDB to dane oparte o KLUCZ PODSTAWOWY. Jeśli go nie zadeklarujesz, InnoDB generuje losowy niejawnie. Posiadanie sekwencyjnego klucza podstawowego (id) jest szybsze niż losowego.
  • Uczynienie id klucza podstawowego na moim serwerze zmniejszyło się czas InnoDB do 3,80s

Uaktualnij swój MySQL/InnoDB

Dzięki MySQL 5.1+ MySQL obsługuje podłączane silniki pamięci masowej. W szczególności nowa wtyczka InnoDB .

Nowy silnik InnoDB zapewnia wiele licznych ulepszeń wydajności, które może mają znaczący wpływ na ten konkretny typ zapytania.

Uwaga:

  • Od wersji MySQL 5.1.38 wtyczka InnoDB jest zawarta w MySQL
  • Od wersji MySQL 5.1.43 wtyczka InnoDB jest nie tylko dołączona, ale jest także domyślnym silnikiem dla MySQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# — MySQL kontra Microsoft SQL Server

  2. mysql order by with union nie działa

  3. MySQL:jak zapobiec wstawianiu wiersza ze wszystkimi kolumnami =NULL?

  4. Co oznacza słowo kluczowe KLUCZ?

  5. Zapisywanie identyfikatora Facebooka jako int lub varchar?