Mysql性能调优

Mysql性能调优

mysql 性能调优有很多方面,主要是这几个方面

  • 数据库表的设计合理性,主要是满足三范式。
  • 使用适当的索引
  • 分表技术
  • 读写分离
  • 存储过程
  • mysql 的配置文件的youhua
  • 定时处理垃圾数据

1. 三范式

1 范式 是指表的列具有原子性,不可再拆分,只要数据库是线性的,都自动满足1NF。

2 范式 表中的纪录是唯一的。

3 范式 表中数据不应该有冗余,如果通过某个字段就能得到跟该字段相关的信息,就没必要将这些信息,再存放到该表中。

在3NF中,可能会对查询效率有所影响,这就需要我们进行分析,到底是降低范式方便查询,还是优化业务,遵守范式。

2 索引

常用的索引: 主键索引,普通索引,唯一索引,全文索引。

 主键索引: primary key 一般设置id列为主键,那么id就是主键索引。主键索引不能为NULL

 普通索引:index ,可以是单列,也可以是多列。

 唯一索引:unique 顾名思义,唯一索引的那一列或者多列组成的不能重复,唯一索引可以为NULL。

 全文索引:针对MyIsam 有用,针对文件文本的检索。

使用索引可以提高查询效率,同时也会影响insert,update,delete的效率。
所以:

  • 对于经常需要作为where的条件列,需要添加索引
  • 经常修改删除的列,不适合添加索引
  • 如果该列的数据基本相同,也不适合建立索引。

另外索引有最左原则:
假如有个索引是由beginTime和endTime两列组成。那么根据最左原则,可供使用的索引由begintime_endTime 和beginTime两个,不包括endtime。

对于一些模糊查询like,or等,尽量不使用,

3 分表技术

水平分割:比如客户表,可以根据规则,将大量的客户分散到不同的表中。
垂直分割:对于一条记录里有很多字段不使用,就可以将该表水平分割。

猜你喜欢

转载自blog.csdn.net/suiban7403/article/details/79585059