MySQL Server 性能优化

愿天堂没有BUG

共 2485字,需浏览 5分钟

 · 2022-11-21

前言:

本章主要通过针对 MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议。主要涉及 MySQL 的安装以及相关参数设置的优化,但不包括 mysqld 之外的比如存储引擎相关的参数优化,存储引擎的相关参数设置建议将主要在下一章“常用存储引擎的优化”中进行说明。

MySQL安装优化

选择合适的发行版本

1. 二进制发行版(包括 RPM 等包装好的特定二进制版本)

由于 MySQL 开源的特性,不仅仅 MySQL AB 提供了多个平台上面的多种二进制发行版本可以供大家选择,还有不少第三方公司(或者个人)也给我们提供了不少选择。使用 MySQL AB 提供的二进制发行版本我们可以得到哪些好处?

a) 通过非常简单的安装方式快速完成 MySQL 的部署;

b)安装版本是经过比较完善的功能和性能测试的编译版本;

c) 所使用的编译参数更具通用性的,且比较稳定;

d) 如果购买了 MySQL 的服务,将能最大程度的得到 MySQL 的技术支持;

第三方提供的 MySQL 发行版本大多是在 MySQL AB 官方提供的源代码方面做了或多或少的针对性改动,然后再编译而成。这些改动有些是在某些功能上面的改进,也有些是在某写操作的性能方面的改进。还有些由各OS 厂商所提供的发行版本,则可能是在有些代码方面针对自己的OS 做了一些相应的底层调用的调整,以使 MySQL 与自己的 OS 能够更完美的结合。当然,也有一些第三方发行版本并没有动过MySQL 一行代码,仅仅只是在编译参数方面做了一些相关的调整,而让 MySQL 在某些特定场景下表现更优秀。

这样一说,听起来好像第三方发行的 MySQL 二进制版本要比 MySQL AB 官方提供的二进制发行版有更大的吸引力,那么我们是否就应该选用第三方提供的二进制发行版呢?先别着急,我们还需要进一步分析一下第三方发行版本可能存在哪些问题。

首先,由于第三方发行版本对 MySQL 所做的改动,很多都是为了应对发行者自己所处的特定场景而做出来的。所以,第三方发行版本并不一定适合其他所有使用者所处的环境。

其次,由于第三方发行版本的发行者并一定都是一个足够让人信任的公司(或者个人),在其生成自己的发行版本之前,是否有做过足够全面的功能和性能测试我们不得而知,在我们使用的时候是否会出现 MySQL AB 官方的发行版本中并不存在的 bug?

最后,如果我们购买了 MySQL 的相关服务,而又使用了第三方的发行版本,当我们的系统出现问题的时候,恐怕 MySQL 的支持工程师的支持工作会大打折扣,甚至可能会拒绝提供支持。

如果大家可以完全抛开以上这些可能存在隐患的顾虑,完全可以尝试使用非 MySQL AB 官方提供的二进制版本,而选用可能具有更多特性或者更高性能的发行版本了。

之前我也对网络上各种第三方二进制分发版本做过一些测试和比较,也发现了一些比较不错的版本,如 Percona 在整合了一些比较优秀的 Patch 之后的发行版本整体质量都还不错,使用者也比较多。

当然,Percona 不仅仅分发二进制版本,同时也分发整合了一些优秀 Patch 的源码包。对于希望使Percona 提供的一些 Patch 的朋友,同时又希望能够自行编译以进一步优化和定制 MySQL 的朋友,也可以载 Percona 提供的源码包。

对于二进制分发版本的安装,对于安装本身来说,我们基本上没有太多可以优化的地方,唯一可以做的就是当我们决定了选择第三方分发版本之后,可以根据自身环境和应用特点来选择适合我们环境的优化发行版本来安装。2. 源码安装与二进制发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对 MySQL所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:

a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;

b) 根据不同的软件平台环境调整相关的编译参数;

c) 针对我们特定应用场景选择需要什么组件不需要什么组件;

d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;

e)同一台主机上面可以安装多个 MySQL;

f) 等等其他一些可以根据特定应用场景所作的各种调整。

在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:

a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;

b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;

c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;

通过源码安装的最大特点就是可以让我们自行调整编译参数,最大程度的定制安装结果。下面我将自己在通过源码编译安装中的一些优化心得做一个简单的介绍,希望能够对大家有所帮助。

在通过源码安装的时候,最关键的一步就是配置编译参数,也就是执行通过 configure 命令所设定的各种编译选项。我们可以在 MySQL 源码所在的文件夹下面通过执行执行“./configure —help”得到可以设置的所有编译参数选项,如下:

上面的输出内容中很多都已经省略了,大家完全可以通过自行测试得到更为丰富的内容输出。下面针对几个比较重要的编译参数做一个简单的介绍:

们在安装的时候可以定制自己的系统,让系统更适合我们自己应用环境的相关规范,做到环境统一,并按照实际需求生成相应的二进制代码。而后面的一些参数主要是用来优化编译结果的。我想大家应该都能理解一般来说,一个系统功能越复杂,其性能一般都会越差。所以,在我们安装编译 MySQL 的时候应该尽量只选用我们需要的组件,仅安装我们需要的存储引擎,仅编译我们需要的字符集,让我们的系统能够尽可能的简单,因为这样的 MySQL 也会给我们带来尽可能高的性能。

此外,对于一些特定的软件环境上,可能会有多种线程库的选择的,如果你对各个线程库较为了解,完全可以通过编译参数设定让MySQL使用最合适的线程库,让MySQL 在我们特定的环境中发挥他最优化的一面。


浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报