一次mysql优化经历

某日运维突然说无线终端的频道页接口訪问量非常大,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:

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

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

时间: 2024-10-08 16:26:20

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

Mysql优化(转)

Mysql优化主要通过执行计划,索引,sql语句,调整mysql内部配置 (http://blog.chinaunix.net/uid-11640640-id-3426908.html) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)  

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

此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计. 前言 MySQL数据库大家应该都很熟悉,而且随着前几年的阿里的去IOE,MySQL逐渐引起更多人的重视. MySQL历史 1979年,Monty Widenius写了最初的版本,

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

转自http://www.php1.cn/Content/DanBiao_60_YiJiLuDengDaShuJuChangJingDe_MySQL_YouHuaHeYunWeiZhiDao_%7C_GaoKeYongJiaGou.html, 更多详细资料请参看原文 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高

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

原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd4a02f7fd81fb2a7d78e3&scene=1&key=0acd51d81cb052bce4ec2a825666e97fe7d6e1072fb7d813361771645e9403309eb1af025691162c663b60ea990c3781&ascene=0&

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

sql优化经历 补充:看到这么多朋友对sql优化感兴趣,我又重新补充了下文章的内容,将更多关于sql优化的知识分享出来, 喜欢这篇文章的朋友给个赞吧,哈哈,欢迎交流,共同进步. 2015-4-30补充:非常感觉编辑的推荐,同时又对慢查询语句优化了一遍,并附上优化记录,欢迎阅读文章. 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表 10) ) 数据100条 学生表: 10) ) 数据70000条 学生成绩表SC select s.* from Student s where s

一次非常有意思的SQL优化经历:从30248.271s到0.001s

场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表 create table Course( c_id int PRIMARY KEY, name varchar(10) ) 数据100条 学生表: create table Student( id int PRIMARY KEY, name varchar(10) ) 数据70000条 学生成绩表SC CREATE table SC( sc_id int PRIMARY KEY, s_id int, c_id int, scor

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

此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计. 前言 MySQL数据库大家应该都很熟悉,而且随着前几年的阿里的去IOE,MySQL逐渐引起更多人的重视. MySQL历史 1979年,Monty Widenius写了最初的版本,

mysql优化相关

一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_buffer

一次非常有意思的sql优化经历

场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表 create table Course( c_id int PRIMARY KEY, name varchar(10) ) 数据100条 学生表: create table Student( id int PRIMARY KEY, name varchar(10) ) 数据70000条 学生成绩表SC CREATE table SC( sc_id int PRIMARY KEY, s_id int, c_id int, scor