mysql5 功能_MySQL5.5 performance_schema数据库功能介绍

MySQL 5.5新增一个存储引擎:命名PERFORMANCE_SCHEMA  ,主要用于收集数据库服务器性能参数。MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表

performance_schema提供以下功能:

1、提供进程等待的详细信息,包括锁、互斥变量、文件信息;

2、保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;

3、对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)

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

performance_schema功能开启和部分表功能

Performance的开启很简单,在my.cnf中[mysqld]加入performanc_schema,检查性能数据库是否启动的命令:SHOW VARIABLES LIKE ‘performance_schema’;若是返回的 值为ON,则说明性能数据库正常开启状态。

每个表的变化:

1.Threads

SHOW PROCESSLIST;

1.bmp

SELECT * FROM performance_schema.threads;

2.bmp

看到theads表的作用了吗?监控服务器所有连接, thread_id这个在接下来非常有用,

2.Performance_timers

设置一些监控信息

root@localhost : performance_schema 05:23:28> SELECT * FROM performance_timers;

+————-+—————–+——————+—————-+

| TIMER_NAME | TIMER_FREQUENCY | TIMER_RESOLUTION | TIMER_OVERHEAD |

+————-+—————–+——————+—————-+

| CYCLE | 2603393034 | 1 | 66 |

| NANOSECOND | 1000000000 | 1000 | 682 |

| MICROSECOND | 1000000 | 1 | 227 |

| MILLISECOND | 1039 | 1 | 247 |

| TICK | 100 | 1 | 634 |

+————-+—————–+——————+—————-+

Performance_timers指定mysql服务可用的监控周期,CYCLE表示按每秒检测2603393034次。下面会设置监控周期

root@localhost : performance_schema 05:20:33> select * from setup_timers;

+——+————+

| NAME | TIMER_NAME |

+——+————+

| wait | CYCLE |

+——+————+

UPDATE setup_timers SET TIMER_NAME= ‘NANOSECOND’ WHERE NAME=’wait’;

3.Setup_consumers\ Setup_instruments

接下来设置哪些事件能够被收集

root@localhost : performance_schema 05:23:45> SELECT * FROM setup_consumers;

+———————————————-+———+

| NAME | ENABLED |

+———————————————-+———+

| events_waits_current | YES |

| events_waits_history | YES |

| events_waits_history_long | YES |

| events_waits_summary_by_thread_by_event_name | YES |

| events_waits_summary_by_event_name | YES |

| events_waits_summary_by_instance | YES |

| file_summary_by_event_name | YES |

| file_summary_by_instance | YES |

+———————————————-+———+

UPDATE setup_consumers SET ENABLED = ‘YES’ WHERE NAME=’ events_waits_history’;(表示能够被收集)

UPDATE setup_instruments SET ENABLED=’YES’ WHERE NAME=’ wait/synch/mutex/sql/PAGE::locK’;

实验收集等待信息的实例

到目前为止没有测试过是否能够检测到异常进程,见下来看看采集的数据

root@localhost : performance_schema 06:54:34> show processlist;

+——+——+———–+——————–+———+——+

| Id | User | Host | db | Command | Time |

+——+——+———–+——————–+———+——+

| 2731 | root | localhost | test | Query | 67 |

| 2732 | root | localhost | test | Sleep | 139 |

| 2733 | root | localhost | performance_schema | Query | 0 |

+——+——+———–+——————–+———+——+

root@localhost : performance_schema 06:54:16> SELECT * FROM threads where PROCESSLIST_ID IN(2731,2732,2733);

+———–+—————-+—————————+

| THREAD_ID | PROCESSLIST_ID | NAME |

+———–+—————-+—————————+

| 2742 | 2732 | thread/sql/one_connection |

| 2741 | 2731 | thread/sql/one_connection |

| 2743 | 2733 | thread/sql/one_connection |

+———–+—————-+—————————+

Session1  PID=2732; THREAD_ID: 2742

Session2  PID 2731;THREAD_ID: 2741

Session3 查看监控信息

1

LOCK TABLE task WRITE

2

START TRANSACTIONupdate task set type=3 where uid=1238 and tdid=117004 and date=20110522;wait…………………….

3

root@localhost : performance_schema 07:00:31> SELECT * FROM events_waits_current WHERE TIMER_END IS NULL\G;*************************** 1. row ***************************THREAD_ID: 2741EVENT_ID: 63EVENT_NAME: wait/synch/cond/sql/MDL_context::COND_wait_statusSOURCE: mdl.cc:983TIMER_START: 99074136559454208TIMER_END: NULLTIMER_WAIT: NULLSPINS: NULL

OBJECT_SCHEMA: NULL

OBJECT_NAME: NULL

OBJECT_TYPE: NULL

OBJECT_INSTANCE_BEGIN: 453433776

NESTING_EVENT_ID: NULL

OPERATION: timed_wait

NUMBER_OF_BYTES: NULL

FLAGS: 0

1 row in set (0.00 sec)

4

root@localhost : performance_schema 07:01:51> SELECT * FROM mutex_instances WHERE LOCKED_BY_THREAD_ID IS NOT NULL;+————————————————-+———————–+———————+| NAME                                                                | OBJECT_INSTANCE_BEGIN | LOCKED_BY_THREAD_ID |+————————————————-+———————–+———————+| wait/synch/mutex/sql/MDL_wait::LOCK_wait_status |              453433720 |                2741 |+————————————————-+———————–+———————+

5

Unlock tables

在3步的Session3中看到events_waits_current,看到Seesion2正在等待某个一个前提条件的释放,这个表中包含有正在等待哪个前提条件、OPERATION什么类型、SOURCE源代码位置、OBJECT_INSTANCE_BEGIN内存开始的位置

在4步的session3中mutex_instances表,存储着session2正在等待的是一个MDL的互斥变量的释放,OBJECT_INSTANCE_BEGIN内存开始位置453433720

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值