Mysql数据库性能优化

Mysql数据库性能优化,可以从下面三点入手:

数据库设计

SQL语句优化

架构优化

一.数据库设计优化

1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 基于性能要求结合业务,适度的做冗余

2.适度的建立索引    

IO(更新操作速度会降低,索引的操作),存储空间    

建立索引的规则:      

  a.索引的字段必须是经常用来作为查询条件的字段      

  b.所以是多个字段的情况,第一个字段要是经常作为查询条件的

  c.索引的字段必须有足够的区分度

3.对表进行水平划分      

  每年都有10万条数据,将这个表按照年区分建立表 log  log_2016 log_2015

4.对表进行垂直划分      

  字段很长,占用空间较大 检索表的时候就需要进行大量的I/O 将字段独立出一张表跟原表建立1对1的关系

5.选择适当的字段类型

6.文件图片等大文件用硬盘存储,挂载存储,不用数据库,数据库中只存储文件路径

7.外键要表示清楚  实际工作中大部分不会建立外键

8.宁可集中批量操作也不要频繁读写

9.选择合适的引擎

二.SQL优化

1.慢日志,explain

2.避免全表扫描, 考虑在where和order by 的列建立索引

3.尽量避免在where子句中使用null值判断。Where username is null 放弃使用索引进行全表扫描,设计默认值 例如:0

4.尽量避免在where子句中使用!=||<>,放弃索引,走全表扫描 可以使用< ,<=, =, > ,>= ,between ,in会走扫描

5.尽量避免在where字句中使用 or 来连接,放弃扫描 走全表扫描,可以使用union all  

6.能用between 实现就不要使用in

7.Like避免使用 %%查询 不会走索引。Abc%会走索引

8.查询的时候尽量不要使用*作为结果列,仅列出需要查询的字段,节省应用服务器的内存

9.在where中,尽量避免做列运算,尽量避免使用函数,不走索引,走全表扫面

10.Join操作 小的结果驱动大的结果

11.分页在基数比较大时,不要用limit 尽量换成 between

12.不要使用rand获取随机条数记录

13.不要使用count(列名)表示多少个不为空 记录 使用count(*,1)整个结果集有多少条记录

14.不要做无谓的排序操作

15.出现了局部变量时,可以强制使用索引 with(index(索引名))

16.尽量避免对字段使用表达式操作 selet 1 from table where num/2=100   num=100*2

17.用exists 代替 in

18.索引并不是越多越好,做好不要超过6个

19.尽量使用数字型字段

20.尽量避免创建临时表

21.尽量避免使用游标,游标操作超过1万条记录 必须考虑改写

22.尽量避免大事务操作,索引优化

三.架构优化

1.数据库参数配置 ,具体更多的优化配置      innodb_buffer_pool_size=5g key_buffer_size

2.合理的硬件资源和操作系统    大部分64位的操作系统 和 64位mysql数据库

3.读写分离    通过mysql的复制机制实现多台机器同步,将数据库的压力分散

《Mysql数据库性能优化》

    原文作者:mysql索引优化
    原文地址: https://my.oschina.net/bigdataer/blog/894147
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