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

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

原创
作者头像
IT技术分享社区
发布2023-12-28 08:43:13
2240
发布2023-12-28 08:43:13
举报
文章被收录于专栏:MYSQLIT技术分享社区MYSQL

一、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服务重启,该数据库所有的表数据库也会被清空。

三、监控配置表

所有配置表列表

代码语言:javascript
复制
show tables like '%setup%

输出列表

代码语言:javascript
复制
setup_actors
setup_consumers
setup_instruments
setup_objects
setup_timers

setup_actors

用于配置user维度的监控,该表属于全局监控配置表,默认情况下监控所有用户线程。

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

输出

代码语言:javascript
复制
HOST	USER	ROLE	ENABLED	HISTORY
%	%	%	YES	YES

字段介绍

HOST:主机IP,%表示全部

USER:数据库用户,%表示全部

ROLE:数据库角色,% 表示全部

ENABLED:是否启用实时监控记录插入

HISTORY:是否启用历史记录监控记录插入

setup_consumers

setup_consumers主要是配置events的消费者类型,即收集的events写入到哪些统计表中。相应的记录开启后,就可以在数据库运行过程重产生相应的事件记录,然后进行数据库性能分析。

说明:修改后,实时生效,默认history表记录10个事件记录,history_long表记录10000个事件记录。

查询

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

输出

代码语言:javascript
复制
NAME	ENABLED
events_stages_current	NO
events_stages_history	NO
events_stages_history_long	NO
events_statements_current	YES
events_statements_history	YES
events_statements_history_long	NO
events_transactions_current	NO
events_transactions_history	NO
events_transactions_history_long	NO
events_waits_current	NO
events_waits_history	NO
events_waits_history_long	NO
global_instrumentation	YES
thread_instrumentation	YES
statements_digest	YES

字段介绍

NAME:配置表名称,数据来源是performance_schema数据库的监控事件表和全局配置表。

ENABLED:是否启用监控记录插入。启用时YES,禁用是NO。

setup_instruments

setup_instruments监控配置的总开关,用来配置哪些event会被监控,主要包含4大类:idle、memory/xxx、stage/xxx、statement/xxx、transaction/xxx、wait/xxx。大部分是修改立即生效。

instruments 组件分类

  • Idle 组件
  • transaction 组件
  • Memory 组件,默认情况下禁用了大多数memory instruments
  • Stage Instrument 组件
  • Statement Instrument 组件
  • Wait Instrument 组件(wait/io:用于检测I/O操作的instruments、wait/io/table/sql/handler:与表I/O操作相关的instruments、wait/lock:锁操作相关的instruments、wait/synch:磁盘同步对象相关的instruments)

查询

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

输出

代码语言:javascript
复制
NAME	ENABLED	TIMED
wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc	NO	NO
wait/synch/mutex/sql/LOCK_des_key_file	NO	NO
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_commit	NO	NO
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_commit_queue	NO	NO
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_done	NO	NO

字段介绍

  • NAME:instruments名称,基于树形结构的命名空间
  • ENABLED:是否启用,有效值为YES或NO。设置为NO时,不会插入任何事件信息
  • TIMED:instruments是否收集时间信息,不收集的话记录标涉及的字段:TIMER_START,TIMER_END和TIMER_WAIT值都为NULL。

setup_objects

setup_objects表用来配置performance_schema是否监视特定对象(EVENT 事件、FUNCTION 函数、TABLE 数据表、PROCEDURE 存储过程)。默认情况下,此表的最大行数为100行。要更改表行数大小,可以在server启动之前修改系统变量

查询

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

输出

代码语言:javascript
复制
OBJECT_TYPE	OBJECT_SCHEMA	OBJECT_NAME	ENABLED	TIMED
EVENT	mysql	%	NO	NO
EVENT	performance_schema	%	NO	NO
EVENT	information_schema	%	NO	NO
EVENT	%	%	YES	YES
FUNCTION	mysql	%	NO	NO
FUNCTION	performance_schema	%	NO	NO
FUNCTION	information_schema	%	NO	NO
FUNCTION	%	%	YES	YES
PROCEDURE	mysql	%	NO	NO
PROCEDURE	performance_schema	%	NO	NO
PROCEDURE	information_schema	%	NO	NO
PROCEDURE	%	%	YES	YES
TABLE	mysql	%	NO	NO
TABLE	performance_schema	%	NO	NO
TABLE	information_schema	%	NO	NO
TABLE	%	%	YES	YES
TRIGGER	mysql	%	NO	NO
TRIGGER	performance_schema	%	NO	NO
TRIGGER	information_schema	%	NO	NO
TRIGGER	%	%	YES	YES

字段介绍

  • OBJECT_TYPE:instruments类型
  • OBJECT_SCHEMA:数据库名
  • OBJECT_NAME:对象名
  • ENABLED:是否开启对某个类型对象的监视功能,有效值为:YES或NO
  • TIMED:是否开启对某个类型对象的时间收集功能,有效值为:YES或NO

setup_timers

setup_timers主要指定使用哪种类型的timer,分为CPU时钟、微秒、纳秒、皮秒(1秒=1万亿皮秒)

查询

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

输出

代码语言:javascript
复制
NAME	TIMER_NAME
idle	MICROSECOND
wait	CYCLE
stage	MICROSECOND
statement	MICROSECOND
transaction	MICROSECOND

字段介绍

  • NAME:计时器事件记录类型值为(idle、wait、stage、statement、transaction)
  • TIMER_NAME:计时器类型名称,简单来说就是时间的单位(CYCLE、NANOSECOND 毫微秒、MICROSECOND 微秒、MILLISECOND 毫秒、TICK 红石刻相当于10分之一秒 )。

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

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

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

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

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

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