一点点mysql优化方案

timg.

MYSQL:事务隔离级别默认为 repeatable Read(可重复读)。

 

优化途径:1:存储数据前选择合适的表结构,字段结构;

                 2:随着业务的发展,垂直分割表,拆分表;

                 3:使用过程选择合适的查询语法,修改语法;

 

解决方案:

        1:mysql创建表时候会选择存储引擎,可供选择的大概有七个引擎,常用的就两种:InnoDB和MyISAM 。MyISAM支持全文检索,如果你的数据是只存储只查询的话,例如日志内容,推荐使用该存储引擎,如果你有修改操作,不要使用该存储引擎,因为行级操作也会导致表锁,只要有修改就会串行化执行,这种效率是极低的。

InnoDB是一个非常复杂的存储引擎(具体怎么复杂我也不清楚),对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务,并且mysql的事务隔离机制 repeattable Read是会导致幻读现象的,InnoDB通过版本并发控制解决了这个问题。 

我自己大部门项目我默认都会使用InnoDB,对于大量读操作的场景,如果需要全文检索推荐使用es,如果日志数据推荐使用mongoDB。

        2:避免使用 SELECT * 。

        3:如果操作数据时候根据主键id来的 末尾可加上 LIMIT 1。

        4:创建合适的索引,索引是提高查询销量最简单粗暴的方法。

        5:表关联后的ON后面的条件 两个字段使用相同类型的字段,创建索引,表关联操作尽量不要超过三个表,如果业务复杂最好通过代码去拆分处理。

        6:字段对应存储的值是相对固定的字符串值,比如存储性别,城市,状态,能用int用int,想要表达含义的话可以用enum,而不要用varchar。

        7:悲观锁 for Update 语法 一定要用到索引,不然执行过程中就会造成表锁

        8:如果业务越来越复杂,可以对一个复杂的对象进行拆分,常用字段,主要字段放在一张主表内,不常用字段放在副表内。总之表越小越快。

        9:如果用户量上来,数据量扩增起来后,可以尝试对表拆分为读写分离方案,分库分表方案。

 

 

转载于:https://my.oschina.net/jsonyang/blog/3016015

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值