首页 > 数据库 >MYSQL 从performance_schema说起,但不止于PS (1)

MYSQL 从performance_schema说起,但不止于PS (1)

时间:2023-06-22 13:05:07浏览次数:51  
标签:PS OFF instrument MYSQL performance wait schema


MYSQL  从performance_schema说起,但不止于PS  (1)_数据库

以下的内容,希望你的环节是在8.011 以上的环境中操作,部分需要在8.018 以上环境操作

MYSQL 如果你在使用MYSQL 8 的版本,那么performance schema 的确的重新认识一下了。在重新认识 mysql的 performance_schema之前我们有一些需要在强化的知识。分别是 threads , instruments , consumers , events, digests, dynamic configuration

为什么要明白这些东西,MYSQL 之前的一些性能的分析和评估都是基于“”原始模式“ ,如show engine innodb status; 获取关键的数据库信息

MYSQL  从performance_schema说起,但不止于PS  (1)_java_02

基于MYSQL 8 很多年了, 这样获取性能的模式要改变了,那么通过performance_schema 来获取整体MYSQL的性能是必须要做的功课了。

下面针对上面的一些东西做了如下的解释

1  threads ,这个线程的概念在performance_schema 中是一个关键的体现,任何工作在MYSQL 中均以线程为中心,在MYSQL后端中都是基于线程进行的工作。无论是连接,还是内部的并行工作中都是以线程为主。

当然基于MYSQL 8 ,并行的方式读取数据已经成为可能,那么这里有一个概念可能会有点混淆,就是一个SQL 可能有多个线程在工作,但这并不能影响线程,单线程对于MYSQL的意义。

在工作中,针对各种访问,thread_id 是跟踪访问的一种方式,所以performace_schema 中必然有thread_id的一个位置。

SELECT THREAD_ID AS TID, SUBSTRING_INDEX(NAME, '/', -2) AS THREAD_NAME, IF(TYPE = 'BACKGROUND', '*', ") AS B, IFNULL(PROCESSLIST_ID, ") AS PID FROM performance_schema.threads;

MYSQL  从performance_schema说起,但不止于PS  (1)_python_03

通过上面的语句,可以对MYSQL 的后台线程,以及后台的功能有一个初步的认知。

MYSQL  从performance_schema说起,但不止于PS  (1)_mysql_04

这里可能会有一个问题,那我以后是用 show processlist 来看执行的前端的工作线程,还是

SELECT thread_id,type,processlist_user,processlist_state,PROCESSLIST_INFO  FROM performance_schema.threads where type = 'FOREGROUND'

通过 performance_schema.threads 来查看。

select * from sys.session;

这样的查询方式会获得更多的信息,以及占用更好的资源。

MYSQL  从performance_schema说起,但不止于PS  (1)_mysql_05

select thd_id,conn_id,user,db,command,state,time,current_statement,statement_latency,lock_latency,rows_examined from sys.session;

MYSQL  从performance_schema说起,但不止于PS  (1)_数据库_06

那么在session连接的ID 与 thread_id 之间的对应关系就需要通过函数ps_thread_id()来解决。

MYSQL  从performance_schema说起,但不止于PS  (1)_数据库_07

select thread_id,name,type,thread_os_id,processlist_state,processlist_info,connection_type,processlist_command from performance_schema.threads where type = 'foreground';

通过上面的语句可以找到 mysql 进程中的线程中的子线程的分配情况

MYSQL  从performance_schema说起,但不止于PS  (1)_linux_08

MYSQL  从performance_schema说起,但不止于PS  (1)_java_09

在大概了解了上面在MYSQL 中的 thread 的查询后,后面针对MYSQL 8 的数据库性能性能查询方式就可以改变了,通过 performance_schema 中的thread 也不失为一个好办法。

Instruments  在performance中可以作为承载信息的类型,其中包含 error , idle , memory , stage , statement, transactio, wait 在这些类型中,可以根据时间来划分类型,memory  ,statement ,  wait  是instruments 中重点的三项, 包含了数据库中内存的使用项目, 语句的使用项目,以及系统运行中的等待项目。

但需要注意的是,如果想针对系统性能有优化的情况下,可以针对这些信息进行更详细的收集而不是都打开,都打开的情况下 会收集 1200 - 1300左右的信息,对系统的影响比较大。

那么怎么针对这些信息进行分类

select name,enabled from setup_instruments where name like 'wait%';

MYSQL  从performance_schema说起,但不止于PS  (1)_python_10

举例我们需要针对 instrument 的 wait 进行详细的配置,

performance-schema-instrument = "wait/synch/%=OFF"
performance-schema-instrument = "wait/io/file/%=COUNTED"
performance-schema-instrument = "wait/lock/table/sql/handler=ON"
performance-schema-instrument = "wait/io/file/mysys/%=OFF"

