优化概述

数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置。这些软件结构导致在硬件级别执行CPU和I / O操作,您必须将这些操作最小化并使其尽可能高效。在研究数据库性能时,首先要学习软件方面的高级规则和准则,并使用时钟时间来衡量性能。成为专家之后,您将了解有关内部情况的更多信息,并开始测量诸如CPU周期和I / O操作之类的东西。

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

在数据库级别进行优化

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

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

InnoDB是新表的默认存储引擎。实际上,高级 InnoDB性能功能意味着 InnoDB表通常要比简单MyISAM表好,尤其是对于繁忙的数据库。

  • 每个表都使用适当的行格式吗?该选择还取决于表使用的存储引擎。特别是,压缩表使用较少的磁盘空间,因此需要较少的磁盘I / O来读写数据。压缩可用于带有InnoDB表的所有工作负载 以及只读 MyISAM表。
  • 应用程序是否使用适当的 锁定策略?例如,通过在可能的情况下允许共享访问,以便数据库操作可以同时运行,并在适当的时候请求独占访问,以使关键操作获得最高优先级。同样,存储引擎的选择很重要。该InnoDB存储引擎处理大部分锁定问题,而不需要您的参与,从而可以在数据库中实现更好的并发性,并减少 code 的实验和调优。
  • 所以内存区域用于缓存的大小是否正确?也就是说,足够大以容纳频繁访问的数据,但不能太大以至于它们会超载物理 memory 并导致分页。要配置的主要 memory 区域是InnoDB缓冲池,MyISAM key 缓存和 MySQL 查询缓存。

在硬件级别进行优化

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

  • 磁盘搜索。磁盘查找数据需要花费时间。对于现代磁盘,此操作的平均时间通常小于10毫秒,因此理论上我们可以执行约100秒钟的搜索。这段时间随着新磁盘的使用而缓慢改善,并且很难为单个表进行优化。优化寻道时间的方法是将数据分发到多个磁盘上。
  • 磁盘读写。当磁盘位于正确的位置时,我们需要读取或写入数据。使用现代磁盘,一个磁盘至少可以提供10–20MB / s的吞吐量。与查找相比,优化起来更容易,因为您可以从多个磁盘并行读取。
  • CPU周期。当数据位于主存储器中时,我们必须对其进行处理以获得结果。与内存量相比,拥有较大的表是最常见的限制因素。但是对于表,速度通常不是问题。
  • 内存带宽。当CPU需要的数据超出CPU缓存的容量时,主内存带宽将成为瓶颈。对于大多数系统来说,这是一个不常见的瓶颈,但要意识到这一点。

平衡便携性和性能

要在便携式MySQL程序中使用面向性能的SQL扩展,可以在/*! */注释定界符中的语句中包装特定于MySQL的关键字。其他SQL Server忽略注释的关键字。有关编写注释的信息,请参见第9.6节“注释语法”

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值