数据库性能优化

https://blog.csdn.net/sinat_34990639/article/details/55253144

1 mysql数据库性能优化 sql优化
  • 优化目标
    1 减少IO次数
    2 降低cpu计算
  • 优化方法
  1. 尽量少join
  2. 尽量少排序

排序会消耗较多的cpu资源,影响sql响应时间
减少排序有多种方法, 1 可以通过利用索引来排序进行优化,2 减少参与排序的记录条数,3 非必要不对数据进行排序,4 避免使用消耗资源的操作,distinct,union,minus,intersecr,order by,的sql语句会启动sql引擎执行,耗费资源的排序sort功能。

  1. 尽量用join代替子查询
  2. 尽量少or
  3. 尽量用union all 代替 union
  4. 尽量早过滤
  5. 尽可能对每一条运行在数据库中sql进行explain
2 mysql数据库性能优化 表结构

数字类型:

  1. 尽量少用double,不仅仅存储长度,还存在精确性问题
  2. 固定精度的小数,也不建议使用decimal,建议乘以固定倍数转换成整数存储,可以大大节省存储空间
  3. 能确认不会使用负数的字段,建议添加unsigned定义。
    字符串类型:
  4. 尽量少用text数据类型,其处理方式决定了他性能要低于char或者是varchar类型的处理。
  5. 定长字符,建议使用char,不定长建议使用varchar,且是适当的长度
    时间类型:
  6. 尽量使用timestamp类型,因为其存储空间只需要datetime类型的一半。
  7. 只需要精确到某一天的数据类型,建议使用date类型。因为只需要3个字节,比timestamp还少。
  8. 不建议通过int类型存储一个unix timestamp 的值,因为这太不直观,会带来维护的不要麻烦,还不会带来好处。
    适当拆分:
  9. 比如表中存在类似于text或者很大的把人插入类型的大字段的时候,如果大部分访问表不需要这个字段,就应该将其拆分到另外一个独立的表中,以减少常用数据所占用的存储空间
    适当冗余:
  10. 被频繁引用且只能通过join2张大表的方法才能得到的独立小字段,这样的场景造成大量不必要的IO,完全可以通过空间换取时间的方法来优化。
    尽量使用nut null
3 mysql数据库性能优化 索引优化

索引的缺点:

  1. 索引存在额外的维护成本
  2. 索引存在额外的空间成本
4 mysql数据库性能优化 缓存参数优化
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值