Назад | Перейти на главную страницу

предложение mysqltuner

У меня есть VPS с Zen Cart.

Сервер построен на CentOS 5.7 64Bit, имеет 2 виртуальных процессора и 2 ГБ оперативной памяти. Я пытаюсь использовать сценарий mysqltuner для оптимизации моей базы данных mysql.

Текущий query_cache_size установлен на 120 МБ, что близко к пределу 128 МБ. Я не уверен, что мне следует продолжать увеличивать это число, как было предложено, или нет.

Кроме того, не могли бы вы сказать мне, почему количество сокращений кеша запросов в день (171858) такое высокое? Как я могу это уменьшить?

 -------- Performance Metrics -------------------------------------------------
 [--] Up for: 7h 26m 48s (2M q [83.497 qps], 17K conn, TX: 6B, RX: 377M)
 [--] Reads / Writes: 87% / 13%
 [--] Total buffers: 196.0M global + 3.1M per thread (100 max threads)
 [OK] Maximum possible memory usage: 507.3M (24% of installed RAM)
 [OK] Slow queries: 0% (2/2M)
 [OK] Highest usage of available connections: 8% (8/100)
 [OK] Key buffer size / total MyISAM indexes: 50.0M/27.8M
 [OK] Key buffer hit rate: 100.0% (6M cached / 1K reads)
 [OK] Query cache efficiency: 88.4% (1M cached / 2M selects)
 [!!] Query cache prunes per day: 171858
 [OK] Sorts requiring temporary tables: 0% (0 temp sorts / 13K sorts)
 [!!] Joins performed without indexes: 269
 [OK] Temporary tables created on disk: 12% (1K on disk / 15K total)
 [OK] Thread cache hit rate: 99% (97 created / 17K connections)
 [OK] Table cache hit rate: 94% (434 open / 460 opened)
 [OK] Open file limit used: 16% (685/4K)
 [OK] Table locks acquired immediately: 99% (396K immediate / 396K locks)

 -------- Recommendations -----------------------------------------------------
 General recommendations:
  Run OPTIMIZE TABLE to defragment tables for better performance
  MySQL started within last 24 hours - recommendations may be inaccurate
  Enable the slow query log to troubleshoot bad queries
  Adjust your join queries to always utilize indexes
 Variables to adjust:
  query_cache_size (> 120M)
  join_buffer_size (> 500.0K, or always use indexes with joins)



 ###My current my.cnf settings###
 query_cache_size = 120M
 thread_cache_size = 4
 table_cache = 1000
 key_buffer_size = 50M
 query_cache_limit = 20M
 join_buffer_size = 500K

Query_cache_size не ограничен 128 МБ. Однако слишком высокое значение для него может снизить производительность.

У вас может быть много сокращений кеша запросов из-за фрагментации, не обязательно из-за нехватки памяти.

Вы должны иметь возможность безопасно увеличить размер кэша запросов до 160 МБ или даже 192 МБ, но если вы начнете видеть ухудшение, вы можете уменьшить его.

Если ваши таблицы MySQL все время меняются, кеш запросов не может быть таким же эффективным, как это было бы с (в основном) таблицами, доступными только для чтения. Если данные изменяются, кеш запроса должен аннулировать как минимум эту запись и перечитать ее.