使用说明
建议关注官网MySQL 8.0.20版本的CVE漏洞,按照要求及时进行漏洞修复。
版本说明
MySQL无锁优化特性随Kunpeng Computing DC Solution 20.0.3版本发布。
应用场景
在MySQL OLTP场景下,存在较多写类型操作时(update/insert/delete),MySQL中的全局latch可能成为影响吞吐量的主因。在已经应用MySQL细粒度锁优化特性后,如果通过Performance Schema观测到trx_sys_mutex热点(此时CPU利用率通常不高),可通过本特性缓解这处竞争,提升系统吞吐量。
MySQL无锁优化特性在补丁应用后重新编译MySQL即生效,无需额外配置系统变量。
编译安装方法
MySQL无锁优化特性以Patch补丁文件形式提供,该补丁基于MySQL 8.0.20版本开发,并在Gitee社区开源,使用该特性前,需要先将Patch应用到MySQL源码中,再编译和安装MySQL。
- 下载MySQL源码,上传源码至服务器“/home”目录下后,解压源码包并进入MySQL源码的根目录。
MySQL 8.0.20源码下载地址:https://github.com/mysql/mysql-server/archive/mysql-8.0.20.tar.gz
cd /home tar -zxvf mysql-boost-8.0.20.tar.gz cd mysql-8.0.20
- 下载细粒度锁优化特性补丁文件和无锁优化特性补丁文件,并上传至MySQL源码的根目录。
- 在源码根目录,使用git初始化命令来建立git管理信息。
git init git add -A git commit -m "Initial commit"
- 可选:如果没有配置Yum源,请配置Yum源,详细信息请参见配置Yum源。
- 可选:如果没有安装dos2unix,请执行如下命令安装dos2unix。
yum install dos2unix
- 先合入MySQL细粒度锁优化特性Patch补丁,再合入MySQL无锁优化特性Patch补丁。
本特性的前置特性为MySQL细粒度锁优化特性,所以需要先合入MySQL细粒度锁优化特性,再合入本特性。
执行以下命令使细粒度锁优化特性补丁和无锁优化特性补丁生效。1 2 3 4 5 6
dos2unix 0001-SHARDED-LOCK-SYS.patch git apply --check 0001-SHARDED-LOCK-SYS.patch git apply --whitespace=nowarn 0001-SHARDED-LOCK-SYS.patch dos2unix 0002-LOCK-FREE-TRX-SYS.patch git apply --check 0002-LOCK-FREE-TRX-SYS.patch git apply --whitespace=nowarn 0002-LOCK-FREE-TRX-SYS.patch
如果没有回显报错信息,则补丁应用成功。
- 根据正常的编译安装MySQL源码的操作步骤进行MySQL的编译安装。详细信息请参见《MySQL 移植指南》。
- 可选:通过TPC-C测试可以得到使用MySQL无锁优化特性前后的性能提升效果,详细测试步骤请参见《BenchMarkSQL 测试指导》。
MySQL无锁优化特性可以使Sysbench写场景性能提升20%。
图1 MySQL无锁优化特性Sysbench写场景优化前后性能对比