#mysql #sql #query-optimization #database-performance
#mysql #sql #оптимизация запросов #база данных-производительность
Вопрос:
Итак, у меня есть показатели, которые выглядят следующим образом.
И вот мой немой вопрос… Связан ли ввод-вывод rw напрямую с запросом rw?
Используя приведенный ниже пример, означает ли это, что активность запросов на чтение увеличилась?
У меня еще не включены некоторые флаги для определения показателей на уровне транзакций, но в конечном итоге я это сделаю, так что пока это черный ящик.
Комментарии:
1. Означает ли всплеск ввода-вывода на чтение, что это запрос на чтение, а не на запись? Я не уверен, что еще вам нужно для этого вопроса, кажется простым.
2. Каждый запрос на запись также должен быть прочитан, чтобы знать, куда записывать. Но может происходить что угодно. Я сказал вам, что нам нужно, вы не предоставили запрос, так откуда же мы можем знать? Если вы не знаете, какие запросы выполняются, запустите трассировку сервера, чтобы узнать, что происходит
Ответ №1:
Это не обязательно означает, что это был результат запроса на чтение.
Даже если это была запись, InnoDB может изменять страницы данных только после того, как они были скопированы из хранилища в пул буферов InnoDB (т. Е. В ОЗУ). Любой доступ к строкам данных или индексам осуществляется в пуле буферов. Затем измененная страница в ОЗУ в конечном итоге сбрасывается в хранилище.
Запросы на чтение и запись могут не вызывать ввод-вывод на чтение, если они действуют на страницах, которые ранее были загружены в пул буферов. Вы видите ввод-вывод чтения только тогда, когда запросу требуется доступ к странице, которой еще нет в пуле буферов. Затем страница загружается по требованию.
Итак, запрос на запись, такой как:
UPDATE mytable SET somecolumn = 'value' WHERE id = 8675309;
может потребоваться ввод-вывод на чтение, потому что страницы, содержащей эту строку, до этого момента не было в пуле буферов.