MySQL 5.7 安装完成后,立即要调整的性能选项

几年前,Stephane Combaudon 写了一篇博文 《安装 MySQL 后,需要调整的 10 个性能配置项》(Ten MySQL performance tuning settings after installation) 内容覆盖了 MySQL 5.1, MySQL 5.5 和 MySQL 5.6 这几个老版本的 MySQL。在本文中,我将研究如何对 MySQL 5.7 进行调优(关注 InnoDB 存储引擎)。

一个好消息是,MySQL 5.7 提供了更加合适的默认值。Morgan Tocker 制作了关于一份 MySQL 5.7 的特性完整列表,这是一个很好的参考资料。例如,下面的几个变量都是默认设置的:

在 MySQL 5.7 中,实际上只有 4 个重要的选项需要去调整。然而,还有其他的 InnoDB 或者全局的 MySQL 选项可能需要根据特定的负载和硬件来做出调整。

首先,在 my.cnf 中的[mysqld] 节下面添加如下配置。配置完成之后,需要重启 MySQL 服务:

[mysqld]
# other variables here
innodb_buffer_pool_size = 1G # (adjust value here, 50%-70% of total RAM)
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1 # may change to 2 or 0
innodb_flush_method = O_DIRECT

说明:

选项
innodb_buffer_pool_size 设置为 RAM 大小的 50%-70%,不需要大于数据库的大小
innodb_flush_log_at_trx_commit 1(默认值),0/2 (性能更好,但稳定性更差)
innodb_log_file_size 128M – 2G (不需要大于 buffer pool)
innodb_flush_method O_DIRECT (避免双缓冲技术)

下一步

对于新安装的实例而言,那些设置都是很好的起点。还有许多其他的选项,在某些场景下,可以提高 MySQL 的性能。通常,我会部署一套 MySQL 监控/图形工具(例如,Percona 监控语句管理平台,俗称:PMMM),然后根据 MySQL 监控面板提供的信息来执行进一步的调优。

根据监控图表,我们能进一步做什么样的优化?

InnoDB 缓冲池大小的信息,看下面这个图:

从上面可以看出,可用的 RAM 和空闲的页的数量小于缓冲池的总大小,我们可以把 InnoDB 缓冲池的大小增加到 10G 从而获得更好的性能。

InnoDB redo 日志的大小的信息,看下面这个图:

可以看到,InnoDB 通常每小时写 2.26GB 的数据,这已经超出了 redo 日志的大小(2G)。现在我们可以增大 innodb_log_file_size 选项,然后重启 MySQL。另外,使用 "show engine innodb status" 命令来计算一个合适的 InnoDB redo 日志的大小值

其他选项

有很多其他的 InnoDB 选项可以进一步调整:

  • innodb_autoinc_lock_mode

设置 innodb_autoinc_lock_mode = 2 (interleaved mode) 可以去掉表级 AUTO-INC 锁的必要性(还可以提高在使用多行插入语句来插入数据到拥有自增主键的表的时候的性能)。这要求 binlog_format=ROW 或者 MIXED(在 MySQL 5.7 中,默认值是 ROW)。

  • innodb_io_capacity 和 innodb_io_capacity_max

这是一个更加高级的调优,只有当你在频繁写操作的时候才有意义(它不适用于读操作,例如 SELECTs)。若你真的需要对它进行调整,最好的方法是要了解系统可以支持多大的 IOPS。譬如,假设服务器有一块 SSD 硬盘,我们可以设置 innodb_io_capacity_max=6000innodb_io_capacity=3000(最大值的一半)。运行 sysbench 或者任何其他基准工具来对磁盘吞吐量来进行基准测试是一个好方法。

然而,我们需要去担心这个选项吗?看下面这张缓冲池的"脏页"

在这种情况下,脏页的总量很大,而且看起来 InnoDB 刷新脏页的速度跟不上脏页的速度。如果我们有一个高速的磁盘子系统(例如:SSD),可以增加 innodb_io_capacity 和 innodb_io_capacity_max 来得到更好的性能。

总结(太长,请不要看版本)

新的 MySQL 5.7 配置项的默认值对于一般的负载更加友好。与此同时,我们仍然需要配置 InnoDB 的选项来发挥出大内存的优势。

安装完毕之后,遵循以下步骤来操作:

    1. 如上所述,在 my.cnf 中配置 InnoDB 选项,并重启 MySQL 服务
    2. 部署一套监控系统(例如:Percona 监控语句管理平台)
    3. 通过监控图形来判断是否对 MySQL 进一步调优
