Właśnie przeprowadziłem migrację do mysql 5.5.20 i miałem problem z wydajnością z tabelami tymczasowymi. Mam procedurę przechowywaną, która tworzy osiem z nich, podobnie jak to:Innodb i tymczasowe tabele
create temporary table t_opened_today
(
portfolio_id integer,
position_type_id tinyint,
open_value decimal(12,2),
today_net decimal(12,2)
);
Na Mysql 5.5 posiada silnik InnoDB jako domyślny przechowywania. Kiedyś byłem na 5.1, a tak nie było. więc tworzył tabele tymczasowe z Innodb. Zweryfikowałem to, patrząc na/tmp i nie widziałem żadnych .MYI lub .MYD. Zajmowało to 0,50 sekundy (lub, co więcej, czas wykonania podskakiwał w każdym miejscu), co jest niedorzeczne.
więc zmodyfikowałem definicję tabeli tak, aby zawierała "Engine = MyISAM" i zajęło 0,00 sekundy (jak można się było spodziewać), aby nic nie robić, ale utworzyło 8 tabel tymczasowych i zakończyło działanie.
Ktoś ma pojęcie, dlaczego w Innodb potrzeba tak dużo czasu, aby utworzyć tabele tymczasowe? Być może tworzenie tabel tymczasowych za pomocą domyślnego silnika pamięci masowej jest czymś w rodzaju ogromnego nie-nie?
Nic nie zrobiłem dla my.cnf, ponieważ jestem po prostu uruchomiony. Zrobiłem ustawić zwiększyć dzienniki z domyślnego .. ale to wszystko. Tak więc konfiguracja jest gotowa.
dziękuję!
thx, choć nadal wydaje się dziwne, że tworzenie tabel tymczasowych z silnikiem Innodb trwa tak długo! –