前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL内置数据库performance_schema详解(六):监视内存使用的表介绍

MySQL内置数据库performance_schema详解(六):监视内存使用的表介绍

原创
作者头像
IT技术分享社区
发布2023-12-27 08:47:46
7520
发布2023-12-27 08:47:46
举报
文章被收录于专栏:MYSQLIT技术分享社区

一、performanceschema 简介

performance_schema 是 MySQL 数据库中的一个内置的系统数据库,最早从MySQL5.5版本产生,这个数据库主要用于收集和存储与数据库性能相关的统计信息和指标。

使用它可以帮助运维人员对数据库性能监控、调优和故障排查提供依据。

二、performanceschema 特点

  • performanceschema数据库是mysql5.5及后续的版本才会有,并且在MySQL5.7当中默认启用,可以在MySQL配置参数里面关闭,可以节约一部分性能的消耗。
  • performanceschema数据库中的表使用performanceschema存储引擎管理,主要是监控数据库运行过程中的性能数据的收集。
  • performanceschema通过监视server的事件(函数调用、操作系统等待、SQL语句执行阶段等)来实现监视server内部运行情况。
  • performanceschema中的事件与写入二进制日志中的事件、事件计划调度程序,事件记录的是server执行某些活动对某些资源的消耗、耗时、这些活动执行的次数等情况。
  • performanceschema中的事件只记录在本地server的performanceschema中,表中数据发生变化时不会被写入binlog中,也不会通过复制机制被复制到其他server中。
  • performanceschema存储引擎使用server源代码中的“检测点”来实现事件数据的收集。

收集的事件数据存储在performanceschema数据库的表中,支持select进行查询。

  • performanceschema表数据非持久化存储,而是保存在内存当中,MySQL服务重启,该数据库所有的表数据库也会被清空。

三、监视内存使用的表的表

监视内存使用的表 show tables like '%memory%';

代码语言:javascript
复制
memory_summary_by_account_by_event_name
memory_summary_by_host_by_event_name
memory_summary_by_thread_by_event_name
memory_summary_by_user_by_event_name
memory_summary_global_by_event_name

四、监视内存使用的表的表介绍

4.1 memory_summary_by_account_by_event_name

memory_summary_by_account_by_event_name 主要记录了每个账户和每个事件名称下的内存使用情况,可以通过查询 memory_summary_by_account_by_event_name 表,找出内存使用最多的账户和事件名称,然后针对这些账户和事件名称进行优化。

查询

代码语言:javascript
复制
SELECT * from memory_summary_by_account_by_event_name ;

输出

代码语言:javascript
复制
USER	HOST	EVENT_NAME	COUNT_ALLOC	COUNT_FREE	SUM_NUMBER_OF_BYTES_ALLOC	SUM_NUMBER_OF_BYTES_FREE	LOW_COUNT_USED	CURRENT_COUNT_USED	HIGH_COUNT_USED	LOW_NUMBER_OF_BYTES_USED	CURRENT_NUMBER_OF_BYTES_USED	HIGH_NUMBER_OF_BYTES_USED
root	localhost	memory/sql/ignored_db	0	0	0	0	0	0	0	0	0	0
root	localhost	memory/sql/PROFILE	0	0	0	0	0	0	0	0	0	0
root	localhost	memory/sql/global_system_variables	0	0	0	0	0	0	0	0	0	0
root	localhost	memory/sql/THD::variables	0	0	0	0	0	0	0	0	0	0
root	localhost	memory/sql/Security_context	0	0	0	0	0	0	0	0	0	0
root	localhost	memory/sql/Shared_memory_name	0	0	0	0	0	0	0	0	0	0

字段介绍

  • USER:执行语句的用户。
  • HOST:执行语句的主机。
  • EVENT_NAME:事件名称。
  • COUNT_ALLOC:分配内存的次数。
  • COUNT_FREE:释放内存的次数。
  • SUM_NUMBER_OF_BYTES_ALLOC:分配的字节数总和。
  • SUM_NUMBER_OF_BYTES_FREE:释放的字节数总和。
  • LOW_COUNT_USED:低水位线下的内存使用次数。
  • CURRENT_COUNT_USED:当前内存使用次数。
  • HIGH_COUNT_USED:高水位线上的内存使用次数。

4.2 memory_summary_by_host_by_event_name

memory_summary_by_host_by_event_name记录了每个主机和每个事件名称下的内存使用情况,可以通过查询 memory_summary_by_host_by_event_name 表,找出内存使用最多的主机和事件名称,然后针对这些主机和事件名称进行优化。

查询

代码语言:javascript
复制
SELECT * from memory_summary_by_host_by_event_name ;

