
É possível obter a quantidade de bytes lidos por uma consulta no aurora? Se não estiver no nível da consulta, é possível colocá-lo no nível da tabela?
Analisei os insights de desempenho e as tabelas performance_schema, mas todas parecem ter dados apenas para ROWS_SCANNED, não a quantidade de bytes físicos. As métricas de E/S em insights de desempenho também parecem estar no nível do banco de dados, não na tabela.
Responder1
Para todo o InnoDB, consulteSHOW STATUS LIKE 'Innodb_%';
Há uma razão para as métricas serem globais, não no nível do banco de dados ou da tabela – o buffer_pool é um cache. Cada consulta depende e interfere em todas as outras consultas. Pelo menos no nível de E/S.
Eu contesto se "bytes verificados" são relevantes. Parece que "linhas tocadas" é mais útil. Após a E/S, acessar uma linha é a tarefa mais dispendiosa na execução de uma consulta.
Infelizmente, os valores de status do Innodb são estatísticas agregadas, então você precisa executar uma consulta em um momento silencioso para obter estatísticas para uma única instrução.
Faça isso antes e depois da sua consulta e depois tire as diferenças.
SHOW STATUS LIKE 'Innodb%read%';
Cuidado: alguns contam linhas, alguns contam blocos, alguns contam bytes.
Tenha em mente que coisas como "bytes lidos do disco" virão em múltiplos de 16 KB devido ao bloqueio. Não acho que nada observe "bytes digitalizados".
Descreva melhor o que você gostaria de fazer com os dados, caso pudesse obtê-los. Talvez eu possa lhe dar uma resposta mais focada.
Acho que isso SHOW SESSION STATUS LIKE 'Handler%';
é muito bom para decifrar quanto trabalho acontece em uma única consulta. E é por sessão (e também global).
Métricas de "gravação" geralmente se referem a tabelas temporárias criadas para dar suporte a arquivos SELECTs
.