Czy jakikolwiek błąd konfiguracji może doprowadzić do utworzenia zbyt wielu tabel tymczasowych przez tuner mysql..mysql
Current max_heap_table_size = 200 M
Current tmp_table_size = 200 M
Of 17158 temp tables, 30% were created on disk
table_open_cache = 125 tables
table_definition_cache = 256 tables
You have a total of 97 tables
You have 125 open tables.
Current table_cache hit rate is 3%
Wcześniej tabela temp była „z 23725 tabel temp 38% zostało utworzonych na dysku”, ale zmieniłem max_heap i tmp_table na 200m z 16m i obniżyłem do 30%.
Konfiguracja:
engine myisam
group_concat_max_len = 32768
key_buffer_size = 3.7 GB,
thread_stack = 256k,
table_cache = 125
query_cache_limit = 1M
query_cache_size = 16M
join_buffer_size = 2.00 M
max_connections = 800
Inny system z domyślną konfiguracją pokazuje „z 23725 tabel temp., 1% utworzono na dysku” z tą samą bazą danych.
Próbowałem zmienić domyślną na komputerze z tym problemem i nadal pokazuje „Z 580 tabel temp, 16% utworzono na dysku”.
Używam Ubuntu 11.4 64 bit z ram 48 gb. Czy ktoś może zaproponować rozwiązanie?
Czy zmiana silnika db z „myisam” na „pamięć” w tabelach za pomocą „grupuj według” naprawi to? Jak wyjaśniono tutaj: http://www.mysqlperformanceblog.com/2007/08/16/how-much-overhead-is-caused-by-on-disk-temporary-tables/
tmp_table_size
lubmax_heap_table_size
„używanie tymczasowe” i „używanie plików” to nie koniec świata!
WYBIERZ ... GRUPUJ WEDŁUG a, b ORDER BY c, d - Wymaga 1 lub 2 „tabel tymczasowych”.
Są po prostu czasy, w których zapytania będą korzystać z tabel tymczasowych. Tabele temperatur mogą spowolnić zapytanie o niewielki czynnik. Ale jeśli zapytanie jest nadal „wystarczająco szybkie”, nie przejmuj się nim.
Jeśli zapytanie jest zbyt wolne (z tabelami TMP lub bez), omówmy to. Podaj SHOW CREATE TABLE, SHOW TABLE STATUS i EXPLAIN.
źródło
(a, b, c, d)
, nie będzie tabeli tymczasowej.