MySQL 安装后重要的性能调优和设置
在本文中,我们将学习和讨论一些 MySQL 的重要性能调优设置,这些设置需要在 MySQL 安装后实施,以获得更好、更快的性能。
先决条件
假设我们已经安装了 MySQL,在开始了解 MySQL 的性能调优设置之前,我提供一些提示。
即使经验丰富的 IT 人员也可能会犯一些错误,这会导致许多问题,因此,在我们应用本文中显示的任何建议之前,我们将牢记以下事项,以避免出现问题或故障。
我们将一次只应用一个设置,以便我们能够以有益的方式估算更改。
几乎所有更改都可以在运行时级别使用“SET GLOBAL”进行更改,这非常简单,并允许我们恢复应用的更改以及创建的任何问题。最后,我们可以通过在配置文件中设置来应用永久更改。
如果即使在服务重启(MySQL)后也没有应用配置更改,这可能是由于配置文件不正确?或者设置是否应用于正确的部分?
MySQL 不允许重复设置。如果我们想跟踪更改,建议使用版本控制。
一些 MySQL 性能调优设置
以下是在 [mysqld] 部分中的一些性能调优设置,我们可以从中了解一些性能调优设置。始终建议仅在安装时更改这些设置。
innodb_buffer_pool_size − 这是使用 InnoDB 后立即查看的一个非常重要的设置。InnoDB 是缓冲池,数据在其中被索引和缓存,它具有非常大的可能大小,这将确保并使用内存而不是磁盘空间来进行大多数读写操作,通常,对于 8GB 内存,InnoDB 值的大小为 5-6GB。
innodb_log_file_size − 此设置用于重做日志。重做日志确保即使在崩溃恢复时读写也快速且持久,在早期版本的 MySQL 5.1 中,进行调整非常困难,因为我们需要一个非常大的重做日志才能获得更好的性能,而一个小的重做日志则非常适合快速崩溃恢复 MySQL。在 MySQL 5.5 版本之后,崩溃恢复性能得到了改进。MySQL 重做日志大小的限制在 MySQL 5.5 中限制为 4GB,现在在 MySQL 5.6 中已删除了重做日志大小的限制。
max_connections − 为避免“连接过多”错误,我们必须增加 max_connections,默认连接数为 151,max_connections 高值的主要缺点是,如果连接数过多且活动事务过多,则会使服务器无响应。
Innodb_log_buffer_size − 此设置是尚未提交的事务的缓冲区大小。默认值为 1MB,由于我们有包含文本/blob 字段的大型事务,因此缓冲区大小将很快填满并触发额外的输入和输出负载,我们可以增加 innodb_log_buffer_size。
Innodb_flush_method − 此设置用于控制日志和数据如何刷新到磁盘。当我们拥有具有写回缓存和数据同步的 RAID 控制器硬件以及大多数场景时,最佳值为 O_DIRECT。Sysbench 是一个很好的工具,可以帮助您选择值。
query_cache_size − 此设置众所周知是瓶颈,即使我们拥有中等级别的并发性,我们也会看到。最佳选择是从一开始就禁用它,要禁用它,我们需要发送 query_cache_size=0,如果我们使用的是 MySQL 5.6 版本,则默认情况下它已被禁用。我们还有其他方法可以使用 Memcache 或 Redis 来加速索引。如果我们已经使用启用的查询缓存配置了应用程序并且没有遇到任何问题,那么查询缓存很有用,我们需要非常谨慎地禁用查询缓存。
log_bin − 如果我们想将服务器用作复制主服务器,此设置非常有用。当我们想要能够执行(点在时间恢复)恢复最新备份并应用二进制日志时,它对于单个服务器也很有用。启用后,log_bin 日志将永远保留,我们需要清理旧日志以节省服务器上的磁盘空间,我们可以通过设置 PURGE BINARY LOGS 或通过设置 expire_logs_days 设置来执行此操作,方法是指定在多少天后自动删除 log_bin 日志。
skip_name_resolve − 当客户端连接到 MySQL 服务器时,此设置将被完全使用。服务器将执行主机名解析,当 DNS 缓慢时,连接也将变得非常缓慢,因此建议使用 skip_name_resolve 启动服务器以禁用 DNS 查找,因此,当我们使用 GRANT 语句时,必须使用 IP 地址而不是主机名,因此,在将此设置添加到现有应用程序配置时要小心。
在上面的文章中,我们学习了如何调整 MySQL 以获得更好的性能,并通过更改 log_bins、skip_name_resolve、query_cache_size、innodb_log_buffer_size、max_connections、innodb_log_file_size、innodb_buffer_pool_size 来加快 MySQL 的读写级别。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP