随着数据量的增长和不断变化的工作负载的复杂性,现在需要对数据库性能进行调整,以最大程度地利用资源和提高系统性能。但是,性能调优通常说起来容易做起来难。
让我们面对现实吧,由于多种原因,调整很困难。一方面,它需要大量的专业知识才能理解执行计划,并经常更新或重写好的SQL。最重要的是,调整通常非常耗时。总是会有大量的SQL语句要排序,这可能导致不确定哪个特定的语句需要调整。鉴于每个语句都不同,因此调整方法也是如此。
随着数据量的增长和技术的日益复杂,正确调整数据库以提供最终用户体验并降低基础架构成本变得越来越重要。性能调整可以帮助数据库专业人员快速发现瓶颈,通过查看查询执行计划来解决操作不足的问题,并消除任何猜测游戏。
不管复杂程度或技能水平如何,以下MySQL性能调优技巧都将作为解决MySQL性能问题的逐步指南,并帮助减轻性能调优经常带来的痛苦。
收集基准指标
有效的数据收集和分析对于识别和纠正性能问题至关重要。就是说,在性能调整开始之前,重要的是要设定对过程将花费多长时间的期望,以及了解查询在理想环境中应运行多长时间(无论是1秒,10分钟还是1小时)。
此阶段应该包括收集所有基准指标,例如检查的行和发送的行,并记录查询现在运行了多长时间。收集等待和线程状态(例如系统块,发送数据,计算统计信息并写入网络)也至关重要。这些等待状态为集中调整工作的位置提供了很好的线索。
检查执行计划
在努力创建查询性能的路线图时,制定执行计划非常重要。幸运的是,MySQL提供了许多方法来选择执行计划和简单的导航来检查查询。例如,要获取计划的表格视图,请使用EXPLAIN,Explain EXTENDED或Optimizer Trace。
要获得更多的图形视图和对执行计划中昂贵步骤的更多了解,请使用MySQL Workbench。这些计划从上到下列出了步骤,选择类型,表名称,可能的目标键,键长度,引用和要读取的行数。同样,“额外的列”将为您提供有关如何过滤,排序和访问数据的更多信息。
查看表和索引
既然已经收集了度量标准并且已经检查了执行计划,现在是时候查看查询中的表和索引信息了,因为这些详细信息最终将为您的调整策略提供信息。首先,了解表所在的位置及其大小非常重要。另外,查看键和约束以查看表之间的关系。另一个需要关注的领域是列的大小和组成-特别是在“ where”子句中。
您可以用来获取表大小的一个小技巧是在命令行中使用语句“ mysqlshow –status <dbname>”。另外,使用“显示来自<table_name>的索引”语句有助于检查索引及其基数,因为这将有助于制定执行计划。值得注意的是,确定索引是否为多列,以及这些列在索引中的排列顺序。如果引用了左前列,MySQL将仅使用索引。
考虑SQL图表
收集并检查了所有这些信息之后,该是时候开始进行调优了。通常,可能有太多可能的执行路径来解决性能不佳的查询,以至于优化器无法全部检查它们。为了避免这种情况,一种有用的技术是SQL Diagramming,它从数学角度提供问题的视图,以帮助调谐器最终找到比优化器更好的执行路径。进行调整以帮助在完整查询中暴露错误时,也可以实现SQL图表。很多时候,很难理解优化器为何要执行其工作,但是SQL图表有助于为问题创建更清晰的路径,这可以使企业避免代价高昂的错误。
有效监控MySQL调整
监视很容易被遗忘,但这是确保数据库中的问题得以解决并保持解决的不可或缺的步骤。调整后,继续监视所做的改进很重要。为此,请确保进行新的度量标准测量并与初始读数进行比较,以证明调校有所作为。经过持续的监视过程,监视下一个调优机会非常重要,因为总有改进的余地。
通过响应时间分析识别MySQL瓶颈
如果应用程序运行缓慢,并且最终用户在抱怨,那么您需要找到问题的根本原因,而且要快速。传统的MySQL性能监控工具会跟踪资源指标并专注于服务器运行状况。
响应时间分析工具之所以有所不同,是因为它们专注于时间,而不是资源指标–分析基于应用程序和数据库引擎正在等待的内容,而该信息是在MySQL等待中捕获的。通过查看数据库引擎在哪里花费时间,响应时间分析是解决复杂性能问题的最有效方法。它不只是确定查询执行时间或查询缓慢,还可以查明是什么原因导致查询缓慢。
响应时间分析工具(例如DPA)不仅仅显示等待时间或硬件指标-还将等待时间与查询,响应时间,资源,存储性能,执行计划和其他维度相关联,使您能够了解发生的情况内部数据库以及降低性能的原因。
性能调整MySQL的好处
了解驱动数据库性能的因素后,您可以通过合理调整服务器大小并避免过度配置来降低成本。它还可以帮助您了解迁移到闪存或增加服务器容量是否可以提高性能,如果提高了多少,则可以提高性能。
与IT部门一样,数据库性能调整并非没有挑战。但是,调优被证明是值得的,因为它可以给企业带来更多的收益,而不仅仅是在问题上投入更多的硬件。
版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有