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

InnoDB lub MyISAM - Dlaczego nie oba?

W tej samej bazie danych mogą znajdować się zarówno tabele MyISAM, jak i InnoDB. Jeśli jednak masz bardzo duże tabele, zauważysz, że MyISAM powoduje problemy z blokowaniem tabel. Ostatecznie blokuje całą tabelę dla pojedynczej transakcji, co jest bardzo złe, jeśli masz wielu użytkowników korzystających z Twojej witryny. Np. jeśli masz użytkownika szukającego czegoś w Twojej witrynie, a wykonanie zapytania zajmuje kilka minut, żaden inny użytkownik nie może w tym czasie korzystać z Twojej witryny, ponieważ cała tabela jest zablokowana.

Z drugiej strony InnoDB używa blokowania na poziomie wiersza, co oznacza, że ​​ten wiersz jest jedynym wierszem zablokowanym z tabeli podczas transakcji. InnoDB może działać wolniej podczas wyszukiwania, ponieważ nie oferuje wyszukiwania pełnotekstowego, takiego jak MyISAM, ale nie stanowi to dużego problemu w porównaniu z blokowaniem MyISAM na poziomie tabeli. Jeśli używasz InnoDB, jak wiele dużych witryn, możesz użyć wyszukiwarki po stronie serwera, takiej jak Sphinx do wyszukiwania pełnotekstowego. Możesz nawet użyć tabeli MyISAM do wyszukiwania, takiego jak f00 zasugerował. Osobiście poleciłem InnoDB głównie ze względu na funkcję blokowania na poziomie wiersza, ale także dlatego, że możesz zaimplementować wyszukiwanie pełnotekstowe na wiele innych sposobów.

Zasadniczo, jeśli masz aplikację forum dyskusyjną z dużą ilością zaznaczeń, wstawek i aktualizacji, InnoDB jest prawdopodobnie ogólnie właściwym wyborem. Ale jeśli nie budujesz czegoś takiego (lub niczego innego z zarejestrowanymi użytkownikami) i nie pracujesz głównie ze statyczną zawartością (lub więcej odczytów niż zapisów), wtedy możesz użyć MyISAM.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sortować wyniki MySQL z literami na początku, symbolami na końcu?

  2. Zrzuć bazę danych mysql do kopii zapasowej w postaci zwykłego tekstu (CSV) z wiersza poleceń

  3. Jak mogę sprawdzić, czy MySQL i Tomcat są uruchomione?

  4. Jak ustawić prawidłową strefę czasową MySQL JDBC w konfiguracji Spring Boot?

  5. Wyjątek mySQL:nie można połączyć się z żadnym z określonych hostów MySQL. przez C#