欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > MySQL - 优化概述

MySQL - 优化概述

2024/10/24 1:57:38 来源:https://blog.csdn.net/luxideyao/article/details/140638970  浏览:    关键词:MySQL - 优化概述

数据库性能取决于数据库层面的多个因素,例如表、查询和配置设置。这些软件构造会在硬件层面产生 CPU 和 I/O 操作,您必须尽量减少这些操作并使其尽可能高效。在致力于数据库性能优化时,您首先要了解软件方面的高级规则和指南,并使用挂钟时间来衡量性能。随着您成为专家,您会更多地了解内部发生的情况,并开始测量诸如 CPU 周期和 I/O 操作之类的内容。

典型用户旨在从其现有的软件和硬件配置中获得最佳的数据库性能。高级用户则寻找机会改进 MySQL 软件本身,或者开发自己的存储引擎和硬件设备以扩展 MySQL 生态系统。

在数据库层面进行优化
使数据库应用程序快速运行的最重要因素是其基本设计:

  • 表的结构是否合理?特别是,列是否具有正确的数据类型,并且每个表是否具有适用于该工作类型的适当列?例如,执行频繁更新的应用程序通常有许多列较少的表,而分析大量数据的应用程序通常有少数列较多的表。

  • 是否有适当的索引以使查询高效?

  • 您是否为每个表使用了适当的存储引擎,并利用了所使用的每个存储引擎的优势和特性?特别是,选择事务型存储引擎(如 InnoDB)或非事务型存储引擎(如 MyISAM)对于性能和可扩展性可能非常重要。

注意:InnoDB 是新表的默认存储引擎。实际上,先进的 InnoDB 性能特性意味着 InnoDB 表通常优于较简单的 MyISAM 表,特别是对于繁忙的数据库。

  • 每个表是否使用了适当的行格式?此选择也取决于表所使用的存储引擎。特别是,压缩表使用更少的磁盘空间,因此读取和写入数据时所需的磁盘 I/O 更少。InnoDB 表适用于各种工作负载的压缩,而 MyISAM 表仅适用于只读情况。

  • 应用程序是否使用了适当的锁定策略?例如,在可能的情况下允许共享访问,以便数据库操作可以并发运行,并在适当的时候请求排他访问,以使关键操作获得最高优先级。同样,存储引擎的选择很重要。InnoDB 存储引擎处理大多数锁定问题,无需您的参与,从而在数据库中实现更好的并发性,并减少了您的代码的实验和调优量。

  • 用于缓存的所有内存区域的大小是否设置正确?也就是说,足够大以容纳经常访问的数据,但又不至于大到使物理内存过载并导致分页。要配置的主要内存区域是 InnoDB 缓冲池、MyISAM 键缓存和 MySQL 查询缓存。

在硬件层面进行优化

随着数据库变得越来越繁忙,任何数据库应用程序最终都会达到硬件限制。DBA 必须评估是否有可能调整应用程序或重新配置服务器以避免这些瓶颈,或者是否需要更多的硬件资源。系统瓶颈通常源于以下这些来源:

  • 磁盘寻道。磁盘查找一段数据需要时间。对于现代磁盘,平均寻道时间通常低于 10 毫秒,因此理论上我们每秒可以进行约 100 次寻道。随着新磁盘的出现,此时间改进缓慢,并且对于单个表很难优化。优化寻道时间的方法是将数据分布到多个磁盘上。

  • 磁盘读写。当磁盘处于正确位置时,我们需要读取或写入数据。对于现代磁盘,一个磁盘至少提供 10 - 20MB / 秒的吞吐量。这比寻道更容易优化,因为您可以从多个磁盘并行读取。

  • CPU 周期。当数据在主内存中时,我们必须对其进行处理以获得结果。与内存量相比,大表是最常见的限制因素。但对于小表,速度通常不是问题。 - 内存带宽。当 CPU 需要的数据超出 CPU 缓存所能容纳的范围时,主内存带宽会成为瓶颈。对于大多数系统,这是一个不常见的瓶颈,但需要注意。

平衡可移植性和性能

要在可移植的 MySQL 程序中使用面向性能的 SQL 扩展,您可以将 MySQL 特定的关键字包装在 /*! */ 注释分隔符内的语句中。其他 SQL 服务器会忽略这些注释中的关键字。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com