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

你可能感兴趣的:(MYSQL优化相关)