输出

代码语言:javascript
复制
HOST	EVENT_NAME	COUNT_ALLOC	COUNT_FREE	SUM_NUMBER_OF_BYTES_ALLOC	SUM_NUMBER_OF_BYTES_FREE	LOW_COUNT_USED	CURRENT_COUNT_USED	HIGH_COUNT_USED	LOW_NUMBER_OF_BYTES_USED	CURRENT_NUMBER_OF_BYTES_USED	HIGH_NUMBER_OF_BYTES_USED
localhost	memory/sql/Owned_gtids::to_string	0	0	0	0	0	0	0	0	0	0
localhost	memory/sql/Log_event	0	0	0	0	0	0	0	0	0	0
localhost	memory/sql/Incident_log_event::message	0	0	0	0	0	0	0	0	0	0
localhost	memory/sql/Rows_query_log_event::rows_query	0	0	0	0	0	0	0	0	0	0

字段介绍

  • HOST:账户的主机部分。
  • EVENT_NAME:Event name.
  • COUNT_ALLOC:对内存的分配总数。
  • COUNT_FREE:释放分配的内存的总尝试次数。
  • SUM_NUMBER_OF_BYTES_ALLOC:分配的字节总数。
  • SUM_NUMBER_OF_BYTES_FREE:释放的总字节数
  • LOW_COUNT_USED:已分配块的最低数量(CURRENT_COUNT_USED的最低值)。
  • CURRENT_COUNT_USED:目前分配的块还没有被释放(COUNT_ALLOC减去COUNT_FREE)。
  • HIGH_COUNT_USED:已分配块的最高数量(CURRENT_COUNT_USED的最高值)。
  • LOW_NUMBER_OF_BYTES_USED:使用的最低字节数。
  • CURRENT_NUMBER_OF_BYTES_USED:当前使用的字节数(分配总数减去释放总数)。
  • HIGH_NUMBER_OF_BYTES_USED:使用的最高字节数。

4.3 memory_summary_by_thread_by_event_name

memory_summary_by_thread_by_event_name记录了每个线程和每个事件名称下的内存使用情况,可以通过查询 memory_summary_by_thread_by_event_name 表,找出内存使用最多的线程和事件名称,然后针对这些线程和事件名称进行优化。

查询

代码语言:javascript
复制
SELECT * from memory_summary_by_thread_by_event_name ;

输出

代码语言:javascript
复制
THREAD_ID	EVENT_NAME	COUNT_ALLOC	COUNT_FREE	SUM_NUMBER_OF_BYTES_ALLOC	SUM_NUMBER_OF_BYTES_FREE	LOW_COUNT_USED	CURRENT_COUNT_USED	HIGH_COUNT_USED	LOW_NUMBER_OF_BYTES_USED	CURRENT_NUMBER_OF_BYTES_USED	HIGH_NUMBER_OF_BYTES_USED
25	memory/vio/read_buffer	0	0	0	0	0	0	0	0	0	0
25	memory/mysys/win_SECURITY_ATTRIBUTES	0	0	0	0	0	0	0	0	0	0
25	memory/mysys/win_PACL	0	0	0	0	0	0	0	0	0	0
25	memory/mysys/win_IP_ADAPTER_ADDRESSES	0	0	0	0	0	0	0	0	0	0

字段介绍

  • THREAD_ID:线程ID。
  • EVENT_NAME:Event name.
  • COUNT_ALLOC:对内存的分配总数。
  • COUNT_FREE:释放分配的内存的总尝试次数。
  • SUM_NUMBER_OF_BYTES_ALLOC:分配的字节总数。
  • SUM_NUMBER_OF_BYTES_FREE:释放的总字节数
  • LOW_COUNT_USED:已分配块的最低数量(CURRENT_COUNT_USED的最低值)。
  • CURRENT_COUNT_USED:目前分配的块还没有被释放(COUNT_ALLOC减去COUNT_FREE)。
  • HIGH_COUNT_USED:已分配块的最高数量(CURRENT_COUNT_USED的最高值)。
  • LOW_NUMBER_OF_BYTES_USED:使用的最低字节数。
  • CURRENT_NUMBER_OF_BYTES_USED:当前使用的字节数(分配总数减去释放总数)。
  • HIGH_NUMBER_OF_BYTES_USED:使用的最高字节数。

4.4 memory_summary_by_user_by_event_name

memory_summary_by_user_by_event_name记录了每个用户和每个事件名称下的内存使用情况,可以通过查询 memory_summary_by_user_by_event_name表,找出内存使用最多的用户和事件名称,然后针对这些用户和事件名称进行优化。

查询

