В чем разница между mysql кешем запросов и буферным пулом? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь понять архитектуру mysql, и я пришел через два понятия. Первый - это кеш запросов, который, как я понял, хранит запросы, которые были выполнены хотя бы один раз, и если обработчик запросов видит, что запрос кешируется там, он больше не переходит в анализатор и передает результаты непосредственно в кеш.

Но есть еще и пул буферов, часть менеджера буферов Storage Engine, который делает то же самое из моего понимания.

Итак, мой вопрос: если на логическом уровне есть кеш, зачем он нужен и на физическом уровне? Я думаю, что если запрос найден в кеше запросов, он никогда не будет найден в пуле буферов, а если запрос не найден в кеше, он также никогда не будет получен из пула буферов. Я что-то упустил?

1 Ответ

0 голосов
/ 21 апреля 2020

Для кеша запросов вы получаете его на месте. Он основан на необработанном тексте запроса, отображающем точные результаты запроса. У него серьезные проблемы с масштабированием, поэтому MySQL -8.0 удалил его .

пул буферов innodb, это хранилище низкоуровневых данных и индексных страниц базы данных. Это гарантирует, что все недавно использованные данные находятся вне диска и могут быть запрошены, не прибегая к гораздо более медленному (по сравнению с оперативной памятью) хранилищу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...