Skip to content

performance_timers

xiaoboluo768 edited this page Jun 8, 2020 · 2 revisions
  • performance_timers表中记录了server中有哪些可用的事件计时器
  • 每个计时器的精度和数量相关的特征值会有所不同,可以通过如下查询语句查看performance_timers表中记录的计时器和相关的特征信息:
mysql> SELECT * FROM performance_timers;
+-------------+-----------------+------------------+----------------+
| TIMER_NAME | TIMER_FREQUENCY | TIMER_RESOLUTION | TIMER_OVERHEAD |
+-------------+-----------------+------------------+----------------+
| CYCLE | 2389029850 | 1 | 72 |
| NANOSECOND | 1000000000 | 1 | 112 |
| MICROSECOND | 1000000 | 1 | 136 |
| MILLISECOND | 1036 | 1 | 168 |
| TICK | 105 | 1 | 2416 |
+-------------+-----------------+------------------+----------------+
  • performance_timers表中的列代表的含义如下:

    • TIMER_NAME:表示可用计时器名称,CYCLE是指基于CPU(处理器)周期计数器的定时器。在setup_timers表中可以使用performance_timers表中列值不为null的计时器(如果performance_timers表中有某字段值为NULL,则表示该定时器可能不支持当前server所在平台)
    • TIMER_FREQUENCY:表示每秒钟对应的计时器单位的数量(即,相对于每秒时间换算为对应的计时器单位之后的数值,例如:每秒=1000毫秒=1000000微秒=1000000000纳秒)。对于CYCLE计时器的换算值,通常与CPU的频率相关。对于performance_timers表中查看到的CYCLE计时器的TIMER_FREQUENCY列值 ,是根据2.4GHz处理器的系统上获得的预设值(在2.4GHz处理器的系统上,CYCLE可能接近2400000000)。NANOSECOND 、MICROSECOND 、MILLISECOND 计时器是基于固定的1秒换算而来。对于TICK计时器,TIMER_FREQUENCY列值可能会因平台而异(例如,某些平台使用100个tick/秒,某些平台使用1000个tick/秒)
    • TIMER_RESOLUTION:计时器精度值,表示在每个计时器被调用时额外增加的值(即使用该计时器时,计时器被调用一次,需要额外增加的值)。如果计时器的分辨率为10,则其计时器的时间值在计时器每次被调用时,相当于TIMER_FREQUENCY值+10
    • TIMER_OVERHEAD:表示在使用定时器获取事件时开销的最小周期值(performance_schema在初始化期间调用计时器20次,选择一个最小值作为此字段值),每个事件的时间开销值是计时器显示值的两倍,因为在事件的开始和结束时都调用计时器。注意:计时器代码仅用于支持计时事件,对于非计时类事件(如调用次数的统计事件),这种计时器统计开销方法不适用
    • 对于performance_timers表,不允许使用TRUNCATE TABLE语句
  • 表结构定义

CREATE TABLE `performance_timers` (
  `TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL,
  `TIMER_FREQUENCY` bigint(20) DEFAULT NULL,
  `TIMER_RESOLUTION` bigint(20) DEFAULT NULL,
  `TIMER_OVERHEAD` bigint(20) DEFAULT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8

上一篇: host_cache表 | 下一篇: threads表

Clone this wiki locally