MYSQL优化相关

mysql优化3大方向:
  1. 优化mysql所在服务器内核(运维完成)对mysql配置参数进行优化(my.cnf),此优化需要进行压力测试进行参数调整
  2. 建表时的优化
  3. 对sql语句的优化

一、mysql参数优化

mysql 默认最大连接数为100,查看命令:show variables like 'max_connections'; (该机器最大连接数)
设置最大连接数 set global max_connections = 100;
查看当前被使用的连接 show global status like '%connections%';
注意:设置最大连接的时候需要小于max_connections,大约在85%

二、表优化

尽量定义not null约束,null会是索引统计复杂,可以用0或空代替
可以使用enum(单选)、set(多选)等符合数据类型的字段。工作中一般用tinyint
能用整型字段的都用整型字段
建立索引
分表垂直拆分,水平拆分(最多数据千万使用分表)
垂直分表:基于冷数据和热数据。冷数据用MyIsam加快查询,热数据用Innodb加快更新。
水平分表:数据量大的时候

三、sql优化

  1. 有些函数会不使用mysql缓存
  2. explain或desc来查看索引使用情况
  3. 不要用order by rand()
  4. 拆分大的insert和delete
  5. ORM对象关系映射
  6. 联查时候在字段前加上表别名
  7. 联查分页,先分页在联查
  8. where子句使用, 导致全表扫描的有:
    - !=、<>、or、%22%,
    - 使用参数@num,@表示变量
    select id from a where num=@num
    可以改为 select id from t with(index(索引名)) where num=@num (强制使用索引)
    - not in、in(主键索引not in 和 in 不会,in单条数据不会)
    - 对字段进行表达式,
    select id from t where num/2=100
    改为 select id from t where num=100*2
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 系统层面(基本不用动,看了下,买的云服务器基本都已经优化过了) 内核相关参数(/etc/sysctl.conf) ...
    神奇大叶子阅读 2,077评论 0 4
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,541评论 1 8
  • 数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式数据库(垂直切分) 水平切分 MyISAM和I...
    半瓶阳光o_o阅读 610评论 0 2
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,768评论 0 30
  • 概述 MySQL优化分为三部分优化: MySQL服务器和配置优化 数据库设计和结构优化 查询优化(重点) MySQ...
    卫斯理的青葱岁月阅读 385评论 0 14