数据库性能简介

下文翻译自:https://dev.mysql.com/doc/refman/5.7/en/optimize-overview.htmlhtml

  数据库的性能取决于数据库级别的几个因素:如表,查询,配置设置。这种软件构造致使在硬件级的CPU和I/O操做必须最小话而且高效。在处理数据库性能时,首先须要学习软件端的高级规则和指南,而后使用wall-clock 来衡量性能。mysql

  Tipical 用户指在经过现有的软件和硬件配置获取最佳的性能,Advanced 用户则寻找改进Mysql软件自己的机会,或者本身开发存储引擎和硬件设备来扩展MYSQL的生态体系
数据库级别的优化sql

  使数据库查询快的最重要的因素在于其开始设计阶段:数据库

  一、表的结构是否合理?特别须要指出的是,列在表中是否使用正确的类型?例如:常常须要进行更新的表须要设计成多表少列,而须要大量分析的表须要设计成少表多列。缓存

  二、是否使用索引来让查询更加高效?并发

  三、是否为每一个表选择适当的存储引擎,并利用存储引用的优点和功能?须要强调的是:事务存储引擎(innodb,myisam:非事务)的选择对于性能和扩展性是很是重要的性能

  四、每张表是否使用正确的行格式,这个行格式还和存储引擎有关。强调的是压缩表使用较少的磁盘空间,所以使用较少的磁盘I/O来读取和写入数据,压缩可用于innodb的表和只读的myisam表学习

  五、应用程序是否使用了正确的锁策略?好比,在可能的状况下,经过容许数据共享的方式,以便数据库能够并发运行,并在适当的状况下独立请求,以便关键操做得到最高的优先级。一样,存储引擎的选择是很重要的,Innodb存储引擎能够处理大多的锁问题,无须要调用程序的参与,在数据库中实现更好的并发性,并减小参与测试和代码调试。测试

  六、用于缓存的全部内存区域是否使用正确?也就是说,须要足够大的内存来容纳常常访问的数据,但这个内存也不能超过物理内存并致使分页。要配置的内存区域主要有:InnoDB缓存池,myisam密钥缓存和mysql查询缓存。优化

硬件级别的优化

  随着数据库变得愈来愈繁忙,任何数据库应用最终都会遇到硬件瓶颈。DBA必须评估是否能够从新配置来避免这种瓶颈,或是否须要更多的硬件资源。系统的硬件瓶颈一般来自以下几方面:

  一、磁盘搜索,磁盘找到一条数据须要花费时间。对于现代的磁盘,平均时间一般低于10ms,所以理论上一秒钟能够寻找100次。使用磁盘来进行优化会很缓慢而且很难针对单个表进行优化,优化寻道时间的方法是将数据分布到多个磁盘上。

  二、磁盘读写,当磁盘在正确的位置时,咱们须要读写数据。对于现代的磁盘,一个磁盘一般能够提供20M/s的吞吐量,这比查找更容易去优化,能够经过多个磁盘并行来读取

  三、CPU周期,当数据存储在内存中,咱们须要去处理而且获取结果。内存大小相比大表的数据量,是最多见的限制因素,使用小表,速度一般不是问题。

  四、内存带宽,当cpu能够缓存更多的数据的时候,内存带宽就会成为瓶颈,这个对于大多数系统来讲并不常见,但须要考虑。

相关文章
相关标签/搜索