Odpowiedź brzmi: zawsze powinieneś mierzyć, najlepiej z własnymi danymi i obciążeniem, jeśli to w ogóle możliwe.
Ponieważ wzorce dostępu do danych mogą się znacznie różnić w zależności od aplikacji, trudno powiedzieć i najprawdopodobniej niemożliwe jest określenie „najlepszego” silnika pamięci masowej dla wszystkich obciążeń.
Są jednak bardzo zachęcające zmiany w przestrzeni MySQL, które wzięły udział w MySQLConf / Percona Performance Conf w zeszłym tygodniu.
Niektóre z alternatywnych silników pamięci masowej:
- XtraDB (widelec InnoDB)
- Wtyczka InnoDB
- PBXT
- TokuDB
Dodatkowo Percona, Google itp. Wnieśli poprawki, które znacznie pomagają w wydajności InnoDB. Osobiście prowadzę kompilację OurDelta. Działa dla mnie ładnie i zachęcam do zapoznania się z kompilacjami OurDelta i Percona.
Jeśli jest to prosty system sklepu / raportów, używam MyISAM ze względu na jego surową wydajność.
Używałbym InnoDB, gdybym był zaniepokojony wieloma jednoczesnymi dostępami z dużą ilością zapisów, aby skorzystać z blokowania na poziomie wiersza.
źródło
Istnieje wiele testów porównawczych dla różnych silników baz danych MySQL. Jest przyzwoity porównujący MyISAM, InnoDB i Falcon na blogu Percona MySQL Performance , patrz tutaj .
Kolejną rzeczą do rozważenia między dwoma wyżej wymienionymi silnikami (MyISAM i InnoDB) są ich podejścia do blokowania. MyISAM wykonuje blokowanie tabeli, podczas gdy InnoDB blokuje wiersze. Jest wiele rzeczy do rozważenia, nie tylko zwykłe wyniki.
źródło
Istnieją funkcje, które okażą się bardzo przydatne ze względów operacyjnych, nawet jeśli aplikacja ich absolutnie nie wymaga:
Niezależnie od ograniczeń klucza obcego, prawdopodobnie i tak chcesz użyć InnoDB.
oczywiście jest to Błąd serwera, a nie Przepełnienie stosu, więc poprawna odpowiedź to:
źródło
Mój dostawca hostingu poradził nam, aby całkowicie pozbyć się MyISAM i przejść na InnoDB, chyba że nie jest to możliwe.
W naszym przypadku mieliśmy poważne uszkodzenie danych, które zaczęło pojawiać się od kilku razy do kilku razy dziennie, zawsze wymagając naprawy tabeli naprawczej i powiązanych poleceń, co zajmowało wieki na dużych tabelach.
Po konwersji (lub: konwersji) do InnoDB problemy natychmiast zniknęły. Minusy / zastrzeżenia mieliśmy:
Ale uwaga: wszystko to jest specyficzne dla naszego środowiska itp., Więc może nie mieć zastosowania.
źródło