MYSQL  从performance_schema说起,但不止于PS  (1)_数据库_11

配置后,重启服务器,一些配置中不需要统计的信息就不在被容器记录了。

MYSQL  从performance_schema说起,但不止于PS  (1)_mysql_12

下面是目前对instrument 中信息的收集的配置,将这些配置配置到【MYSQLD】下

performance-schema-instrument = "wait/synch/%=OFF"
performance-schema-instrument = "wait/io/file/%=COUNTED"
performance-schema-instrument = "wait/lock/table/sql/handler=ON"
performance-schema-instrument = "wait/io/file/mysys/%=OFF"
performance-schema-instrument = "error/%=OFF"
performance-schema-instrument = "transaction/%=OFF"
performance-schema-instrument = "stage/%=OFF"
performance-schema-instrument = "memory/myisam/%=OFF"
performance-schema-instrument = "memory/memory/%=OFF"
performance-schema-instrument = "memory/innodb/%=OFF"
performance-schema-instrument = "memory/innodb/ibuf0ibuf=ON"
performance-schema-instrument = "stage/sql/Waiting%=ON"
performance-schema-instrument = "statement/sp/%=OFF"

MYSQL  从performance_schema说起,但不止于PS  (1)_数据库_13

标签:PS,OFF,instrument,MYSQL,performance,wait,schema
From: https://blog.51cto.com/u_14150796/6534675

相关文章

  • MYSQL 从performance_schema说起,但不止于PS ,sys 到 information_schema?(4)
    接着上期sys库的内容,sys库的监控的内容基本上可以满足大部分对于性能分析的需求,SYS库中的信息可以分为2种数据展示的方式,和10+种的信息展示类别。我们下面来说一说。基于ORACLE的设计理念,SYS库中的信息分为一X$为开头的VIEW的信息和以普通表名为开头的信息。两者的信息内容是相......
  • POSTGRESQL VS MYSQL 到底那个数据库 RDS 技术含量高 ?
    以下内容纯属个人看法云数据库的RDS产品,在传统开源的系列里面大致可以选择的是POSTGRESQL和MYSQL两种,诚然在RDS的里面大部分产品最终的选择还是MYSQL,今天不想讨论产品的量,而是想讨论以下产品的难度,RDS产品在POSTGRESQL和MYSQL两种产品的难度问题。先说结果,POSTGRESQL......
  • MYSQL 8 UNDO 表空间 你了解多少
    UNDOLOG的主要目的是完成事务回滚和MVCC多版本控制中的读取过去事务的问题。UNLOG这里有三个层次的问题 1  undolog存在于undo log 的日志段中2 undolog的日志段存在于undolog的回滚段中3  unloglog的回滚段存在于undo 表空间和全局临时表空间中这里提到为......
  • MYSQL performance_schema 不显示信息 和调整 performance_schema 的配置
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS等,最近在某云使用了MYSQLRDS产品,说实话不怎么满意,和他家的其他产品比较我到时更原因使用PG的产品和云原生产品......
  • MYSQL POLARDB 学习系列之 拆解 POLARDB 7 (终结) 失败恢复与可靠性
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS,SQLSERVER等,期待你的加入,学习POLARDB已经有3-4个月的时间了,当然大部分还是在理论方面,实际上POLARDB在实际的操......
  • Mysql 8 VS Mariadb 10.6 他们有多不一样 (声译)
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql ,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。首先要说明一点的,Mariadb不是MySQL,虽然他们有同一个历史的渊源,以及曾经类似的底层的代码,功能等等。但是MYSQL<> Mariadb......
  • MYSQL 删除数据是非多,8.030 还是有死锁
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。我这个人说问题愿意是感性+理性,首先需要感性认知,我们先来看一个下面的问题,在说这个问题之前,我们先将一些问题说明。1数据库版本......
  • Polardb 如何替换MYSQL 之 IMCI 列式(1)建立一个列式引擎
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。讲了那么多期,都是在力量上进行论述,本期开始进入到正式的POALRDB的内部操作中,POLARDB与MYSQL在登录中最大的不同是,你可以通过代......
  • Polardb 如何替换MYSQL 之 IMCI 列式攻略
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。MYSQL是ORACLE后面经常被提到要替换的数据库,MYSQL为什么要被替换,嗯这点是一言难尽,但是可以说明的是,替换MYSQL的数据库类型还......
  • MYSQL 5.7 升级 8.0 后的 由于字符集导致的大问题 ?
    开头还是介绍一下群,如果感兴趣polardb,mongodb,mysql,postgresql,redis等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。MYSQL8.0已经很多年了,但是,但是,但是,还有很多公司和业务项目在MYSQL5.6,5.7上继续奋斗,这还不是一个重要的问题,重要的问题是早期......