Porównaj ceny domen i usług IT, sprzedawców z całego świata

Dlaczego mój serwer MySQL konwertuje HEAP na MyISAM


Czasami mieliśmy problemy z naszym serwerem MySQL. Nadal wysyła wiele takich żądań w tym samym czasie (dodając je w ten sposób do mojej listy procesów). Używamy bazy danych MyISAM i puli połączeń za pośrednictwem Glassfish v3 dla aplikacji Grails.
db_user myhost: 35143 db Żądanie 39
converting HEAP to MyISAM/* mysql-connector-java-5.1.7 ( Revision: ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'init_connect'

Zakładamy, że używamy GORM (ORM Grails) do tworzenia tymczasowych tabel, które wywołują te zapytania.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Może być kilka rzeczy.
Najbardziej oczywiste byłoby twoje
         TMP_TABLE_SIZE
zmienna jest za mała i MySQL musi utworzyć tymczasową tabelę na dysku, a nie w pamięci. Poniższe zapytanie pokaże, czy MySQL tworzy tabele dyskowe tmp.
mysql> SHOW STATUS LIKE '%tmp%';

Innym problemem może być to, że tabela, która musi przejść do tabeli tymczasowej, to
         BINARY
lub
         TEXT
tabelę, której silnik pamięci nie obsługuje i dlatego otrzymasz tabelę MyISAM utworzoną na dysku.
Tabele tymczasowe utworzone na dysku to tabele MyISAM.
         HEAP
to jest stara nazwa
         MEMORY
tabele, więc musisz mieć uruchomiony MySQL przed MySQL 5.x.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się