mysql查询慢之后
|——缘起:早上刚一到公司就反映公司网站爆卡,线上erp完全无法使用,赶紧扔掉手中包子。
———————————————————————————————————————
|——排查:开发中会经常发现开发人员查一下没用索引的语句或者没有limit n的语句,这些没语句会对数据库造成很大的影响,例如一个几千万条记录的大表要全部扫描,或者是不停的做filesort,对数据库和服务器造成io影响等。
而到了线上库,除了出现没有索引的语句,没有用limit的语句,还多了一个情况,mysql连接数过多的问题。
现在,我们找去哪些长时间无响应的sql,查出他们,优化他们。
Mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。

|——查出来是2秒就算慢,默认是10秒。这里改的话:
|——然后看看是否打开慢查询日志:

|————如果未打开慢查询日志:
|—————到这里,我们就可以根据日志里记录下来的sql语句执行的时间长短进行相应优化,加limit或者加索引。
排查的事情交给开发仔细排查,修改,优化。面对当前的mysql锁死,必须立即解决呐。
|—— 解除Locked
列出所有当前查询语句的查询状态[现在是查询正常,早上来的时候完全不是这样,一大列的locked]

|————批量kill 掉locked查询进程
|——最后:更改表引擎为innodB
说明:为啥要更改表引擎:MyISAM是表级锁,InnoDB是行级锁。道理就是你去看电影,一号厅4号座位被人座了,那5号座没人你可以去坐,这是针对行级锁,不能说一号厅整个厅你都不能去了,这是表级锁。
|——————查询 vmeipai库下所有表的引擎情况 [单个表的情况:show table status from 数据库库名 where name='表名' 或者:show create table 表名]

|——————批量更改MyIsAm为InnoDB
+-------------------------------------+------------+--------+
| table_name | table_type | engine |
+-------------------------------------+------------+--------+
| v_timelinedata | BASE TABLE | MyISAM |
| tempview | BASE TABLE | MyISAM |
| shang_user_red | BASE TABLE | MyISAM |
| shang_user_priv | BASE TABLE | MyISAM |
| shang_user_exhibit | BASE TABLE | MyISAM |
| shang_user_coupon | BASE TABLE | MyISAM |
| shang_uploaded_file | BASE TABLE | InnoDB |
| shang_trade | BASE TABLE | MyISAM |
|——————更改表引擎:alter table [table_name] engine = innodb;
生成一张sql语句列:
参考:
http://www.holmesian.org/MySQL_to_InnoDB 批量修改Mysql表引擎为InnoDB的方法
http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html 什么事mysql数据库
http://bbs.et8.net/bbs/showthread.php?t=1046281 【求助】频繁读写(select\update)的Mysql数据表引擎用InnoDB还是MyISAM
参考:
http://www.jb51.net/article/30121.htm mysql服务器查询慢原因分析与解决方法小结
http://c20031776.blog.163.com/blog/static/68471625201122895832654/ mysql批量kill locked进度方法
http://zhumeng8337797.blog.163.com/blog/static/100768914201121183834733/ 大量locked进程中,找出哪条SQL语句locked致使其他语句waiting
参考:http://www.cnblogs.com/jyginger/archive/2011/04/27/2030017.html 修改mysql用户密码
mysql查询慢之后的更多相关文章
- mysql查询性能优化
mysql查询过程: 客户端发送查询请求. 服务器检查查询缓存,如果命中缓存,则返回结果,否则,继续执行. 服务器进行sql解析,预处理,再由优化器生成执行计划. Mysql调用存储引擎API执行优化 ...
- Mysql查询——深入学习
1.开篇 之前上一篇的随笔基本上是单表的查询,也是mysql查询的一个基本.接下来我们要看看两个表以上的查询如何得到我们想要的结果. 在学习的过程中我们一起进步,成长.有什么写的不对的还望可以指出. ...
- Mysql 查询练习
Mysql 查询练习 ---创建班级表 create table class( cid int auto_increment primary key, caption ) )engine=innodb ...
- mysql 查询去重 distinct
mysql 查询去重 distinct 待完善内容..
- MySQl查询区分大小写的解决办法
通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: ca ...
- 【转】mysql查询结果输出到文件
转自:http://www.cnblogs.com/emanlee/p/4233602.html mysql查询结果导出/输出/写入到文件 方法一: 直接执行命令: mysql> select ...
- MySQL查询缓存
MySQL查询缓存 用于保存MySQL查询语句返回的完整结果,被命中时,MySQL会立即返回结果,省去解析.优化和执行等阶段. 如何检查缓存? MySQL保存结果于缓存中: 把SELECT语句本身做h ...
- mysql 查询数据时按照A-Z顺序排序返回结果集
mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...
- MySQL查询今天/本周/上周/本月/上个月份的数据
MySQL查询的方式很多,下面为您介绍的MySQL查询实现的是查询本周.上周.本月.上个月份的数据,如果您对MySQL查询方面感兴趣的话,不妨一看. 查询当前今天的数据 SELECT name,sub ...
- [转]向facebook学习,通过协程实现mysql查询的异步化
FROM : 通过协程实现mysql查询的异步化 前言 最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能.由于facebook实现的比较早,他们不得不对php ...
随机推荐
- Linux命令:chmod、chgrp、chown的区别
chmod是更改文件的权限: chgrp只是更改文件的属组: chown是更改文件的属主与属组. 1.chmod:更改文件的权限 文件权限的设置方式有两种,分别是数字和标记. mode : 权限设定字 ...
- springMVC数据回显
1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...
- 2017ACM/ICPC广西邀请赛-重现赛1005 CS course
2017-08-31 16:19:30 writer:pprp 这道题快要卡死我了,队友已经告诉我思路了,但是做题速度很缓慢,很费力,想必是因为之前 的训练都是面向题解编程的缘故吧,以后不能这样了,另 ...
- VirtualBox 安装增强功能失败 解决方法
参考:virtualbox安装增强功能时[未能加载虚拟光盘] 在安装VirtualBox并配置虚拟机之后,想要安装增强功能:设备 => 安装增强功能. 出现未能加载虚拟光盘问题. 解决方法: 进 ...
- Entity Framework 基于Oracle的code first 问题汇总
1. 在code first 在数据库中建表时,需要指定schema, 默认是dbo, 需要改成我们的oracle登录名 protected override void OnModelCreating ...
- tyvj 1027 木瓜地 简单模拟
P1027 木瓜地 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT09 4TH 描述 Bessie不小心游荡出Farmer John的田地 ...
- PHP5.6版本安装redis扩展
一.php安装redis扩展 1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本 2.根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2 ...
- Jenkins搭建GitHub仓库
一.安装Jenkins 二.安装Git 三.注册GitHub账号 以上都很简单,网上资源丰富 四.新增GitHub远程仓库,连接到本地Git,这样就可以实现代码提交到GitHub中了 ----自行找资 ...
- HTML子页面保存关闭并刷新父页面
1.思路是子页面保存后,后台传递成功的js到前台. 2.js的原理是——子页面调用父页面的刷新 子页面 function Refresh() { window.parent.Re ...
- 24.Java中atomic包中的原子操作类总结
1. 原子操作类介绍 在并发编程中很容易出现并发安全的问题,有一个很简单的例子就是多线程更新变量i=1,比如多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchr ...