2012-04-24 12 views
7

Obecnie używam InnoDB dla wszystkich moich baz danych w MySQL, jednak zauważyłem, że moja baza danych information_schema używa MyISAM dla tabel, które nie są MEMORY.Silnik bazy danych MySQL: MyISAM dla information_schema ale InnoDB dla innych baz danych

Jestem w trakcie badania problemu InnoDB/MyISAM. Chociaż nie sądzę, że to jest przyczyną tego, martwię się tym mieszaniem. Baza danych została oryginalnie skonfigurowana za pomocą MyISAM. Później plik my.cnf został zaktualizowany, aby zresetować silnik do InnoDB. Używam MySQL 5.5.10.

Jakie są możliwe problemy, które mogą wystąpić przy ustawianiu bazy danych database_schema na MyISAM, ale wszystkie inne bazy danych są ustawione na MySQL?


Dla tych, którzy szukają pomocy: Jeśli natknąłem się na to pytanie w poszukiwaniu odpowiedzi lub chcesz wiedzieć więcej, aby zobaczyć swój domyślny silnik bazy danych:

show variables; 

Do zobacz silnik przypisany do tabel w bazie danych:

show table status; 

Moje ustawienia my.cnf:

[client] 
default-character-set=utf8 

[mysqld] 
log=/usr/local/var/mysql/mysqld.log 
character-set-server = utf8 
collation-server = utf8_general_ci 
lower_case_table_names=2 
default_storage_engine=InnoDB 

# Performance hacks: 
innodb_flush_method=nosync 
innodb_flush_log_at_trx_commit=0 

Odpowiedz

4

Używany silnik do przechowywania danych jest naliczany według tabeli. Domyślny mechanizm magazynowania jest używany podczas tworzenia nowej tabeli i nie określa się mechanizmu składowania dla nowej tabeli.

Tabele systemowe byłyby MyISAM bez względu na to, do czego ustawiono domyślny silnik pamięci masowej.

Od MySQL documentation:

Ważne

Nie konwertować tabele systemowe MySQL bazy mysql (takich jak użytkownik lub hosta) do typu InnoDB. To jest nieobsługiwana operacja. Tabele systemowe muszą być zawsze typu MyISAM.

Jeśli nie odpowiadasz bezpośrednio na tabele table_informacji, nie ma obaw o mieszanie typów.

Powiązane problemy