Mysql性能优化总结-05实用经验

1.存储引擎

  查询插入操作多的表,用MyISAM。临时数据用Memeroy。常规并发大更新多用InnoDB。

2.分表或者分区

  交易流水(历史)表类似的表:在年底为下一个年度建立12个分区,每个月一个分区。
  渠道交易表:可以分成:当日表,当月表,历史表,历史表再分表。

3.字段定义

  原则上选用可以正确存储数据的最小数据类型。为每一列选用合适的字段类型。

4.整数类型

  INT 有六种类型,不同的类型的最大存储范围不一样,占用的存储空间不一样。
  举例:性别字段用 Tinyint,因为enum也是整数存储。

5.字符类型

  变长情况下用varchar ,定长用char。
  比如邮政编码用char。

6.非空

  非空字段尽量定义成not null,提供默认值,或者使用特殊,空串代替null。null类型的存储,优化,使用都存在问题。

7.不要使用外键,触发器,视图

  降低可读性,影响性能,应该把计算的事情交给程序,数据库专心做存储;数据的完整性,应在程序中检查。

8.大文件存储

  存文件服务器或者直接存磁盘上,数据库值存url(相对路径地址),不要使用text类型来存储。

9.表拆分或者字段冗余

  表拆分:将不常用的字段拆分出去,减少列数和数据量。
   字段冗余:各种名称都是可以冗余的,避免关联查询。

10.其他注意点

   1.创建合适的索引。
   2.改写sql,需要一些积累,例如:
     1)关联查询使用小表驱动大表
     2)用关联替代子查询
     3)not exists转换为left join is null
     4)or改成union
     5)结果集允许重复的话,用union all 代替union
     6)大偏移量的limit,先过滤再排序。
  如果sql 本身解决不了, 就要上升到数据模型和架构了。
   3.表结构(冗余,拆分,not null 等等),数据模型优化,架构优化(缓存读写分离分表等)。
   4.业务层面优化(也就是数据模型优化),必须条件是否必要。
   掌握正确的调优思路,才是解决数据库性能问题的根本。
(PS:数据量和计算量决定一切,优化的本质是减少数据量和计算量,和更合适的数据结构)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值