根据 MySQL 状态优化 ---- 1. 慢查询
查看 MySQL 服务器运行的各种状态值:
mysql> show global status;
1. 慢查询
mysql> show variables like '%slow%';
+---------------------------+-------------------------------+
| Variable_name | Value |
+---------------------------+-------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /var/db/my3306/logs/slows.log |
+---------------------------+-------------------------------+
5 rows in set (0.00 sec) mysql> show global status like '%slow%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| Slow_launch_threads | 0 |
| Slow_queries | 18384 |
+---------------------+-------+
打开慢查询日志可能会对系统性能有一点儿影响,如果你的 MySQL 是主-从结构,可以考虑打开其中一条从服务器的慢查询日志,这样既可以监控慢查询,对系统性能的影响也会很小。
显示哪些线程正在运行:
mysql> show processlist;
+------------+-----------------+--------------------+------------+-------------+----------+-----------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------------+-----------------+--------------------+------------+-------------+----------+-----------------------------------------------------------------------+------------------+
| 1 | event_scheduler | localhost | NULL | Daemon | 42 | Waiting for next activation | NULL |
| 1060236184 | my_sync | 172.16.88.33:60726 | NULL | Binlog Dump | 21244918 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |
| 4874532774 | athena | 172.16.88.12:46808 | NULL | Sleep | 6945 | | NULL |
| 4875812388 | california | 172.16.88.11:59687 | california | Sleep | 8 | | NULL |
| 4875812768 | california | 172.16.88.11:59698 | california | Sleep | 5 | | NULL |
| 4875813123 | athena | 172.16.88.12:45683 | NULL | Query | 0 | init | show processlist |
| 4875813758 | california | 172.16.88.11:59711 | california | Sleep | 1 | | NULL |
| 4875813759 | california | 172.16.88.11:59713 | california | Sleep | 1 | | NULL |
| 4875813760 | california | 172.16.88.11:59712 | california | Sleep | 1 | | NULL |
| 4875813915 | athena | 172.16.88.12:50003 | athena | Sleep | 0 | | NULL |
| 4875813916 | athena | 172.16.88.12:50004 | athena | Sleep | 0 | | NULL |
| 4875813917 | athena | 172.16.88.12:50005 | athena | Sleep | 0 | | NULL |
+------------+-----------------+--------------------+------------+-------------+----------+-----------------------------------------------------------------------+------------------+
12 rows in set (0.00 sec)
若发现大量的 unauthenticated user 连接,数据库每次肯定都要响应,索引速速越来越慢,在 mysql.conf 里添加 skip-name-resolve 即可,表示不启用 DNS 反应解析。
再看 State 这列,若长期处于 Sending data (正在处理SELECT查询的记录,同时正在把结果发送给客户端)状态,则可怀疑是磁盘 I/O 压力过大,可用 explain 来分析语句。
mysql> explain SELECT count(new_cheat_id) FROM new_cheat WHERE account_id='' AND offer_id=''\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: new_cheat
type: ALL
possible_keys: NULL
key:NULL
key_len: NULL
ref: NULL
rows: 2529529
Extra: Using where
1 row in set (0.00 sec)
从结果可看出来此表没建索引,导致一次查询扫描了2529529行记录。
建立好索引后,用 show index 查看表索引:
mysql> show index from xk_order_ready_5;
+-----------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| new_cheat | 0 | PRIMARY | 1 | new_cheat_id| A | 2577704 | NULL | NULL | | BTREE | | |
| new_cheat | 1 | ip | 1 | ip | A | 1288852 | NULL | NULL | | BTREE | | |
| new_cheat | 1 | account_id| 1 | account_id | A | 1288852 | NULL | NULL | | BTREE | | |
+-----------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)
再次查看 explain 结果:
mysql> explain SELECT count(new_cheat_id) FROM new_cheat WHERE account_id='' AND offer_id=''\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: new_cheat
type: ref
possible_keys: account_id
key: account_id
key_len: 4
ref: const
rows: 6
Extra: Using where
1 row in set (0.00 sec)
可以发现直接读取了6条记录就获取了查询结果。
根据 MySQL 状态优化 ---- 1. 慢查询的更多相关文章
- mysql索引优化比普通查询速度快多少
		
mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...
 - 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
		
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
 - MySQL 性能优化之慢查询
		
性能优化的思路 首先需要使用慢查询功能,去获取所有查询时间比较长的SQL语句 其次使用explain命令去查询由问题的SQL的执行计划(脑补链接:点我直达1,点我直达2) 最后可以使用show pro ...
 - Mysql - 性能优化之子查询
		
记得在做项目的时候, 听到过一句话, 尽量不要使用子查询, 那么这一篇就来看一下, 这句话是否是正确的. 那在这之前, 需要介绍一些概念性东西和mysql对语句的大致处理. 当Mysql Server ...
 - 根据 MySQL 状态优化 ---- 4. 临时表
		
查看 MySQL 服务器运行的各种状态值: mysql> show global status: 4. 临时表 查看设置: mysql> show variables where Vari ...
 - mysql数据库优化[千万级查询]
		
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
 - MySQL 如何优化大分页查询?
		
一 背景 大部分开发和DBA同行都对分页查询非常非常了解,看帖子翻页需要分页查询,搜索商品也需要分页查询.那么问题来了,遇到上千万或者上亿的数据量怎么快速的拉取全量,比如大商家拉取每月千万级别的订单数 ...
 - mysql SQL优化之嵌套查询-遁地龙卷风
		
(-1) 写在前面 这篇随笔的数据使用的是http://blog.csdn.net/friendan/article/details/8072668#comments里的,里面有一些常见的select ...
 - MySQL中优化sql语句查询常用的30种方法
		
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...
 
随机推荐
- windows下安装mysql解压版
			
1.解压压缩版的MySQL 其中: bin目录 - 主要存放MySQL的各种可执行程序 data目录 - 存放数据库的数据文件和索引文件等 MySQL-test - ...
 - Android APK反编译就这么简单 详解(附图)
			
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...
 - Android ImageView的scaleType属性与adjustViewBounds属性
			
ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fi ...
 - ssh传输文件
			
在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地 ...
 - 一台服务器发布多个tomcat并注册服务名办法
			
修改服务名称 打开Tomcat7.0.65_1/bin/service.bat 修改注册服务名称 当然这个名字自己改 比如Tomcat7_2 原始文件: set SERVICE_NAME=Tom ...
 - 【转】MSM搭建(Memcached_Session_Manager)--解决集群session共享
			
一.环境 tomcat7三台,nginx(负载均衡),memcached(1.4.0) 需要的jar 二.memcached搭建 需要安装libevent 三.tomcat配置 在to ...
 - NSDate 时间比较...等
			
http://blog.csdn.net/reylen/article/details/8560128 创建当前时间 NSDate *date = [NSDate date]; 从现在开始的24小时 ...
 - html、css、js注释
			
HTML注释 <!--注释的内容--> CSS注释 /* 注释内容 */ JS注释 单行注释以 // 开头. 多行注释以 /* 开始,以 */ 结尾.
 - 浅谈SEO-提交(一)
			
前段时间,花了点时间研究了下SEO,Search Engine Optimization,百度百科这样描述: 中文意译为“搜索引擎优化”.SEO是指通过对网站内部调整优化及站外优化,使网站满足搜索引擎 ...
 - magento中如何实现产品图片放大效果
			
Magento列表页用jQuery实现产品图片放大效果今天看到个网站,鼠标移到列表页的产品图片上,旁边会弹出一个大图,感觉不错,就自己在Magento里写了个.先看看效果 这个效果比较好实现,打开li ...