是否可以获取 aurora 中查询读取的字节数?如果不在查询级别,是否可以在表级别获取?
我研究过 performance insights 和 performance_schema 表,但它们似乎都只包含 ROWS_SCANNED 的数据,而不是物理字节数。performance insights 中的 I/O 指标似乎也处于数据库级别,而不是表级别。
答案1
有关 InnoDB 的全部信息,请参阅SHOW STATUS LIKE 'Innodb_%';
指标之所以是全局的,而不是数据库或表级别的,是有原因的——buffer_pool 是一个缓存。每个查询都依赖于其他查询,并且相互干扰。至少在 I/O 级别是如此。
我对“扫描的字节数”是否相关持怀疑态度。似乎“接触的行数”更有用。在 I/O 之后,访问行是执行查询时成本最高的任务。
不幸的是,Innodb 状态值是聚合统计数据,因此您需要在安静的时间运行一个查询才能获得单个语句的统计数据。
在查询之前和之后执行此操作,然后取差异。
SHOW STATUS LIKE 'Innodb%read%';
注意:有些计算行数,有些计算块数,有些计算字节数。
请记住,由于阻塞,诸如“从磁盘读取的字节数”之类的数据将以 16KB 的倍数出现。我认为没有任何东西监视“扫描的字节数”。
如果您能获得这些数据,请进一步描述您想要用这些数据做什么。我可能会给您一个更有针对性的答案。
我发现这SHOW SESSION STATUS LIKE 'Handler%';
对于解释单个查询需要做多少工作非常有用。并且它是针对每个会话的(以及全局的)。
“写入”指标通常是指为支持复杂而构建的临时表SELECTs
。