mysql优化—你必须掌握的(1)

帮你理解并且明白mysql常见优化的思路方案!!!

常见优化思路如下:

    一,表结构设计合理(主要看是否满足三范式,当然更要结合业务)

   三范式:1)保持列的原子性,不可分割

            这里举个小栗子:   用户表有个address字段,然后address="中国上海".......额,很明显可分为country和city两个,

所以差评。爱动脑的可爱可能要问了,比如记录存address = "本人来自中国XX市XX县XX村"那为何呢。答案很明显,这里

地址是确定唯一的,而上面所讲的城市只要写个城市就唯一了,一切要考虑事实情况。

                  2 )保证列对主键的依赖性

            这里举个小栗子:  这里主要对不掺杂外键的描述,任意一列都必须与主键有直接关系。

                   3)   保证依赖性可以传递,且列与主键不能间接相关

            这里举个小栗子:  这里主要对掺杂外键的描述,比如User表跟Dept(部门表)。部门表存放User表外键(说明依赖性传递)

,而不能在该表中存用户name字段,则表示了列跟主键必须直接相关。

    二,sql语句优化

         这个话题就多了,稍微说说吧,后期写个博文详细介绍。

          1)避免全表扫描(排除select * 等等)

          2)避免 is  null,in.....

          3)细看 以下两个sql

            select count(*) from dept ;

            select count(name) from dept;

            不加索引下两者效率差不多,加了后(尤其数据量多一些时)后者效率更高。

          4) oracle原则大表接小表等。。。。。

          5)定位慢查询

    三, 索引优化、

         1)设计是否合理,比如表字段性别=男或女,你也加索引。。。。(高频率相同值相当于全表扫描)

         2 ) sql是否让索引失效,具体看explain select..........

     四,分表技术(水平分割,垂直分割)以及分库

     五,读写分离

     六,定时清理mysql垃圾数据,定时进行碎片整理

     七,mysql的配置优化(配置参数请看我其他文章或自行百度)

          1)增大连接数

          2) 增大内存

      八,存储过程,触发器的使用

      九,缓存的优化

          主要体现在缓存失效会增加数据库压力(案例日活跃量大且在线时间长的

          解决方案:1)调整缓存失效策略让其分散,比如(3-6小时失效,缓存集群里的某个节点失效了则

 立马更新并通知其他节点及时复制。或者夜间更新缓存(这里不讨论缓存做集群还是说只是服务器端做粘性备份)

     十,服务器硬件优化

       1 ) 基准测试查看

         

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值