某日运维突然说无线终端的频道页接口訪问量非常大,memcache缓存扛只是来。导致mysql并发查询量太大,导致server不停地宕机,仅仅能不停地重新启动机器。遗憾的是运维并没有告诉mysql查询量详细有多大【无量化,比方一秒多少个查询…】。

针对这个问题。有同事建议改了mysql+memcache的架构。採用redis存储更佳。可是问题的真正原因是什么呢?mysql一秒钟扛几百个并发查询应该是能够的吧?带着疑问。我让运维给出慢查询log。

Oh,my god…慢查询记录太多,都是一秒钟以上的。可是基本上是同一条语句的查询。

explain一下:

Sql语句中有order by zj_lastupdate,明明在这个字段上建立了索引的,但为什么没用呢【这个表上建立了太多联合索引,以致zj_lastupdate被无视了】,所以导致这条查询使用了暂时表【using temporary】和文件排序【usingfilesort】。

解决的办法是在sql语句中加上use index(zj_lastupdate)。提醒mysql引擎使用指定索引字段。

再explain一下:

显然。这次查询引擎会使用zj_lastupdate了。

优化的效果是相当的明显,从之前的1.5秒降到0.015秒,百倍的性能提升。

当然,这个问题解决之后,也就没有出现宕机的情形了,我们也没有改架构。

再说一个mysql优化经历,2表相连,一对一的关系。优化之前的sql语句大概是selectdistinct(movieid) as id…,explain的结果是:

显然,一对一关系的表,无需加入distinctkeyword【算是画蛇添足吧】,去掉之后,再explain:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hhbmdkYXpob25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

优化前后性能提升10倍左右。

Mysql的查询优化有非常多基础理论,能够从查询语句。表结构【分表,字段冗余】,字段类型,索引,存储引擎,缓存,系统内核參数。磁盘IO等方面考虑,可是非常重要的一点是写出详细的sql语句,针对这特定的语句进行详细的优化,当然前提是保证结果是准确的。

一次mysql优化经历的更多相关文章

  1. 单表60亿记录等大数据场景的MySQL优化和运维之道

    此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...

  2. 【转】单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...

  3. [转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd ...

  4. MySQL优化-一 、缓存优化

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  5. SQL 优化经历

    一次非常有趣的 SQL 优化经历   阅读本文大概需要 6 分钟. 前言 在网上刷到一篇数据库优化的文章,自己也来研究一波. 场景 数据库版本:5.7.25 ,运行在虚拟机中. 课程表 #课程表 cr ...

  6. mysql优化:慢查询分析、索引配置优化

    一.优化概述二.查询与索引优化分析a.性能瓶颈定位show命令慢查询日志explain分析查询profiling分析查询b.索引及查询优化三.配置优化 max_connections back_log ...

  7. sql优化经历(转存+记录)

    sql优化经历 补充:看到这么多朋友对sql优化感兴趣,我又重新补充了下文章的内容,将更多关于sql优化的知识分享出来, 喜欢这篇文章的朋友给个赞吧,哈哈,欢迎交流,共同进步. 2015-4-30补充 ...

  8. MySQL优化具体

    1. 查询与索引优化分析 在优化MySQL时,通常需要对数据库进行分析,常见的分析手段有慢查询日志,profiling分析,EXPLAIN分析查询,以及show命令查询系统状态及系统变量,通过定位分析 ...

  9. 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    015-08-09 杨尚刚 高可用架构 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美 ...

随机推荐

  1. VS第一天(一堆错误的错误示范)

    自学VS第一天 (目标用vs做个不low的简历) 学习视频 https://www.bilibili.com/video/av48489320/?p=1 代码 写了一天的代码,自己理解的内容在注释里 ...

  2. python 学习总结5

    字符串类型及操作 一.字符串类型的表示 (1)字符串:由0个或多个字符组成的有序字符序列  例如:“请输入带有符号的温度值” 或者‘c’都是字符串 (2)字符串是字符的有序序列,可以对其中的字符进行索 ...

  3. 算法学习记录-图——最短路径之Dijkstra算法

    在网图中,最短路径的概论: 两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点. 维基百科上面的解释: 这个算法是通过为每个顶点 v 保留目前为止所找到的从 ...

  4. AVL树总结

    定义:一棵AVL树或者是空树,或者是具有下列性质的二叉搜索树:它的左子树和右子树都是AVL树,且左右子树的高度之差的绝对值不超过1 AVL树失衡旋转总结: 假如以T为根的子树失衡.定义平衡因子为 H( ...

  5. loj2274 「JXOI2017」加法

    二分一下,然后从左到右扫描,扫到左端点就把区间 push 到堆里. 每次有点不符合二分的值时,就贪心地选择右端点最远的 add. #include <algorithm> #include ...

  6. luogu3760 [TJOI2017]异或和

    看这里 #include <iostream> #include <cstring> #include <cstdio> using namespace std; ...

  7. TOJ 2596: Music Notes

    2596: Music Notes  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Submit: 3 ...

  8. 九度oj 题目1256:找出两个只出现了一次的数字

    题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输入: 输入的第一行包括一个整数N(1<=N<=1000). 接下来的一行包括N个 ...

  9. DataTable排序

    DataRow[] rows = dt.Select("", "name asc");   DataTable t = dt.Clone();   t.Clea ...

  10. tab栏切换效 简易效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...