Od razu rzuca mi się w oczy MyISAM .
ASPEKT #1:Samo JOIN
Ilekroć występują sprzężenia obejmujące MyISAM i InnoDB, tabele InnoDB będą miały blokadę na poziomie tabeli zamiast blokowania na poziomie wiersza z powodu zaangażowania MyISAM w zapytanie i MVCC nie można zastosować do danych MyISAM. MVCC w niektórych przypadkach nie można nawet zastosować do InnoDB.
ASPEKT 2:Zaangażowanie MyISAM
Z innej perspektywy, jeśli jakiekolwiek tabele MyISAM są aktualizowane przez INSERT, UPDATE lub DELETE, tabele MyISAM zaangażowane w zapytanie JOIN zostaną zablokowane dla innych połączeń DB, a zapytanie JOIN będzie musiało czekać na odczytanie tabel MyISAM. Niestety, jeśli w zapytaniu JOIN występuje mieszanka InnoDB i MyISAM, tabele InnoDB będą musiały doświadczyć przerywanej blokady, tak jak jej partnerzy MyISAM w zapytaniu JOIN, ponieważ wstrzymywane są przed zapisem.
ASPEKT #3:Optymalizator zapytań
MySQL opiera się na kardynalności indeksu w celu określenia zoptymalizowanego planu EXPLAIN. Kardynalność indeksu jest stabilna w tabelach MyISAM, dopóki w tabeli nie wydarzy się wiele operacji INSERT, UPDATE i DELETE, dzięki czemu można okresowo uruchamiać OPTIMIZE TABLE
z tabelami MyISAM. Kardynalność indeksu InnoDB NIGDY NIE JEST STABILNA !!! Jeśli uruchomisz SHOW INDEXES FROM *innodbtable*;
, zobaczysz zmianę kardynalności indeksu za każdym razem, gdy uruchomisz to polecenie. To dlatego, że InnoDB zagłębi się w indeks, aby oszacować kardynalność. Nawet jeśli uruchomisz OPTIMIZE TABLE
w stosunku do tabeli InnoDB, spowoduje to tylko defragmentację tabeli. OPTIMIZE TABLE
uruchomi ANALYZE TABLE
wewnętrznie do generowania statystyk indeksów w tabeli. To działa dla MyISAM. InnoDB ignoruje to.
Moja rada dla ciebie to zrobić wszystko i przekonwertować wszystko do InnoDB i odpowiednio zoptymalizować swoje ustawienia.
AKTUALIZACJA 18.12.2012 15:56 EDT
Wierz lub nie, ale jest wciąż otwarty bilet na dołączanie do InnoDB/MyISAM podczas WYBIERZ DO AKTUALIZACJI . Jeśli go przeczytasz, podsumowuje rozdzielczość w następujący sposób:NIE RÓB TEGO !!! .