Подскажите, как решить проблему?
Оптимизировал mysql запросы, конфиги вроде в порядке. В explain все хорошо. Но при "первом" запросе он выполняется медленно.
"Первый" - это запрос, который очень давно не выполнялся, например несколько дней. При этом я копирую его из лога, повторяю с explain и он показывает, что все замечательно. Я понимаю, что запрос кэшируется, но почему он первый раз выполняется долго? Дело точно не в запросе, он элементарный, индексы проставлены.
В чем может быть дело?
Вот результат запуска mysqltuner
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +Aria +BLACKHOLE +CSV +FEDERATED +InnoDB +MRG_MYISAM
[--] Data in MyISAM tables: 2K (Tables: 1)
[--] Data in InnoDB tables: 22G (Tables: 75)
[!!] Total fragmented tables: 75
-------- Performance Metrics -------------------------------------------------
[--] Up for: 30d 21h 5m 23s (76M q [28.840 qps], 174K conn, TX: 430B, RX: 126B)
[--] Reads / Writes: 4% / 96%
[--] Binary logging is disabled
[--] Total buffers: 10.4G global + 2.8M per thread (1000 max threads)
[OK] Maximum reached memory usage: 10.5G (33.72% of installed RAM)
[OK] Maximum possible memory usage: 13.1G (42.15% of installed RAM)
[OK] Slow queries: 0% (288K/76M)
[OK] Highest usage of available connections: 3% (33/1000)
[OK] Aborted connections: 0.00% (7/174482)
[OK] Query cache efficiency: 35.3% (1M cached / 5M selects)
[!!] Query cache prunes per day: 11392
[OK] Sorts requiring temporary tables: 0% (903 temp sorts / 328K sorts)
[OK] Temporary tables created on disk: 0% (4K on disk / 517K total)
[OK] Thread cache hit rate: 99% (33 created / 174K connections)
[OK] Table cache hit rate: 99% (309 open / 310 opened)
[OK] Open file limit used: 2% (24/1K)
[OK] Table locks acquired immediately: 99% (75M immediate / 75M locks)
-------- MyISAM Metrics -----------------------------------------------------
[!!] Key buffer used: 18.2% (24M used / 134M cache)
[OK] Key buffer size / total MyISAM indexes: 128.0M/101.0K
-------- InnoDB Metrics -----------------------------------------------------
[--] InnoDB is enabled.
[!!] InnoDB buffer pool / data size: 10.0G/22.9G
[!!] InnoDB buffer pool instances: 1
[OK] InnoDB Used buffer: 100.00% (655358 used/ 655359 total)
[OK] InnoDB Read buffer efficiency: 99.99% (329075204856 hits/ 329098929295 total)
[!!] InnoDB Write buffer efficiency: 0.00% (0 hits/ 1 total)
[OK] InnoDB log waits: 0.00% (0 waits / 64733582 writes)
-------- AriaDB Metrics -----------------------------------------------------
[--] AriaDB is disabled.
-------- Replication Metrics -------------------------------------------------
[--] No replication slave(s) for this server.
[--] This is a standalone server..
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Increasing the query_cache size over 128M may reduce performance
Variables to adjust:
query_cache_size (> 128M) [see warning above]
innodb_buffer_pool_size (>= 22G) if possible.
innodb_buffer_pool_instances(=10)
Непонятно. Если выставить innodb_buffer_pool_size 22ГБ, то сервер будет всегда загружен на 70%? Это нормально? У меня сейчас 32ГБ памяти, из них постоянно занято 15.