咱们常见的数据库性能优化就是SQL语句优化,确实SQL优化是开发者接触到最多的也是最常有的优化手段。做为开发人员咱们接触最多的也就是SQL语句的优化,SQL语句的优化除了调整SQL语句外更多的是经过添加索引来加速查询,表结构(合理设计字段、拆分字段到其它表、分表等)的优化也是咱们优化的主要手段。mysql
SQL优化是咱们学习的重点,咱们将全面详细讲解以上SQL优化,可是SQL优化并非数据库优化的所有,通常来讲数据库性能优化能够经过如下几个方面来优化:redis
硬件: 傻子都知道你买个好服务器比你如今用的笔记本数据库性能要强几个级别。sql
系统配置: 好的硬件也须要合理的配置(如链接数配置、占用内存等),即便你的硬件服务器性能再好,可是数据库配置不合适没有充分利用完硬件性能仍是没有彻底发挥出硬件的优点。数据库
数据库和表结构的设计: 数据库是用来存储数据的,数据最终是存储在磁盘的,查询数据最终是读取磁盘上的内容,因此数据库表结构的设计的好坏会影响到查询数据时磁盘的操做缓存
SQL及索引: SQL优化是开发者使用最多的优化方式。性能优化
MySQL性能优化是经过优化各个方面的,不只仅是优化SQL语句这一方面,而是经过各各方面的优化,每一个地方优化一些,这样总体性能就会有明显的提高。服务器
优化方式并发
优化数据库表结构的设计elasticsearch
表结构优化主要经过以下方式来优化:ide
字段的数据类型: 不一样的数据类型的存储和检索方式不一样,对应的性能也不一样,因此说要合理的选用字段的数据类型。好比人的年龄用无符号的unsignedtinyint便可,不必用integer,数字的处理速度要比字符串处理的速度更快。
数据类型的长度:数据库最终要写到磁盘上,因此字段的长度也会影响着磁盘的I/O操做,若是字段的长度很大,那么读取数据也须要更多的I/O, 因此合理的字段长度也能提高数据库的性能。好比用户的手机号11位长度,不必用255个
长度。
表 的 存 储 引 擎 : 常 用 的 存 储 引 擎 有MyISAM、InnoDB、Memory,不一样的存储引擎拥有不一样的特性,因此要合理的利用每种存储引擎的长处和优势来提供数据的性能。MyISAM不支持事务,表级锁,可是查询速度快,InnoDB支持事务,行锁。因此表的存储引擎的选择也是很是重要。
SQL优化
MySQL性能优化的一个很重要的手段就是对SQL语句的优化。其中最重要的方式就是使用索引。
大表分表
大表是指一个表的数据量很是大,一般是指超过500亿条数据量,当一个表的数据量很大的时候,查询就变的很慢,因此减小表里的记录的数量是优化大表的一种方式,这种方式就是将一张表的数据拆分红多张表,这样每张表的数量就减小了,这样查询速度就相对来讲就会快不少。
大表对DDL操做有必定的影响,如建立索引,添加字段修改表结构须要长时间锁表,会形成长时间的主从延迟,影响正常的数据操做。
大事务
大事务: 运行时间比较长,操做的数据比较多的事务。
风险: 锁定太多的数据,形成大量的阻塞和锁超时,回滚时所需时间比较长,执行时间长容易形成主从延迟。
解决方法: 避免一次处理太多的数据,移除没必要要在事务中的select操做。
数据库参数配置优化
mysql是一个高度定制化的数据库系统,提供了不少配置参数(如最大链接数、数据库占用的内存等),这些参数都有默认值,通常默认值都不是最佳的配置,通常都须要根据应用程序的特性和硬件状况对mysql的配置进行调整。例如最大链接数默认为100,即便SQL语句优化的再好,硬件设备配置再高,当请求超过100时都要再等待,这就是配置不合理致使MySQL不能发挥它的最大能力。
主从复制,读写分离
一台MySQL服务器同一时间点支持的并发数是有限的,当大量并发(如双11疯狂下单、支付)时,一台数据库处理不过来,因此增MySQL服务器的数量也是一种加强数据库性能的方式,通俗的讲就是多我的干活确定比一我的干活快。经过使用MySQL主从复制,增删改操做走Master主服务器,查询走Slaver从服务器,这样就减小了只有一台MySQL服务器的压力。
增长缓存层
减小数据库链接也是一种优化手段,有些查询能够不用访问数据库,能够经过使用缓存服务器如redis、memcache、elasticsearch等增长缓存,减小数据库的链接。
升级服务器硬件
当全部优化手段都用了性能还须要优化时,那么只有升级MySQL服务器端硬件了,更快的磁盘IO设备,更强的CPU,更大的内存,更大的网卡流量(带宽)等。
总之对MySQL性能的提高,是经过各个方面来提高的,每一个方面都提高一点,总体加起来就有明显的提高。
总之对MySQL性能的提高,是经过各个方面来提高的,每一个方面都提高一点,总体加起来就有明显的提高。