mysql性能优化-慢查询分析、优化索引和配置
2017-04-06 09:42
531 查看
目录
一、优化概述
二、查询与索引优化分析
1性能瓶颈定位
Show命令
慢查询日志
explain分析查询
profiling分析查询
2索引及查询优化
三、配置优化
show global status;
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_size
8) sort_buffer_size
9) join_buffer_size
10) table_cache
11) max_heap_table_size
12) tmp_table_size
13) thread_cache_size
14) thread_concurrency
15) wait_timeout
一、 优化概述
Mysql> show status ——显示状态信息(扩展show status like ‘XXX’)
Mysql> show variables ——显示系统变量(扩展show variables like ‘XXX’)
Mysql> show innodb status ——显示InnoDB存储引擎的状态
Mysql> show processlist ——查看当前SQL执行,包括执行状态、是否锁表等
Shell> mysqladmin variables -u username -p password——显示系统变量
Shell> mysqladmin extended-status -u username -p password——显示状态信息
show variables like '%slow%';
查看状态变量及帮助:
Shell> mysqld –verbose –help [|more #逐行显示]
http://www.jb51.net/article/22409.htm sql锁的问题
比较全的Show命令的使用可参考: http://blog. href="http://www.2cto.com/kf/web/php/" target=_blank>phpbean.com/a.cn/18/
在配置文件my.cnf或my.ini中在[mysqld]一行下面加入两个配置参数
log-slow-queries=/data/mysqldata/slow-query.log
long_query_time=2
注:log-slow-queries参数为慢查询日志存放的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;
在my.cnf或者my.ini中添加log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。
#log-slow-queries=/data/mysqldata/slow-query.log
long_query_time=2
log-queries-not-using-indexes
慢查询日志开启方法二
我们可以通过命令行设置变量来即时启动慢日志查询。由下图可知慢日志没有打开,slow_launch_time=# 表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加
设置慢日志开启
MySQL后可以查询long_query_time 的值 。
为了方便测试,可以将修改慢查询时间为2秒。
Set long_query_time =2
慢查询分析mysqldumpslow
我们可以通过打开log文件查看得知哪些SQL执行效率低下
[root@localhost mysql]# more slow-query.log
# Time: 081026 19:46:34
# User@Host: root[root] @ localhost []
# Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961
select count(*) from t_user;
从日志中,可以发现查询时间超过5 秒的SQL,而小于5秒的没有出现在此日志中。
如果慢查询日志中记录内容很多,可以使用mysqldumpslow工具(MySQL客户端安装自带)来对慢查询日志进行分类汇总。mysqldumpslow对日志文件进行了分类汇总,显示汇总后摘要结果。
http://www.cnblogs.com/lavandachen/articles/1929537.html 参考
mysqldumpslow -s c -t 20 /var/lib/mysql/s0-slow.log
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化非常重要的一步。开启慢查询日志后,由于日志记录操作,在一定程度上会占用CPU资源影响mysql的性能,但是可以阶段性开启来定位性能瓶颈。
– 表的读取顺序
– 数据读取操作的操作类型
– 哪些索引可以使用
– 哪些索引被实际使用
– 表之间的引用
– 每张表有多少行被优化器查询
http://blog.csdn.net/kennyrose/article/details/7532032 索引作用
http://www.cnblogs.com/linjiqin/p/4125898.html mysql
让程序员创建索引
http://blog.csdn.net/yuanzhuohang/article/details/6497021
如果觉得explain的信息不够详细,可以同通过profiling命令得到更准确的SQL执行消耗系统资源的信息。
http://www.2cto.com/database/201506/404310.html
show profiles;
其他扩展
最重要
show variables like 'max_connections';
set global max_connections=1500;
扩展知识
http://blog.csdn.net/iquicksandi/article/details/7970706 http://item.jd.com/11220393.html#comment
术业有专攻
连接数 慢查询
索引 锁表问题
基本数据库最大问题
然后查看日志 内存溢出
redis:
https://redis.io/download
一、优化概述
二、查询与索引优化分析
1性能瓶颈定位
Show命令
慢查询日志
explain分析查询
profiling分析查询
2索引及查询优化
三、配置优化
show global status;
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_size
8) sort_buffer_size
9) join_buffer_size
10) table_cache
11) max_heap_table_size
12) tmp_table_size
13) thread_cache_size
14) thread_concurrency
15) wait_timeout
一、 优化概述
1 性能瓶颈定位
Show命令
我们可以通过show命令查看MySQL状态及变量,找到系统的瓶颈:Mysql> show status ——显示状态信息(扩展show status like ‘XXX’)
Mysql> show variables ——显示系统变量(扩展show variables like ‘XXX’)
Mysql> show innodb status ——显示InnoDB存储引擎的状态
Mysql> show processlist ——查看当前SQL执行,包括执行状态、是否锁表等
Shell> mysqladmin variables -u username -p password——显示系统变量
Shell> mysqladmin extended-status -u username -p password——显示状态信息
show variables like '%slow%';
查看状态变量及帮助:
Shell> mysqld –verbose –help [|more #逐行显示]
http://www.jb51.net/article/22409.htm sql锁的问题
比较全的Show命令的使用可参考: http://blog. href="http://www.2cto.com/kf/web/php/" target=_blank>phpbean.com/a.cn/18/
慢查询日志
慢查询日志开启:在配置文件my.cnf或my.ini中在[mysqld]一行下面加入两个配置参数
log-slow-queries=/data/mysqldata/slow-query.log
long_query_time=2
注:log-slow-queries参数为慢查询日志存放的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;
在my.cnf或者my.ini中添加log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。
#log-slow-queries=/data/mysqldata/slow-query.log
long_query_time=2
log-queries-not-using-indexes
慢查询日志开启方法二
我们可以通过命令行设置变量来即时启动慢日志查询。由下图可知慢日志没有打开,slow_launch_time=# 表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加
设置慢日志开启
MySQL后可以查询long_query_time 的值 。
为了方便测试,可以将修改慢查询时间为2秒。
Set long_query_time =2
慢查询分析mysqldumpslow
我们可以通过打开log文件查看得知哪些SQL执行效率低下
[root@localhost mysql]# more slow-query.log
# Time: 081026 19:46:34
# User@Host: root[root] @ localhost []
# Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961
select count(*) from t_user;
从日志中,可以发现查询时间超过5 秒的SQL,而小于5秒的没有出现在此日志中。
如果慢查询日志中记录内容很多,可以使用mysqldumpslow工具(MySQL客户端安装自带)来对慢查询日志进行分类汇总。mysqldumpslow对日志文件进行了分类汇总,显示汇总后摘要结果。
http://www.cnblogs.com/lavandachen/articles/1929537.html 参考
mysqldumpslow -s c -t 20 /var/lib/mysql/s0-slow.log
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化非常重要的一步。开启慢查询日志后,由于日志记录操作,在一定程度上会占用CPU资源影响mysql的性能,但是可以阶段性开启来定位性能瓶颈。
explain分析查询
使用 EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。通过explain命令可以得到:– 表的读取顺序
– 数据读取操作的操作类型
– 哪些索引可以使用
– 哪些索引被实际使用
– 表之间的引用
– 每张表有多少行被优化器查询
http://blog.csdn.net/kennyrose/article/details/7532032 索引作用
http://www.cnblogs.com/linjiqin/p/4125898.html mysql
explain用法
让程序员创建索引http://blog.csdn.net/yuanzhuohang/article/details/6497021
profiling分析查询
通过慢日志查询可以知道哪些SQL语句执行效率低下,通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。如果觉得explain的信息不够详细,可以同通过profiling命令得到更准确的SQL执行消耗系统资源的信息。
http://www.2cto.com/database/201506/404310.html
show profiles;
其他扩展
最重要
show variables like 'max_connections';
set global max_connections=1500;
扩展知识
http://blog.csdn.net/iquicksandi/article/details/7970706 http://item.jd.com/11220393.html#comment
术业有专攻
连接数 慢查询
索引 锁表问题
基本数据库最大问题
然后查看日志 内存溢出
redis:
https://redis.io/download
相关文章推荐
- [转]mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置