程序如果狂飙了怎么办呢?
《狂飙》电视剧你看了吗?
咖啡干嚼不加糖,我是建工高启强。
手拿冻鱼追一路,我叫启盛你记住。
鱼摊卖鱼开箱货,杀人还得陈金默。
孟钰启兰把我亲,只玩不处叫安欣。
先亲程程后摸腿,我是莽村李宏伟。
AD钙奶来上香, 京海大佬叫徐江。
老公被埋不知情,我是大嫂陈书婷。
脚踩五菱没刹车,记住我是有田哥。
放贷不还就见红,我是刀哥唐小龙。
特产一箱接一箱,我是区长龚开疆。
金丝眼镜真斩男,我是御姐高启兰。
早饭喝粥不放糖,我是省委高玉良。
师父牺牲我撒谎,我的名字叫李响。
一路狂飙到凌晨,我是少爷高晓晨。
交警缉毒带管电,我的名字叫杨健。
做局从来不露面,冬哥安排秘书见。
具体的可以看电视剧哈,强哥这个人物张颂文演的可以的。你觉得呢?
程序“狂飙”,你担心吗?
那回到项目程序里面,如果你负责写的项目程序一直狂飙的话,怕不怕,慌不慌。
是不是要想办法解决问题,不让程序挂掉。避免问题出现,控制住成本,不让程序崩溃。
这篇文章就写一下基于MySQL的方面的性能优化处理方法。掌握了MySQL性能调优总能解决一部分问题吧。
性能优化步骤
适合创建索引的情况
- 主键自动建立唯一索引;
- 频繁作为查询条件的字段应该创建索引;
- 查询中与其它表关联的字段,外键关系建立索引;
- 单键/组合索引的选择问题, 组合索引性价比更高;
- 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度;
- 查询中统计或者分组字段。
不适合创建索引的情况
- 表记录太少;
- 经常增删改的表或者字段;
- Where 条件里用不到的字段不创建索引;
- 过滤性不好的不适合建索引。
Explain 性能分析
使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。
分析查询语句或是表结构的性能瓶颈。
用法: Explain +SQL 语句。
- 执行代码如下,没有where条件
EXPLAIN SELECT * from t_im_contacts
Explain 执行后返回的信息
以上所有结果列说明如下:
id说明
关注点: id 号每个号码,表示一趟独立的查询。一个 sql 的查询趟数越少越好。
select_type 说明
type字段说明
最重要的就是 type 字段,type 值类型如下:
- all — 扫描全表数据;
- index — 遍历索引;
- range — 索引范围查找;
- index_subquery — 在子查询中使用 ref;
- unique_subquery — 在子查询中使用 eq_ref;
- ref_or_null — 对 null 进行索引的优化的 ref;
- fulltext — 使用全文索引;
- ref — 使用非唯一索引查找数据;
- eq_ref — 在 join 查询中使用主键或唯一索引关联;
- const — 将一个主键放置到 where 后面作为条件查询, MySQL 优化器就能把这次查询优化转化为一个常量,如何转化以及何时转化,这个取决于优化器,这个比 eq_ref 效率高一点。
Extra说明一下
- 出现 null
- Using index condition
- Using index
- Using where 单独出现
- Using where,Using index
- Using filesort
所以,根据自己的情况进行优化改进即可。你有好的建议欢迎评论区交流讨论。
让自己的程序平稳的运行。
写到最后,一直在技术路上前行…
昨天,删去;今天,争取;明天,努力。