学会这几招让你的MySQL配置更快更便捷

[IT168 评论] 当我们被雇来监控 MySQL 性能时,人们希望我们查看 MySQL 配置并提出一些改进建议。许多人事后都非常惊讶,因为我们建议他们只更改几个设置,即使有数百个配置项。本文的目的是为您提供一个非常重要的配置项列表。

开始前写

即使是经验丰富的人也会犯错误并造成很多麻烦。因此mysql配置内存,在盲目应用这些建议之前,请记住以下几点:

一次只能更改一个设置!这是测试更改是否有益的唯一方法。

大多数配置可以在运行时使用 SET 进行更改。如果出现问题,这是一种快速撤消更改的非常方便的方法。但是,要使其永久化,您需要在配置文件中进行更改。

即使在重新启动 MySQL 后也没有工作的更改?确保您使用的是正确的配置文件。确保将配置放在正确的区域(本文中提到的所有配置都属于[])

更改配置后服务器不会启动:确保使用正确的单位。比如ize的单位是MB,没有单位。

配置文件中不要有重复的配置项。如果要跟踪更改,请使用版本控制。

不要使用诸如“现在我的服务器有 2 倍内存,所以我必须将所有数字更改为 2 倍”之类的幼稚计算。

基本配置

您需要经常检查以下 3 个配置项。否则,问题可能很快就会出现。

ize:这是安装后应设置的第一个选项。缓冲池是缓存数据和索引的地方:越大越好,这可以确保您使用内存而不是磁盘进行大多数读取。典型值为5-6GB(8GB RAM)、20-25GB(32GB RAM)、100-120GB(128GB RAM)。

: 这是重做日志的大小。重做日志用于确保写入快速可靠并从崩溃中恢复。一直到 MySQL 5.1,它很难调整,因为一方面您希望它更大以提高性能,另一方面您希望它更小以便在崩溃后更快地恢复。好在从 MySQL 5.5 开始,崩溃恢复的性能有了很大的提升,让你可以同时拥有高写入性能和崩溃恢复性能。在 MySQL 5.5 之前,redo log 的总大小被限制为 4GB(默认情况下可以有 2 个日志文件)。这在 MySQL 5.6 中得到了改进。

在开始时将其设置为 512M(因此有 1GB 的重做日志)将为您提供足够的空间用于写操作。如果您知道您的应用程序需要频繁写入数据并且您正在使用 MySQL 5.6,那么您可以从 4G 开始。

: 如果你经常看到 ‘Too many’ 的错误,那是因为值太低了。这很常见,因为应用程序没有正确关闭数据库连接,并且您需要一个比默认 151 连接更大的值。将值设置为高(例如 1000 或更多)后的主要缺点是服务器在运行 1000 或更多活动事务时变得无响应。在您的应用程序中使用连接池或在 MySQL 中使用进程池可以帮助解决这个问题。

配置

自 MySQL 5.5 版本以来,它是默认的存储引擎,并且比任何其他存储引擎都使用得更多。这就是为什么它需要仔细配置。

e:此设置说明是否需要将所有表数据和索引存储在共享表空间(e = OFF)或每个表数据的单独 .ibd 文件中(e = ON)。每个表一个文件允许您在删除或表时回收磁盘空间。这对于一些高级功能也是必需的,例如数据压缩。但这并没有带来任何性能提升。您不希望每个表有一个文件的主要情况是当有很多表(如 10k+)时。

在 MySQL 5.6 中,这个属性默认为 ON,所以在大多数情况下你不需要做任何事情。对于以前的版本,您必须在加载数据之前将此属性设置为 ON,因为它只影响新创建的表。

:默认值为 1,表示完全支持 ACID 功能。当您主要关注数据安全时,此值最合适,例如在主节点上。但是对于磁盘(读写)速度较慢的系统,它会带来巨大的开销,因为每次刷新到重做日志都需要额外的更改。将其值设置为 2 会降低可靠性(),因为已提交的事务每秒仅刷新一次到重做日志,但对于某些场景是可以接受的,例如主节点的备份节点。. 值 0 更快,但在系统崩溃的情况下可能会丢失一些数据:仅适用于备份节点。

:此配置决定了数据和日志如何写入磁盘。一般来说,如果你有一个硬件 RAID 控制器,它的独立缓存和电池保护具有回写机制,它应该设置为 ;否则,在大多数情况下应设置为(默认)。是帮助您决定此选项的好工具。

ze:此配置确定为尚未执行的事务分配的缓存。它的默认值 (1MB) 通常就足够了,但如果您的事务包含 blob 或大文本字段,此缓冲区将很快填满并触发额外的 I/O 操作。查看状态变量,如果它不为 0,则增加 ze。

其他设置

:query 缓存是一个众所周知的瓶颈,即使在并发性不多的情况下也是如此。最好的选择是从一开始就禁用它,设置 = 0(现在 MySQL 5.6 的默认值)并利用其他方式来加速查询:优化索引、添加副本以分散负载或启用额外的缓存(如或 redis)。如果您为您的应用启用了查询缓存并且没有发现任何问题,查询缓存可能对您有用。如果要停用它,请注意这一点。

:如果您希望数据库服务器充当主节点的备份节点,则需要启用二进制日志记录。如果您这样做,请不要忘记将其设置为唯一值。即使只有一台服务器,如果您想进行时间点数据恢复(启用二进制日志记录),这也很有用:从最近的备份恢复(完整备份),并在二进制日志中应用更改(增量备份)) . 一旦创建了二进制日志,它就会被永久存储。所以如果不想用完磁盘空间,可以使用 PURGE LOGS 来清除旧文件mysql配置内存,或者设置指定多少天后自动清除日志。

记录二进制日志并非没有开销,因此如果您在非主副本上不需要它,建议关闭此选项。

:客户端连接数据库服务器时,服务器做主机名解析,DNS慢时,建立连接也慢。所以建议在启动服务器的时候关闭不带DNS查找的选项。唯一的限制是在 GRANT 语句中只能使用 IP 地址,因此在将这个设置添加到现有系统时必须小心。

总结

当然,还有其他设置可以发挥作用,具体取决于您的工作负载或硬件:在慢速内存和快速磁盘、高并发和写入密集型工作负载中,您需要进行特殊调整。然而,这里的目标是,您可以快速获得强大的 MySQL 配置,而无需花费太多时间调整一些无关紧要的 MySQL 设置或阅读文档以找出哪些设置对您很重要。

更多精彩尽在2014年4月10日至12日在北京皇冠国际酒店举办的第五届中国数据库技术大会上。2月29日前预订机票,享受7.20%的最低票价。

文章来源:https://tech.it168.com/a2014/0210/1591/000001591327_1.shtml

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享