zoukankan      html  css  js  c++  java
  • Mysql优化

    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

  • 相关阅读:
    三层架构简单实例【转】
    排序 普通插入法排序
    排序 选择排序
    C#中的继承与覆盖
    排序 冒泡排序法
    c#使用Split分割字符串的几种方法
    GROUP BY,WHERE,HAVING之间的区别和用法
    递归 斐波那契数列
    【公众号系列】一文看懂税费改革
    【MM系列】SAP库龄报表逻辑理解
  • 原文地址:https://www.cnblogs.com/amiezhang/p/10327341.html
Copyright © 2011-2022 走看看