代码语言:javascript
复制
SELECT * from memory_summary_by_user_by_event_name;

输出

代码语言:javascript
复制
USER	EVENT_NAME	COUNT_ALLOC	COUNT_FREE	SUM_NUMBER_OF_BYTES_ALLOC	SUM_NUMBER_OF_BYTES_FREE	LOW_COUNT_USED	CURRENT_COUNT_USED	HIGH_COUNT_USED	LOW_NUMBER_OF_BYTES_USED	CURRENT_NUMBER_OF_BYTES_USED	HIGH_NUMBER_OF_BYTES_USED
root	memory/sql/QUICK_INDEX_MERGE_SELECT::alloc	0	0	0	0	0	0	0	0	0	0
root	memory/sql/QUICK_ROR_INTERSECT_SELECT::alloc	0	0	0	0	0	0	0	0	0	0
root	memory/sql/QUICK_ROR_UNION_SELECT::alloc	0	0	0	0	0	0	0	0	0	0

字段介绍

  • THREAD_ID:线程ID。
  • EVENT_NAME:Event name.
  • COUNT_ALLOC:对内存的分配总数。
  • COUNT_FREE:释放分配的内存的总尝试次数。
  • SUM_NUMBER_OF_BYTES_ALLOC:分配的字节总数。
  • SUM_NUMBER_OF_BYTES_FREE:释放的总字节数
  • LOW_COUNT_USED:已分配块的最低数量(CURRENT_COUNT_USED的最低值)。
  • CURRENT_COUNT_USED:目前分配的块还没有被释放(COUNT_ALLOC减去COUNT_FREE)。
  • HIGH_COUNT_USED:已分配块的最高数量(CURRENT_COUNT_USED的最高值)。
  • LOW_NUMBER_OF_BYTES_USED:使用的最低字节数。
  • CURRENT_NUMBER_OF_BYTES_USED:当前使用的字节数(分配总数减去释放总数)。
  • HIGH_NUMBER_OF_BYTES_USED:使用的最高字节数。

4.5 memory_summary_global_by_event_name

memory_summary_global_by_event_name记录了每个事件名称下的全局内存使用情况

可以通过查询 memory_summary_global_by_event_name 表,找出内存使用最多的事件名称,然后针对这些事件名称进行优化。

查询

代码语言:javascript
复制
SELECT * from memory_summary_global_by_event_name ;

输出

代码语言:javascript
复制
EVENT_NAME	COUNT_ALLOC	COUNT_FREE	SUM_NUMBER_OF_BYTES_ALLOC	SUM_NUMBER_OF_BYTES_FREE	LOW_COUNT_USED	CURRENT_COUNT_USED	HIGH_COUNT_USED	LOW_NUMBER_OF_BYTES_USED	CURRENT_NUMBER_OF_BYTES_USED	HIGH_NUMBER_OF_BYTES_USED
memory/performance_schema/mutex_instances	1	0	131072	0	0	1	1	0	131072	131072
memory/performance_schema/rwlock_instances	4	0	524288	0	0	4	4	0	524288	524288
memory/performance_schema/cond_instances	1	0	16384	0	0	1	1	0	16384	16384
memory/performance_schema/file_instances	1	0	2883584	0	0	1	1	0	2883584	2883584

字段介绍

  • EVENT_NAME:Event name.
  • COUNT_ALLOC:对内存的分配总数。
  • COUNT_FREE:释放分配的内存的总尝试次数。
  • SUM_NUMBER_OF_BYTES_ALLOC:分配的字节总数。
  • SUM_NUMBER_OF_BYTES_FREE:释放的总字节数
  • LOW_COUNT_USED:已分配块的最低数量(CURRENT_COUNT_USED的最低值)。
  • CURRENT_COUNT_USED:目前分配的块还没有被释放(COUNT_ALLOC减去COUNT_FREE)。
  • HIGH_COUNT_USED:已分配块的最高数量(CURRENT_COUNT_USED的最高值)。
  • LOW_NUMBER_OF_BYTES_USED:使用的最低字节数。
  • CURRENT_NUMBER_OF_BYTES_USED:当前使用的字节数(分配总数减去释放总数)。
  • HIGH_NUMBER_OF_BYTES_USED:使用的最高字节数。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、performanceschema 简介
  • 二、performanceschema 特点
  • 三、监视内存使用的表的表
  • 四、监视内存使用的表的表介绍
    • 4.1 memory_summary_by_account_by_event_name
      • 4.2 memory_summary_by_host_by_event_name
        • 4.3 memory_summary_by_thread_by_event_name
          • 4.4 memory_summary_by_user_by_event_name
            • 4.5 memory_summary_global_by_event_name
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档