作家
登录

MySQL极具参考价值的性能调优技巧

作者: 来源: 2017-12-08 15:07:07 阅读 我要评论

开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散


MySQL极具参考价值的机能调优技能

万圣节已经以前良久了,该是把留意力集中期近将到来的假日季候的时刻了。起首是感恩节,接着就是黑色礼拜五和收集礼拜一,最终在圣诞节/节礼周(大年夜12月26日的节礼日开端,到12月31日的大年夜年节停止为期六天或更长时光。这个词是由零售业袈溱2000年代中期阁下创造的,试图延长他们的节礼日发卖)达到购物高潮。对于企业主来说,一年的┞封个时刻标记住人们等待已久的岁尾获利了却。对于一些DBA来说,它会带来恐怖,不安,甚至是不眠之夜,他们要尽力使体系从新上线。

值得光荣是,情况并非如斯。经由过程对MySQL机能变量做一些主动调剂,可以使数据库办事器免受购物旺季带来的需求增长的冲击。

技能#1:肯定MySQL的最大年夜连接数

对于MySQL的最大年夜连接数,一次最好是发送5个请求到Web办事器。对Web办事器的5个请求中的一部分将用于CSS样式表,图像和脚本等资本。因为诸如浏览器缓雌捣杯因,要获得精确的MySQL到Web办事器的请求比率可能很艰苦; 要想获得一个确切的数字,就须要分析Web办事器的日记文件。例如,可以手动拜访Apache的“access_log”日记文件,也可以经由过程 Analog 或 Webalizer 等实用法度榜样拜访日记文件。

一旦有了对特定应用情况的精确估计,请将该比率乘以Web办事器的最大年夜连接数。例如,如不雅Web办事器设备为最多为256个客户端供给办事,MySQL请求与Web请求的比率为1/8,则最好将最大年夜数据库连接数设置为32。还要推敲留有安然余量,把这个数乘以2,获得最终的数量。只有在基本举措措施支撑的情况下,才能测验测验将数据库连接数的最大年夜数量与Web办事器的客户端限制相匹配。在大年夜多半情况下,最好保持接近32。

在Monyog中查看MySQL连接

在MySQL数据库中,MySQL的最大年夜并发连接数是存储在全局变量max_connections中的。Monyog申报变量“ max_connections”作为当前连接监控组中的“最大年夜许可”指标。它还将该数字除以打开的连接数,以生成连接应用百分比:

还有一个连接汗青记录监控,可以赞助计算最佳的最大年夜并发连接数。它包含测验测验,拒绝和成功连接的数量。此外,许可达到的最大年夜指标的百分比显示为一个进度条,可以让你快速评估办事器在以前达到的最大年夜并发连接数:

技能#2:为临时表分派足够的内存

在某些情况下,办事器在处理语句时会创建内部临时表。临时表用于内部操作如GROUP BY和distinct,还有一些ORDER BY萌芽以及UNION和FROM子句(派生表)中的子萌芽。这些都是在内存中创建的内存表。内存中临时表的最大年夜大年夜小由 tmp_table_size和 max_heap_table_size中较小的值肯定。如不雅临时表的大年夜小跨越这个阈值,则将其转换为磁盘上的InnoDB或MyISAM表。此外,如不雅萌芽涉及BLOB或TEXT列,而这些列不克不及存储在内存表中,临时表老是直接指向磁盘。

一般来说,32M到64M是建议值,大年夜这两个变量开端并根据须要进行调优。

临时表的监测是很多预定义的Monyog监测之一。它供给了一些临时表应用的指标,包含:

Monyog线程缓存监测

许可的最大年夜值 :显示 tmp_table_size办事器变量的值,它定义了在内存中创建的临时表的最大年夜大年夜小。与 max_heap_table_size一路,这个值定义了可以在内存中创建的临时表的最大年夜大年夜小。如不雅内存临时表大年夜于此大年夜小,则将其存储在磁盘上。 内存表的最大年夜大年夜小 :显示 max_heap_table_size办事器变量的值,该值定义了显式创建的MEMORY存储引擎表的最大年夜大年夜小。 创建的临时表总数 :显示 created_tmp_tables办事器变量的值,它定义了在内存中创建的临时表的数量。 在磁盘上创建的临时表 :显示 created_tmp_disk_tables办事器变量的值,该变量定义了在磁盘上创建的临时表的数量。如不雅这个值很高,则应当推敲增长 tmp_table_size和 max_heap_table_size的值,以便增长创建内存临时表的数量,大年夜而削减在磁盘上创建临时表的数量。 磁盘:总比率 :基于 created_tmp_disk_tables除以 created_tmp_tables的计算值。因为 tmp_table_size或 max_heap_table_size不足而在磁盘上创建的临时表的百分比。Monyog将这个数字显示为一个进度条和百分比,以便快速肯定有若干磁盘用于临时表,而不是内存。 趋势图可用于创建的总表,磁盘上创建的表和磁盘的总比值。这些让我们看到了它们跟着时光的演变:

在Monyog中的临时表监测

技能#3:增长线程缓存大年夜小

连接治理器线程处理办事器监听的收集接口上的客户端连接请求。连接治理器线程将每个客户端连接与专用于它的线程接洽关系,该线程负粜ウ理该连接的身份验证和所有请求处理。是以,线程和当前连接的客户端之间是一对一的比例。确保线程缓存足够大年夜以容纳所有传入请求是异常重要的。

MySQL供给了很多与连接线程相干的办事器变量:

线程缓存大年夜小由 thread_cache_size体系变量决定。默认值为0(无缓存),这将导致为每个新连接设置一个线程,并在连接终止时须要处理该线程。如不雅欲望办事器每秒吸法术百个连接请求,那么竽暌功该将 thread_cache_size设置的足够高,以便大年夜多半新连接可以应用缓存线程。可以在办事器启动或运行时设置 max_connections的值。

这种转换的价值很大年夜,所以推敲增长 max_heap_table_size和 tmp_table_size变量的大年夜小来赞助削减在磁盘上创建临时表的数量。请记住,这将须要大年夜量内存,因为内存中临时表的大年夜小是基于“最坏情况”的。例如,内存表老是应用固定长度的列,所以字符列应用VARCHAR(255)。这可以使内存中的临时表比想象的要大年夜得多—事实上,这比萌芽表的总大年夜小要大年夜很多倍!当增长 max_heap_table_size和 tmp_table_sizevariables的大年夜小时,必定要监督办事器的内存应用情况,因为内存中的临时表可能会增长达到办事器内存容量的风险。


  推荐阅读

  Hbase写操作产生的木桶效应

有时刻很多利旧设备不舍得丢弃,大年夜数据集群又是一个便宜的高机能的分布式寂?娼台,只如果能开机的物理机都可以并入集群,然则,随之带来的问题就是磁盘IO会严重影响集群的机能,不过如今经由过程技巧手段已经可>>>详细阅读


本文标题:MySQL极具参考价值的性能调优技巧

地址:http://www.17bianji.com/lsqh/39606.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)