码迷,mamicode.com
首页 > 数据库 > 详细

Mysql优化

时间:2019-01-27 21:56:45      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:表关联   多表关联   返回   glob   顺序   ODB   buffer   不必要   pool   

1. 服务器层面

  1)尽量数据存到内存,Innodb_buffer_pool_size建议设为服务器总内存的 3/4 或者 4/5

    如果我们到mysql那查看 SHOW GLOBAL STATUS LIKE ‘Innodb_buffer_pool_pages_%‘

             看到 Innodb_buffer_pool_pages_free为0,那么就说明配给mysql的内存不够了

  2)减少IO

    当然我们无法减少数据的IO,但是我们可以减少不必要的日志的开启

  3)加内存,更换更好的磁盘

    我们可以给服务器加内存,并增大分配给mysql的内存数;同时我们可以考虑更换磁盘为固态硬盘ssd

 

2. SQL设计优化

  1)中间表 (定时去把需要多表关联数据写到一个表,避免实时去跨多表查询,但是这个只适合一些对实时性要求不高的数据)

  2)冗余字段 (为了避免跨表查询,但是需要注意一致性)

  3)合理拆表 (一个表字段太多,会导致索引数据特别大,查询自然变慢;不经常使用的字段/比较大的字段也可以考虑拆开)

  4)主键索引 (在不考虑分布式式下,最好是int 自增)

 

3. 开发层面(索引)

  1)为搜索字段建立索引

  2)组合索引尽量要有顺序

  3)尽量不要用select *,而用“覆盖索引”

  4)order by,group by尽量使用索引(不然mysql会用文件排序)

  5)如果预计只会返回一条数据(在查非唯一索引的情况下),用LIMIT 1(找到后立即返回,避免全表搜索)

  6)跨表条件数据类型要一致,否则索引会失效

  7)尽量不使用SQL内置函数,不然不会把查询存到Buffer

 

Mysql优化

标签:表关联   多表关联   返回   glob   顺序   ODB   buffer   不必要   pool   

原文地址:https://www.cnblogs.com/amiezhang/p/10327341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!