chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[MySQL] Jakie są różnice między MyISAM a InnoDB?

Ta wersja
blog.piotrnalepa.pl/2011/03/03/mysql-jakie-sa-roznice-miedzy-myisam-a-innodb
Opublikowano
Autor
, Staff Software Engineer
Kategoria
Inne
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 15 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

Jakiś czas temu, podczas projektowania aplikacji internetowej, zacząłem się zastanawiać - jakie są różnice pomiędzy MyISAM a InnoDB? Który mechanizm składowania danych wybrać, aby było wszystko ok? Tak powstał pomysł na ten artykuł. Postaram się w nim przybliżyć specyfikę obydwu systemów i spróbuję Ci wskazać ten lepszy.

Sekcja 1Różnice w możliwościach i działaniu

  1. InnoDB jest nowszym rozwiązaniem niż MyISAM
  2. InnoDB jest bardziej rozbudowany a MyISAM jest prostszy
  3. InnoDB bardziej dba o integralność danych niż MyISAM
  4. InnoDB stosuje blokadę poszczególnych wierszy na czas edycji i aktualizacji danych w bazie, podczas gdy MyISAM stosuje blokadę całej tabeli (w skrócie - na czas operacji w InnoDB tylko wiersze są niedostępne, a w MyISAM cała tabela)
  5. InnoDB posiada system transakcyjny, a MyISAM nie
  6. InnoDB pozwala na korzystanie z kluczy obcych, a MyISAM nie
  7. InnoDB lepiej radzi sobie z odzyskiwaniem danych po ewentualnych crashach
  8. MyISAM ma pełnotekstowy indeks wyszukiwania

Sekcja 2Zalety InnoDB

  1. InnoDB powinno być wykorzystywane wszędzie tam, gdzie integralność danych jest priorytetem
  2. Jest lepszy tam gdzie występuje duży nacisk na zapisywanie danych do bazy danych ze względu na blokowanie tylko wierszy a nie całej tabeli.

Sekcja 3Wady InnoDB

  1. Z powodu większej dbałości o relacje między tabelami, administrator bazy danych oraz twórca bazy danych muszą więcej czasu przeznaczyć na projektowanie struktury takiej bazy oraz przepływu danych w niej zawartych.
  2. Wykorzystuje więcej zasobów systemowych do działania, takich jak pamięć RAM.
  3. Brak indeksowania pełnotekstowego

Sekcja 4Zalety MyISAM

  1. Bazy danych w tym systemie są prostsze do zaprojektowania i stworzenia, w szczególności dla początkujących.
  2. Ogólnie, jest szybsza ze względu na swoją prostotę i nie zużywa tak wielu zasobów systemów tak jak InnoDB
  3. Posiada indeksowanie pełnotekstowe
  4. Ze względu na powyższe indeksy jest szczególnie efektywna gdy istnieje potrzeba intensywnego odczytywania danych z bazy danych

Sekcja 5Wady MyISAM

  1. Brak sprawdzania integralności danych, co zwiększa liczbę problemów dla administratorów baz danych
  2. Brak wsparcia dla transakcji, które są szczególnie ważne takich systemach bazodanowych jak systemy dla banków, systemy dla korporacji, itp., itd.
  3. Wolniejsza od InnoDB w przypadku częstego zapisu danych do bazy danych i ich aktualizacji w bazie

Sekcja 6Podsumowanie

Mam nadzieję, że udało mi się przybliżyć Tobie wady i zalety każdego z tych mechanizmów MySQL. Jak widać, InnoDB jest przydatne w momencie gdy potrzebujemy aby nasze dane w bazie były jak najlepiej zabezpieczone przed błędami czy awariami, oraz w momencie gdy zależy nam na jak najszybszym zapisywaniu nowych danych do bazy. Natomiast, MyISAM jest lepszy przy prostszych projektach takich jak zwykłe strony internetowe, gdzie w zasadzie dane są zapisywane w bazie od czasu do czasu, ale za to o wiele częściej są odczytywane z niej.
Wracając do mojego problemu z początku tekstu, to ja postanowiłem wymieszać InnoDB z MyISAM. To znaczy część tabel potraktowałem mechanizmem MyISAM, a część (mniejszą) mechanizmem InnoDB i wszystko pięknie działa.

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!