Możesz mieć tabele MyISAM i InnoDB w tej samej bazie danych. To, co znajdziesz, gdy masz bardzo duże stoły, spowoduje, że MyISAM spowoduje problemy z blokadą stołu. Ostatecznie to robi, blokuje całą tabelę dla pojedynczej transakcji, co jest bardzo złe, jeśli wielu użytkowników korzysta z Twojej witryny. np. Jeśli użytkownik szuka czegoś w witrynie, a wykonanie zapytania zajmuje kilka minut, żaden inny użytkownik nie może korzystać z witryny w tym okresie, ponieważ cała tabela jest zablokowana.
InnoDB stosuje z kolei blokowanie na poziomie wiersza, co oznacza, że wiersz jest jedynym wierszem zablokowanym w tabeli podczas transakcji. InnoDB może być wolniejszy podczas wyszukiwania, ponieważ nie oferuje pełnego przeszukiwania tekstu, jak MyISAM, ale nie jest to duży problem, gdy porównasz go z blokowaniem MyISAM na poziomie tabeli. Jeśli używasz InnoDB, podobnie jak wiele dużych witryn, możesz użyć wyszukiwarki po stronie serwera, takiej jak Sphinx do wyszukiwania pełnotekstowego. Lub możesz nawet użyć tabeli MyISAM, aby wykonać wyszukiwanie takie jak sugerowane f00
. Osobiście polecam InnoDB głównie ze względu na funkcję blokowania na poziomie wiersza, ale także dlatego, że możesz implementować wyszukiwanie pełnotekstowe na wiele innych sposobów.
Zasadniczo, jeśli masz aplikację na tablicę ogłoszeń z wieloma wyborami, wstawkami i aktualizacjami, prawdopodobnie najlepszym wyborem będzie InnoDB. Ale jeśli nie budujesz czegoś takiego (lub jakiejkolwiek innej rzeczy z zarejestrowanymi użytkownikami) i pracujesz głównie ze statyczną zawartością (lub więcej czytasz niż pisze), to możesz użyć MyISAM.
co jest indeks klastrowany klucz podstawowy? http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html Dlaczego indeksy klucza podstawowego w klastrach są lepsze niż normalne indeksy btree? http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a/4421601#4421601 –