在本文中,我们将学习和讨论一些重要的MySQL性能调整设置,我们需要在MySQL安装后实现更好,更快的性能。
假设我们已经安装了MySQL,在开始了解MySQL的性能调整设置之前,我将提供一些提示。
即使是经验丰富的IT人员也可能会犯一些错误,从而导致许多问题,因此在应用本文中显示的任何建议之前,我们将牢记以下各项,以避免出现问题。
我们一次将仅应用一种设置,以便我们可以以有益的方式估算更改。
几乎所有的更改都可以使用“ SET GLOBAL”在运行时级别进行更改,这是最简单的操作,它使我们能够还原应用的更改并造成任何问题。最后,我们可以通过在配置文件中进行设置来应用永久更改。
如果即使在服务重新启动(MySQL)之后仍未应用配置更改,可能是由于配置文件不正确吗?还是该设置适用于右侧部分?
MySQL不允许重复设置。如果我们要跟踪更改,建议使用版本控制。
这是[mysqld]部分中的一些性能调整设置,我们可以在其中了解一些性能调整设置。始终建议仅在安装时更改这些设置。
innodb_buffer_pool_size-这是使用InnoDB安装后立即显示的非常重要的设置。InnoDB是缓冲池,在该缓冲池中对数据进行索引并缓存,该缓冲池具有非常大的可能大小,可以确保并且对于大多数读写操作而言,不会占用内存,也没有磁盘空间,通常InnoDB的大小为5 -6GB(8GB RAM)。
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,因为我们有大量带有text / blob字段的事务,缓冲区大小将很快填满并触发额外的输入和输出负载,因此我们可以增加innodb_log_buffer_size。
Innodb_flush_method-此设置用于控制如何将日志和数据刷新到磁盘。在大多数情况下,当我们拥有具有回写缓存和数据同步功能的RAID控制器硬件时,最佳值为O_DIRECT。Sysbench是一个很好的工具,它将帮助您选择值。
query_cache_size-此设置是众所周知的瓶颈,即使我们具有并发中等级别也可以看到。最好的选择是从一开始就禁用,如果要默认使用MySQL 5.6版本,则禁用它需要发送query_cache_size = 0。我们还有其他方法可以使用实例的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地址因此,在将此设置添加到现有应用程序配置中时要小心。
在上面的文章中,我们学习了如何通过更改log_bins,skip_name_resolve,query_cache_size,innodb_log_buffer_size,max_connections,innodb_log_file_size,innodb_buffer_pool_size来优化MySQL以获得更好的性能,并加快MySQL的读写级别。