На нашем текущем сервере MySQL кэширование запросов включено.
Qchache_hits: 31913
Qchache_inserts: 50959
Qchache_lowmem_prunes: 9320
Qchache_not_chached: 209320
Qchache_queries_in_chace: 986
com_update: 0
com_delete: 0
com_Select: 10
Я не до конца понимаю кэш запросов. Сейчас я читаю о нем и пытаюсь разобраться.
В нашей базе данных хранятся данные о запасах, данные о клиентах, данные о сотрудниках, данные о продажах и т. д. Запрос очень редко выполняется более одного раза. Возможность того, что запрос будет выполнен дважды, означает просмотр определенной информации о продажах дважды. Но в основном все в нашей системе постоянно меняется. Она постоянно обновляется, удаляется, вставляется, и навскидку я не могу представить себе пользователей, запускающих один и тот же запрос дважды в течение недели.
Нужно ли вообще включать кэш запросов? Я предполагаю, что вставки означают, что было добавлено 51 тыс. записей, но только 986 из них хранятся?
Будет ли хорошей идеей обновить кэш и понаблюдать за ним в течение недели, чтобы проверить, сколько запросов в кэше выполняется, например, еженедельно, чтобы увидеть, действительно ли это дает какие-либо преимущества?
Любая помощь/руководство по этому вопросу приветствуется, спасибо
решение1
Да, было добавлено 51 тыс. записей, сейчас там только 986. Таким образом, было около 50 тыс. записей, которые были добавлены в кэш, но больше там нет, 9 тыс. из них потому, что закончилась память в кэше, а остальные потому, что вставки/обновления сделали записи кэша недействительными. Com_select — это параметр, который полезно знать, когда пытаешься решить, получаете ли вы выгоду. Но на самом деле это зависит в основном от того, какие запросы кэшируются.
Если вы запускаете оператор select, который, как вы уверены, не выиграет от кэширования, вы можете добавить SQL_NO_CACHE к оператору select, см.документация здесь.
Я рекомендую прочитатьЭта статья(и этот блог в целом).