查询内存仪器数据。在这个例子中,在Performance Schema

memory_summary_global_by_event_name

表中查询内存仪器数据,该表将数据汇总为

EVENT_NAME. 这

EVENT_NAME是仪器的名称。

以下查询返回

InnoDB缓冲池的内存数据。有关列说明,请参阅

第 27.12.20.10 节,“内存摘要表”。

mysql> SELECT * FROM performance_schema.memory_summary_global_by_event_name

WHERE EVENT_NAME LIKE 'memory/innodb/buf_buf_pool'\G

EVENT_NAME: memory/innodb/buf_buf_pool

COUNT_ALLOC: 1

COUNT_FREE: 0

SUM_NUMBER_OF_BYTES_ALLOC: 137428992

SUM_NUMBER_OF_BYTES_FREE: 0

LOW_COUNT_USED: 0

CURRENT_COUNT_USED: 1

HIGH_COUNT_USED: 1

LOW_NUMBER_OF_BYTES_USED: 0

CURRENT_NUMBER_OF_BYTES_USED: 137428992

HIGH_NUMBER_OF_BYTES_USED: 137428992

可以使用

sys架构

memory_global_by_current_bytes

表查询相同的底层数据,该表显示了服务器中全局的当前内存使用情况,按分配类型细分。

mysql> SELECT * FROM sys.memory_global_by_current_bytes

WHERE event_name LIKE 'memory/innodb/buf_buf_pool'\G

*************************** 1. row ***************************

event_name: memory/innodb/buf_buf_pool

current_count: 1

current_alloc: 131.06 MiB

current_avg_alloc: 131.06 MiB

high_count: 1

high_alloc: 131.06 MiB

high_avg_alloc: 131.06 MiB

此模式查询按代码区域

sys聚合当前分配的内存 ( ):current_alloc

mysql> SELECT SUBSTRING_INDEX(event_name,'/',2) AS

code_area, FORMAT_BYTES(SUM(current_alloc))

AS current_alloc

FROM sys.x$memory_global_by_current_bytes

GROUP BY SUBSTRING_INDEX(event_name,'/',2)

ORDER BY SUM(current_alloc) DESC;

+---------------------------+---------------+

| code_area | current_alloc |

+---------------------------+---------------+

| memory/innodb | 843.24 MiB |

| memory/performance_schema | 81.29 MiB |

| memory/mysys | 8.20 MiB |

| memory/sql | 2.47 MiB |

| memory/memory | 174.01 KiB |

| memory/myisam | 46.53 KiB |

| memory/blackhole | 512 bytes |

| memory/federated | 512 bytes |

| memory/csv | 512 bytes |

| memory/vio | 496 bytes |

+---------------------------+---------------+

笔记

在 MySQL 8.0.16 之前,

sys.format_bytes()用于

FORMAT_BYTES().

有关

sys模式的更多信息,请参阅

第 28 章,MySQL 系统模式。