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