【MySQL】MySQL之 performance_schema 库

MySQL自带四个数据库,分别是:

  1. information_schema
  2. performance_schema
  3. mysql
  4. test

本文介绍 performance_schema 库。

简述

performance_schema 库是MySQL 5.5新增一个存储引擎,主要用于收集数据库服务器性能参数,监控 MySQL server 在一个较低级别的运行过程中的资源消耗、资源等待等情况。

MySQL 的 performance_schema 库中所有表的存储引擎都是PERFORMANCE_SCHEMA,但是用户不能创建存储引擎为 PERFORMANCE_SCHEMA 的表

performance_schema 库功能可总结为以下三点:

  1. 提供进程等待的详细信息,包括锁、互斥变量、文件信息;
  2. 保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;
  3. 对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)

通过以上得到的信息,DBA能够较明细得了解性能降低可能是由于哪些原因。

具体如下(总结自网络):

1、performance_schema提供了一种在数据库运行时实时检查服务器的内部执行情况的方法。performance_schema数据库中的表使用performance_schema存储引擎,关注服务器运行过程中的元数据信息。
2、performance_schema通过监视服务器的事件来实现监视服务器内部运行情况,“事件”就是服务器内部活动中发生的任何事情以及对应的时间消耗,利用这些信息来判断服务器中的相关资源消耗在了哪里?首先,事件可以是函数调用,操作系统的等待,SQL语句执行的阶段(如sql语句执行过程中的解析或排序阶段)或者整个SQL语句与SQL语句集合。事件的采集可以方便的提供服务器中的相关存储引擎对磁盘文件,表I / O,表锁等资源的同步调用信息。
3、performance_schema中的事件与写入二进制日志中的事件(描述数据修改的事件),事件计划调度程序(这是一种存储程序)的事件不同。performance_schema中的事件记录的是服务器执行某些活动对某些资源的消耗,耗时,这些活动执行的次数等情况。
4、performance_schema中的事件只记录在本地服务器的performance_schema中,其下的这些表中数据发生变化时不会被写入binlog中,也不会通过复制机制被复制到其他服务器中。
5、当前活动事件,历史事件和事件摘要相关的表中记录的信息。能提供某个事件的执行次数,使用时长。而且可以使用分析某个特定线程,特定对象(例如Mutex或文件)的相关联的活动。
6、performance_schema存储引擎使用服务器源代码中的“检测点”来实现事件数据的收集。对于performance_schema实现机制本身的代码没有相关的单独线程来检测,这与其他功能(如复制或事件计划程序)不同。
7、收集的事件数据存储在performance_schema数据库的表中。这些表可以使用SELECT语句查询,也可以使用SQL语句更新performance_schema数据库中的表记录(如动态修改performance_schema的setup_ *开头的几个配置表,但要注意:配置表的更改会立即生效,这会影响数据收集)。
8、performance_schema的表中的数据不会持久化存储在磁盘中,重新保存在内存中,一旦服务器重启,这些数据会丢失(包括配置表内部的整个Performance_schema下的所有数据)。
9、MySQL支持的所有平台中事件监控功能都可用,但不同平台中用于统计事件时间开销的计时器类型可能会有所不同。

使用 show variables like 'performance_schema'; 查看MySQL服务中 performance_schema 的状态:

MariaDB [(none)]> show variables like 'performance_schema';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| performance_schema | OFF   |
+--------------------+-------+
1 row in set (0.001 sec)

默认状态下是未启动的,需要在配置文件中手动添加开启:

[mysqld]
performance_schema=ON

简述存储引擎(Storage Engine):

何为MySQL数据库的存储引擎?在此之前先搞清楚引擎。

引擎是发动机的核心部分,发动机又是车辆的核心部分,因此引擎就是驱使汽车运动的核心,不同的引擎有不同的工作方式。

以此类推,MySQL的存储引擎就是MySQL中对数据处理(增删改查、存储机制、索引技巧等)的核心,也就是处理的工作方式,不同的存储引擎有不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。

目前MySQL最常用的存储引擎是 MyISAMInnoDB :

  1. MyISAM: 拥有较高的插入,查询速度,但不支持事务
  2. InnoDB :5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定

包含表

目前 performance_schema 库包含的所有表如下:

MariaDB [mysql]> use performance_schema;
Database changed
MariaDB [performance_schema]> show tables;
+----------------------------------------------------+
| Tables_in_performance_schema                       |
+----------------------------------------------------+
| accounts                                           |
| cond_instances                                     |
| events_stages_current                              |
| events_stages_history                              |
| events_stages_history_long                         |
| events_stages_summary_by_account_by_event_name     |
| events_stages_summary_by_host_by_event_name        |
| events_stages_summary_by_thread_by_event_name      |
| events_stages_summary_by_user_by_event_name        

你可能感兴趣的:(Database,mysql,mariadb,数据库)