2.MySQL优化概述

介绍

数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置。 这些软件结构导致硬件级别的CPU和I/O操作,必须尽可能地降低这些操作并使其尽可能高效。 在处理数据库性能时,首先要了解软件方面的高级规则和指南,并使用挂钟时间来衡量性能。

1 在数据库级别进行优化

1.1 基本原则

  • 对于表设计,针对更新插入频繁的系统,应该在采用列数较少的表,而再进行统计查询时,应该使用少量的列多的大表避免关联查询。
  • 正确的使用索引
  • 了解存储引擎的优缺点,正确的使用存储引擎。

在新版本MySQL中默认的存储引擎是InnoDB,在现有版本中InnoDB的性能通常都优于MyISAM,尤其是对于访问量比较大的数据库。

  • 行格式也比较重要,压缩适用于InnoDB引擎的各种工作负载,以及只读MyISAM表,所以对于大表应该优先进行使用压缩表。
  • InnoDB可以更好的处理并发事务而无需人工干预,减少代码的实验和调优。
  • 合理配置缓存,,足够大以容纳频繁访问的数据,但不能太大以至于它们会超载物理内存并导致分页。要配置的主要内存区域是InnoDB buffer pool和MyISAM key cache。

2 在硬件级别进行调优

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

  • 磁盘寻址。在现在的告诉磁盘下,每次寻址的平均时间小于10ms,所以可以通过变为固态硬盘,或者使用多磁盘并发解决。
  • 磁盘读写。同样使用多磁盘并行读取。
  • CPU周期。当数据在主存时,我们经过处理得到数据,由于大表很可能超过缓存,这一般是限制效率的常见因素,小表一般不存在此问题。
  • 内存带宽。当CPU需要的数据量超过CPU缓存容量时,主存就成了瓶颈。一般不会出现。

3 平衡可移植性和性能

由于hint都是数据库特有的,所以在做优化的时候需要平衡可移植性与性能。

猜你喜欢

转载自blog.csdn.net/ciqingloveless/article/details/83341731