鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

使用说明

建议关注官网MySQL 8.0.20版本的CVE漏洞,按照要求及时进行漏洞修复。

应用场景

MySQL执行SQL语句过程中线程计数器会实时更新线程计数,在高并发场景,线程计数器更新频繁出现显著的竞争。在sysbench select point性能测试时,服务端CPU利用率接近100%,现象极为明显。通过perf top工具可以观察到mysqld的dispatch_command函数是明显的热点函数,使用工具进一步解析dispatch_command,观察到两处原子线程计数占比极高,存在显著的竞争,是明显的瓶颈点。通过本特性对线程计数器进行优化,可以减少竞争,缓解热点。

编译安装方法

MySQL线程计数器优化特性以Patch补丁文件形式提供,该补丁基于MySQL 8.0.20版本开发,并在Gitee社区开源,使用该特性前,需要先将Patch应用到MySQL源码中,再编译和安装MySQL。具体操作步骤如下:

  1. 下载MySQL 8.0.20源码,上传源码至服务器“/home”目录下后,解压源码包并进入MySQL源码的根目录。
    cd /home
    tar -zxvf mysql-boost-8.0.20.tar.gz
    cd mysql-8.0.20
  2. 在源码根目录,使用git初始化命令来建立git管理信息。
    git init
    git add -A
    git commit -m "Initial commit"
    • 一般情况下,系统自带git,若需要安装git,请先参见《MySQL 移植指南》中配置Yum源相关内容,再执行如下命令安装git。
      1
      yum install git
      
    • 若未配置git的提交用户信息,git commit前需要先配置用户邮件及用户名称信息。
      1
      2
      git config user.email "123@example.com"
      git config user.name "123"
      
  3. 下载线程计数器补丁文件,并上传至MySQL源码的根目录。
    1
    wget https://gitee.com/kunpengcompute/mysql-server/releases/download/KunpengBoostKit21.0.0-OLTP/0001-THREAD_COUNTER_OPT.patch --no-check-certificate
    
  4. 查看当前本地git状态。
    1
    git status
    
    如下所示新增了一个0001-THREAD_COUNTER_OPT.patch文件。
    1
    2
    3
    4
    5
    6
    7
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            0001-THREAD_COUNTER_OPT.patch
    
    nothing added to commit but untracked files present (use "git add" to track)
    
  5. 检查补丁文件与MySQL源码是否冲突。
    1
    2
    dos2unix 0001-THREAD_COUNTER_OPT.patch
    git apply --check 0001-THREAD_COUNTER_OPT.patch
    

    若无报错即表示匹配可应用补丁。

  6. 应用线程计数器补丁文件。
    1
    git apply --whitespace=nowarn 0001-THREAD_COUNTER_OPT.patch
    

    如果输出warning信息,可忽略;无error信息即表示补丁应用成功。

  7. 根据正常的编译安装MySQL源码的操作步骤进行MySQL的编译安装。详细信息请参见《MySQL 移植指南》。