时间: 2024-10-13 11:40:47

MySQL 5.7 安装完成后,立即要调整的性能选项的相关文章

Eclipse安装STS后工具栏不能调整

修改:workspace\.metadata\.plugins\org.eclipse.e4.workbench\workbench.xmi文件 找到 <children xsi:type="menu:ToolBar" xmi:id="_IYs2GiKKEeSbZNtfBEKWCw" elementId="org.eclipse.ui.workbench.help"> <tags>Draggable</tags>

MySQL 5.7 安装完成后,首次登陆的几个问题

Server:CentOS 7.0 MySQL : 5.7.20 MySQL Community Server (GPL) 1.首次登陆后修改密码: 根据安装时的选择不同,有mysqld_safe用mysqld_safe,没有就用mysqld.正常安装都应该在/usr/sbin目录下 a)启动mysql mysqld_safe --user=mysql --skip-grant-tables --skip-networking & b)无密码进入msyql mysql -u root mysql

mysql/mariadb 数据库安装完成后的设置

指定innodb_file_per_table=1参数,该参数主要是防止ibdata文件过大,所有的数据库都存放到该文件中.指定该参数后不会出现上述问题. 指定默认的字符集:在[mysqld]区段添加参数:character_set_server=utf8即可. 指定默认的排序:collation-server=utf8_unicode_ci 使用tab键补全 -- 补全是表名,列名,数据库名.不是数据库中的命令,变量 在mysql命令行中,使用\#来暂时启用tab键补全. 在mysql的配置文

win10下安装Ubuntu后,启动时没有win10选项解决方法

通过在ubuntu里修改启动引导,解决. 1.进入Ubuntu系统,Ctrl+alt+t进入终端,输入以下命令即可 sudo gedit /etc/default/grub 2.在打开的gedit编辑器中找到这一行字: GRUB_DEFAULT=0 3.然后修改为: sudo update-grub 在终端中可以看到: found windows10 ... 再重启电脑就可以进入win10啦 原文地址:https://www.cnblogs.com/hsl-shiliang/p/9173105.

MySQL for Mac 安装和基本操作

一.安装mysql 1.mysql下载地址http://dev.mysql.com/downloads/mysql/我的机器是mac 10.8的;所以使用mysql-5.6.10-osx10.7-x86_64.dmg安装包: 2.安装软件包位于硬盘映象(.dmg)文件中,必须首先双击搜索起中的图标来安装该文件.应当安装图像并显示其内容. 注释:在继续安装前,一定要使用MySQL管理器应用程序(在Mac OS X服务器上)或通过命令行的mysqladmin shutdown关闭所有运行MySQL服

转-MySQL for Mac 安装和基本操作

一.安装mysql 1.mysql下载地址http://dev.mysql.com/downloads/mysql/我的机器是mac 10.8的;所以使用mysql-5.6.10-osx10.7-x86_64.dmg安装包: 2.安装软件包位于硬盘映象(.dmg)文件中,必须首先双击搜索起中的图标来安装该文件.应当安装图像并显示其内容. 注释:在继续安装前,一定要使用MySQL管理器应用程序(在Mac OS X服务器上)或通过命令行的mysqladmin shutdown关闭所有运行MySQL服

Centos7.2安装后的简单调整

Centos7安装完成后做简单调整 1.安装必备的组件 yum install wget perl perl-devel net-tools kernel-devel (telnet可选性,我决定在其中一台安装就可以,我平时主要用于调试交换机) 2.安装开发工具  yum groupinstall 'Development tools' -y 3.安装epel和remi第三方软件源 yum install epel-release.noarch rpm -Uvh http://rpms.fami

利用MySQL官方源安装5.6版程序,以及降级安装后无法启动的问题

前两天安装MySQL,用的是官方的yum源安装,安装好后发现 5.7版本内存占用还蛮高的,默认5.6版安装完成后启动占用内存大概400M+ ,5.7版本默认安装完成后内存占用竟然占到800M+  简直翻了一倍. 可能5.7上有很多新功能和新特性,但是现阶段我觉得我还远用不到,那么就降级安装5.6版本的吧. 由于系统上已经有了官方 yum源的配置,那么就通过yum来安装5.6版本的MySQL吧. 这是官方mysql源的配置信息,可见已经有了5.5/5.6/5.7版本的源. 因为默认使用yum安装m

mysql安装完成后登入错误

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解决: 1.先停止mysql服务,命令如下: #/etc/init.d/mysql stop 2.重新启动服务,命令如下: #  /etc/init.d/mysql stop#  mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 3.登入mysql并修