数据库的性能取决于几个因素在数据库级,如表,查询和配置设置。这些软件构造导致CPU和I / O操作的硬件水平,你必须尽量减少,并尽可能高效。当你的工作对数据库性能,您可以通过学习高层次的规则和准则在软件方面入手,并使用挂钟时间测量性能。当你成为一个专家,你更多地了解内部发生的事情,并开始测量事例如CPU周期和I / O操作。
典型的用户的目标以获得最佳的数据库性能出他们现有的软件和硬件配置的。高级用户寻找机会提高MySQL软件本身,或者开发自己的存储引擎和硬件设备,以扩大MySQL的生态系统。
Optimizing at the Database Level(在数据库级别优化)
在作出一个数据库应用程序快速的最重要因素是其基本设计:
-
表结构是否正确? 特别是,列都有正确的数据类型,以及是否每个表都有相应列的工作类型?例如,执行频繁的更新的应用程序许多表常常有几个列,而分析大量数据的应用程序往往具有很多列几张表。
-
是正确的本地索引使查询效率提高?
-
您是否为每个表使用适当的存储引擎,并考虑你使用的每个存储引擎的优势和功能优势? 特别是,事务性存储引擎如InnoDB的或非事务如MyISAM的选择可以是对性能非常重要和 可扩展性。
-
是否每个表使用合适的行格式?这种选择也取决于用于该表的存储引擎。特别是,压缩表使用较少的磁盘空间,因此需要较少的磁盘I / O来读取和写入数据。压缩适用于所有类型的工作负载与InnoDB表,并为只读MyISAM表。
-
应用程序是否使用适当的锁策略? 例如,通过允许共享访问当可能使数据库操作可以同时运行时,并要求独占访问在适当的时候让关键业务得到重中之重。再次,存储引擎的选择是显著。InnoDB存储引擎处理大多数的锁定问题,而不需要您的参与,允许在数据库中更好的并发性,并减少对你的代码实验和调整量。
-
是用于正常大小的缓存内存中的所有区域?即,大到足以容纳频繁访问的数据,但不能太大,它们超负荷物理存储器和原因分页。主存储器区域配置是InnoDB缓冲池,MyISAM键缓存,和MySQL查询缓存。
Optimizing at the Hardware Level(硬件级别的优化)
任何数据库应用程序最终打硬件限制作为数据库变得越来越忙。DBA必须评估是否有可能调整应用程序或重新配置服务器以避免这些瓶颈,或是否有更多的硬件资源是必需的。系统瓶颈通常源于这些来源:
-
磁盘寻道。它需要时间为磁盘找到一块数据。随着现代磁盘的平均时间为这通常是超过10ms以下,所以我们可以在理论上做到约每秒100寻道。这一次新的慢速磁盘,很难优化一个表。以优化寻道时间的方式是将数据分布到多个磁盘。
-
磁盘读取和写入。当磁盘是在正确的位置时,我们需要读取或写入数据。随着现代磁盘,一个磁盘至少10-20MB/ s的吞吐量提供。这是更容易比优化的目的,因为你可以从多个磁盘并行读取。
-
CPU周期。当数据在主内存中,我们必须让我们的结果处理它。具有小的表相比存储器的量是最常见的限制因素。但随着小表,速度一般是没问题的。
-
内存带宽。当CPU需要的更多的数据不能适应CPU缓存,主内存的带宽成为瓶颈。这是大多数系统的一个不常见的瓶颈问题,但是一个要注意的。
Balancing Portability and Performance(平衡可移植性和性能)
为了在便携式MySQL的程序中使用绩效为导向的SQL扩展,你可以在/包装MySQL的特定关键字在一份声明*! */注释分隔符。其它SQL服务器忽略注释关键字。更多信息,详见 Section 9.6, “Comment Syntax”。
阅读(165) | 评论(0) | 转发(0) |