Сокращение временных таблиц, созданных на диске MYSQL - PullRequest
0 голосов
/ 01 февраля 2012

Наш сайт выполняет несколько довольно крупных запросов о доходах для нашей функции отчетов на стороне пользователя.На некоторых страницах большие учетные записи загружаются от 5 до 20 секунд.Когда эти запросы выполняются, они вычисляют доход с помощью функции MYSQL SUM (), и я считаю, что это создает большое количество временных таблиц, и похоже, что некоторые из них создаются на диске.Я использую MYSQL Tuner, но он больше не имеет переменных настроек для моих настроек.Вот пример вывода:

-------- Performance Metrics -------------------------------------------------
[--] Up for: 5h 14m 29s (1M q [98.277 qps], 143K conn, TX: 2B, RX: 212M)
[--] Reads / Writes: 94% / 6%
[--] Total buffers: 4.1G global + 3.8M per thread (600 max threads)
[!!] Maximum possible memory usage: 6.3G (89% of installed RAM)
[OK] Slow queries: 0% (7K/1M)
[OK] Highest usage of available connections: 2% (14/600)
[OK] Key buffer size / total MyISAM indexes: 640.0M/1.0G
[OK] Key buffer hit rate: 99.9% (237M cached / 135K reads)
[OK] Query cache efficiency: 62.5% (756K cached / 1M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (429 temp sorts / 134K sorts)
[OK] Temporary tables created on disk: 21% (25K on disk / 120K total)
[OK] Thread cache hit rate: 99% (14 created / 143K connections)
[OK] Table cache hit rate: 70% (247 open / 348 opened)
[OK] Open file limit used: 0% (440/760K)
[OK] Table locks acquired immediately: 99% (577K immediate / 578K locks)
[OK] InnoDB data size / buffer pool: 144.0K/8.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    MySQL started within last 24 hours - recommendations may be inaccurate
    Reduce your overall MySQL memory footprint for system stability

Также вот мои настройки MY.CNF:

[mysqld]
safe-show-database
skip-locking
skip-networking
max_connections = 600
key_buffer = 640M
table_cache = 380000
query_cache_size = 1024M
query_cache_limit = 12M
query_cache_type = 1
local-infile=0
long_query_time=1
myisam_sort_buffer_size = 64M
max_heap_table_size = 2560M
tmp_table_size = 2560M
max_allowed_packet = 8M
thread_cache_size = 70
thread_stack = 256K
sort_buffer_size = 512K
read_buffer_size = 512K
read_rnd_buffer_size = 512K
binlog_cache_size=64K
long_query_time=1
log-slow-queries=/var/log/slow-query.log
low_priority_updates=1
concurrent_insert=2
log-queries-not-using-indexes
join_buffer_size=2M
thread_concurrency = 16

Любая помощь будет оценена.Мне нужно, чтобы эти страницы загружались быстрее.Сервер представляет собой четырехъядерный процессор x2 (8 ЦП) с 8 ГБ ОЗУ.Таблицы полностью проиндексированы.Спасибо.

** Решено: я смог решить эту проблему, создав многостолбцовый индекс для столбцов WHERE.Похоже, это никак не связано с медлительностью, создаваемой временными таблицами, созданными на диске.QPS подскочил с 98 до 212.

1 Ответ

0 голосов
/ 05 февраля 2012

Вы также можете попробовать установить тип кэша запросов равным 2 (по требованию), а затем изменить запросы, которые действительно принесут пользу SELECT SQL_CACHE ... бла ... Это исключит накладные расходы на кеширование запросов, которые действительно не принесут пользы от кеширования.

...