Kiedy stosować MyISAM i InnoDB? [duplikat]

To pytanie ma już odpowiedź tutaj:

MyISAM został zaprojektowany z myślą, że Twoja baza danych jest pytana o wiele bardziej niż aktualizowana, a w rezultacie wykonuje bardzo szybkie operacje odczytu. Jeśli stosunek odczytu do zapisu (Wstaw|update) jest mniejszy niż 15%, lepiej jest użyć MyISAM.

InnoDB blokowanie poziomu wiersza, posiada funkcje zatwierdzania, wycofywania i odzyskiwania po awarii w celu ochrony danych użytkownika. Obsługuje tolerancję transakcji i błędów

Powyższe różnice są poprawne między MyISAM i InnobDB? proszę kierować się, czy istnieją jakieś inne ograniczenia dla MYISAM i InnobDB. kiedy należy stosować MyiSAM lub kiedy Innodb? Dziękuję!

Author: Licson, 2013-03-28

2 answers

Przeczytaj o silniki magazynowe.

MyISAM:

The MyISAM storage engine in MySQL.

  • prostsze w projektowaniu i tworzeniu, a więc lepsze dla początkujących. Nie martw się o obce relacje między tabelami.
  • szybszy niż InnoDB w całości dzięki prostszej strukturze, a tym samym znacznie mniejszym kosztom zasobów serwera. -- W większości to już nie prawda.
  • indeksowanie pełnotekstowe. -- InnoDB ma to teraz
  • szczególnie dobre dla tabel intensywnie czytających (select). -- W większości to już nie prawda.
  • ślad dysku jest 2x-3x mniejszy niż InnoDB. -- od wersji 5.7, jest to chyba jedyna prawdziwa zaleta MyISAM.

InnoDB:

The InnoDB storage engine in MySQL.

  • wsparcie dla transakcji (daje wsparcie dla ACID nieruchomości).
  • blokada na poziomie wiersza. O bardziej drobnoziarnistym mechanizmie blokującym daje wyższą współbieżność w porównaniu np. z MyISAM .
  • ograniczenia klucza obcego. Pozwala na to, aby baza danych zapewniała integralność stanu bazy danych oraz relacje między tabelami.
  • InnoDB jest bardziej odporny na uszkodzenia stołu niż MyISAM.
  • wsparcie dla dużej puli buforów zarówno dla danych, jak i indeksów. MyISAM key buffer jest przeznaczony tylko dla indeksów.
  • MyISAM jest w stagnacji; wszystkie przyszłe ulepszenia będą w InnoDB. To było jasno sprecyzowane wraz z wprowadzeniem wersji 8.0.

Ograniczenia MyISAM:

  • brak kluczy obcych i kaskadowe usuwanie / aktualizacje
  • brak integralności transakcyjnej (zgodność z kwasem)
  • No rollback abilities
  • 4,284,867,296 row limit (2^32) -- To jest stary default . Konfigurowalny limit (dla wielu wersji) wynosi 2 * * 56 bajtów.
  • maksymalnie 64 indeksy w tabeli

InnoDB Ograniczenia:

  • brak indeksowania pełnego tekstu (poniżej-wersja mysql 5.6)
  • nie można skompresować do szybkiego, tylko do odczytu (wprowadzono 5.5.14 ROW_FORMAT=COMPRESSED)
  • nie można naprawić tabeli InnoDB

Aby uzyskać krótkie zrozumienie, przeczytaj poniższe linki:

  1. MySQL Engines: InnoDB vs. MyISAM – porównanie plusów i Cons
  2. Silniki MySQL: MyISAM vs. InnoDB
  3. jakie są główne różnice między InnoDB i MyISAM?
  4. MyISAM kontra InnoDB
  5. Jaka jest różnica między MyISAM i InnoDB?
  6. MySql: MyISAM vs. Inno DB!
 204
Author: Tony Stark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-01 22:45:34

Użyj MyISAM dla bardzo nieistotnych danych lub jeśli naprawdę potrzebujesz tych minimalnych zalet wydajności. Wydajność odczytu nie jest lepsza w każdym przypadku dla MyISAM.

Ja osobiście nigdy już nie używam MyISAM. Wybierz InnoDB i rzuć trochę więcej sprzętu, jeśli potrzebujesz większej wydajności. Innym pomysłem jest przyjrzenie się systemom bazodanowym z większą liczbą funkcji, takich jak PostgreSQL, jeśli ma to zastosowanie.

EDIT: dla read-performance, ten link pokazuje, że innoDB często jest rzeczywiście nie wolniej niż MyISAM: http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

 16
Author: Argeman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-28 11:14:44