中文
注册

原理介绍

优化问题描述

当MySQL进行sysbench select point性能测试时,服务端CPU利用率接近100%,通过perf top工具可以观察到mysqld的dispatch_command函数是明显的热点函数,占比超过20%,使用工具进一步解析dispatch_command,观察到两处原子变量加减操作占比极高,占比各超过40%,存在显著的竞争,是明显的瓶颈点,如图1~图3所示。

图1 mysqld的热点函数
图2 热点函数dispatch_command瓶颈点一
图3 热点函数dispatch_command瓶颈点二

优化原理介绍

瓶颈点代码行,第一处是对一个原子变量进行自增操作,第二处是对同一个原子变量进行自减操作,大量对同一个原子变量的操作产生明显的竞争,是这两行代码成为瓶颈点的主要原因。分析相关代码,发现两处代码属于running线程计数统计和查询功能模块的一部分,该功能模块具有执行SQL语句时加减running线程计数,提供查询running线程计数接口的功能,主要流程如图4所示。

图4 线程计数器主要流程

初始的running线程计数统计和查询流程在执行SQL语句过程中加减running线程计数,查询时直接返回原子变量,业务性能受到了影响。优化通过删除执行SQL语句时加减running线程计数的操作,把统计running线程计数放到查询流程,实现了业务性能的提升,相当于牺牲了查询性能获得了业务性能,优化流程如图5所示。

图5 线程计数器优化流程
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词