01 MySQL优化 - 概述

MySQL-refman-8.0

目录

一、在数据库级进行优化

二、在硬件级别上的优化

三、平衡可移植性和性能


数据库性能取决于数据库级别上的几个因素,如表、查询和配置设置。这些软件构造导致硬件级别的CPU和I/O操作,您必须最小化并使其尽可能高效。在研究数据库性能时,首先要学习软件方面的高级规则和指导方针,并使用挂钟时间来度量性能。当你成为专家时,就会了解更多关于内部发生的事情,并开始测量诸如CPU周期和I/O操作等事情。

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

  • 在数据库级进行优化
  • 在硬件级别上的优化
  • 平衡可移植性和性能

一、在数据库级进行优化

使数据库应用程序快速运行的最重要的因素是它的基本设计:

  • 这些表格的结构是否正确?特别是,这些列是否有正确的数据类型,以及每个表是否都有适合于工作类型的列?例如,经常执行更新的应用程序通常有许多很少列的表,而分析大量数据的应用程序通常有很少有许多列的表。
  • 是否有正确的索引来提高查询的效率?
  • 您是否为每个表使用了适当的存储引擎,并利用了您所使用的每个存储引擎的优势和特性?
    特别是,选择像InnoDB这样的事务性存储引擎或像MyISAM这样的非事务性存储引擎对于性能和可伸缩性非常重要。

提示:InnoDB是新表的默认存储引擎。在实践中,高级的InnoDB性能特性意味着InnoDB表的性能通常优于更简单的MyISAM表,特别是对于繁忙的数据库。

  • 每个表是否都使用适当的行格式?此选择还取决于用于表的存储引擎。特别是,压缩表使用更少的磁盘空间,因此需要更少的磁盘I/O来读写数据。压缩可用于使用InnoDB表的各种工作负载,以及只读的MyISAM表。
  • 该应用程序是否使用了适当的锁定策略?例如,通过尽可能允许共享访问,从而使数据库操作可以并发地运行,并在适当时请求独占访问,从而使关键操作获得最高优先级。同样,存储引擎的选择也是很重要的。InnoDB存储引擎处理大多数锁定问题,而不需要您的参与,允许更好地并发数据库,并减少对代码的实验和调优量。
  • 所有用于缓存的内存区域的大小是否正确?也就是说,足够大,可以容纳经常访问的数据,但不会大到超载物理内存并导致分页。要配置的主要内存区域是InnoDB缓冲区池和MyISAM密钥缓存。

二、在硬件级别上的优化

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

  • 磁盘查找。磁盘找到一段数据需要时间。对于现代磁盘,平均时间通常低于10 ms,所以我们在理论上可以做大约100寻求1秒。这一次在使用新磁盘时改进缓慢,并且很难为单个表进行优化。优化查找时间的方法是将数据分发到多个磁盘上。
  • 磁盘读写。当磁盘处于正确的位置时,我们需要读取或写取数据。对于现代磁盘,一个磁盘至少可以提供10-20MB/s的吞吐量。这比查找更容易优化,因为您可以从多个磁盘并行读取。
  • CPU周期。当数据在主存中时,我们必须对其进行处理以得到结果。与内存量相比,拥有较大的表是最常见的限制因素。但对于小表来讲,速度通常不是问题。
  • 内存带宽。当CPU需要的数据超过CPU缓存的容量时,主存带宽就成为瓶颈。这对大多数系统来说都是一个不常见的瓶颈,但也需要注意。

三、平衡可移植性和性能

要在可移植的MySQL程序中使用面向性能的SQL扩展,您可以在MySQL特定的语句中包装/*!*/注释分隔符。其他SQL服务器会忽略已注释的关键字。有关编写comments评论的信息,请参见第9.7节,“comments”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值