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

Jaka jest różnica między MyISAM a InnoDB?

Główne różnice między InnoDB i MyISAM („w odniesieniu do projektowania tabeli lub bazy danych”, o które pytałeś) to obsługa „integralności referencyjnej” i „transakcji”.

Jeśli potrzebujesz bazy danych do wymuszenia ograniczeń klucza obcego lub potrzebujesz bazy danych do obsługi transakcji (tj. zmiany wprowadzone przez co najmniej dwie operacje DML obsługiwane jako pojedyncza jednostka pracy, ze wszystkimi zastosowanymi zmianami lub wszystkimi zmianami cofniętymi) wtedy wybrałbyś silnik InnoDB, ponieważ tych funkcji nie ma w silniku MyISAM.

To są dwie największe różnice. Kolejną dużą różnicą jest współbieżność. W przypadku MyISAM instrukcja DML uzyska wyłączną blokadę tabeli, a gdy ta blokada jest utrzymywana, żadna inna sesja nie może wykonać operacji SELECT ani DML na tabeli.

Te dwa konkretne silniki, o które pytałeś (InnoDB i MyISAM), mają różne cele projektowe. MySQL ma również inne silniki pamięci masowej z własnymi celami projektowymi.

Tak więc, wybierając między InnoDB i MyISAM, pierwszym krokiem jest określenie, czy potrzebujesz funkcji zapewnianych przez InnoDB. Jeśli nie, to MyISAM jest do rozważenia.

Bardziej szczegółowe omówienie różnic jest raczej niepraktyczne (na tym forum) brak bardziej szczegółowego omówienia problematycznej przestrzeni... jak aplikacja będzie korzystać z bazy danych, ile tabel, rozmiar tabel, obciążenie transakcji, wolumeny wybranych , wstawianie, aktualizacje, wymagania dotyczące współbieżności, funkcje replikacji itp.

Logiczny projekt bazy danych powinien koncentrować się na analizie danych i wymaganiach użytkownika; wybór użycia relacyjnej bazy danych nastąpiłby później, a jeszcze później byłby wybór MySQL jako systemu zarządzania relacyjną bazą danych, a następnie wybór silnika pamięci masowej dla każdej tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja MySQL COT() — zwraca cotangens liczby w MySQL

  2. Neo4j - Wybieranie danych za pomocą MATCH za pomocą Cypher

  3. Przegląd nowych funkcji okna analitycznego w MySQL 8.0

  4. Najważniejsze błędy, których należy unikać podczas replikacji MySQL

  5. Używanie Pythona i MySQL w procesie ETL