设为首页 加入收藏

TOP

MySQL状态检查教程(一)
2018-01-18 06:06:49 】 浏览:295
Tags:MySQL 状态 检查 教程

检查mysql 相关状态值

  1.关注连接数

  如果连接数达到了最大连接数,那不管 有多少资源,用户都会阻塞在外面。

  修改mysql最大连接数:

  打开my.ini,修改max_connections=100(默认为100)。

  请根据硬件情况调整到合适的大小,一般经验值可设为3000。Windows服务器大概支持量为1500-1800个连接,linux服务器可以支持到8000个左右。

  请将max_user_connections设0——–这个0代表不限制单用户的最大连接数,其最大连接值可以等于max_connections值。  

mysql> show global status like ‘Max_used_connections’;

检查下最大的过往使用连接数,这个值在max_connections的85%左右是比较合适的,如果过高则是max_connections过少或者系统负荷过高了。

  ①mysqladmin -uroot status

[root@mysql1 ~]# mysqladmin -uroot status

  Uptime: 1742276 Threads: 2 Questions: 2538 Slow queries: 0 Opens: 145 Flush tables: 1 Open tables: 23 Queries per second avg: 0.1

  ②show full processlist

  显示所有进程

mysql> show full processlist;

  +—–+——+———–+——+———+——+——-+———————–+

  | Id | User | Host | db | Command | Time | State | Info |

  +—–+——+———–+——+———+——+——-+———————–+

  | 629 | root | localhost | NULL | Query | 0 | NULL | show full processlist |

  | 633 | root | localhost | NULL | Sleep | 11 | | NULL |

  +—–+——+———–+——+———+——+——-+———————–+

  2 rows in set (0.00 sec)

  如果正在运行的语句太多,运行时间太长,表示MySQL效率有问题。必要的时候可以将对应的进程kill掉。

  杀死休眠的进程kill ID号

        mysql> kill 633;

  Query OK, 0 rows affected (0.00 sec)

  关注TIME参数,看看正在运行的用户进程有多少是长时间占用的,具体分析下。

  ③使用mysqlreport关注Connections,Threads

__ Connections _________________________________________________________

  Max used 3 of 200 %Max: 1.50

  Total 30.16k 0.7/s

  。。。。。。

  __ Threads _____________________________________________________________

  Running 1 of 2

  Cached 1 of 300 %Hit: 99.99

  Created 3 0.0/s

  Slow 0 0/s

  2.关注下系统锁情况

  ① mysql> show status like ‘%lock%’;

+——————————-+———+

  | Variable_name | Value |

  +——————————-+———+

  | Com_lock_tables | 0 |

  | Com_unlock_tables | 0 |

  | Innodb_row_lock_current_waits | 0 |

  | Innodb_row_lock_time | 0 |

  | Innodb_row_lock_time_avg | 0 |

  | Innodb_row_lock_time_max | 0 |

  | Innodb_row_lock_waits | 0 |

  | Table_locks_immediate | 2667760 |

  | Table_locks_waited | 0 |

  ②使用mysqlreport关注Table Locks,InnoDB Lock

__ Questions ___________________________________________________________

  Total 3.38M 81.4/s

  DMS 2.88M 69.3/s %Total: 85.11

  QC Hits 382.70k 9.2/s 11.32

  Com_ 90.50k 2.2/s 2.68

  COM_QUIT 30.15k 0.7/s 0.89

  +Unknown 18 0.0/s 0.00

  Slow 1 s 92 0.0/s 0.00 %DMS: 0.00 Log: OFF

  。。。。。。

  __ Table Locks _________________________________________________________

  Waited 0 0/s %Total: 0.00

  Immediate 2.67M 64.2/s

  。。。。。。

  __ InnoDB Lock _________________________________________________________

  Waits 0 0/s

  Current 0

  Time acquiring

  Total 0 ms

  Average 0 ms

  Max 0 ms

  。。。。。。

        如果wait过多,平均时间过长,那就是查询设计的有问题,仔细关注下超长时间的查询,并打开slow_query_log。

  3. 关注慢查询(slow query)日志

  日志必然会拖慢系统速度,特别是CPU资源,所以如果CPU资源充分,可以一直打开,如果不充足,那就在需要调整的时候,或者在replication从服务器上打开(针对select)

mysql> show variables like ‘%slow%’;

  +———————+—————————————-+

  | Variable_name | Value |

  +———————+—————————————-+

  | log_slow_queries | OFF |

  | slow_launch_time | 2 |

  | slow_query_log | OFF |

  | slow_query_log_file | /data0/mysql/3306/data/mysql1-slow.log |

  +———————+—————————————-+

  4 rows in set (0.00 sec)

  mysql> set GLOBAL slow_query_log=on;

  Query OK, 0 rows affected (0.00 sec)

        ①关注慢查询涉及的表的相关状态

  表内记录数。尽量控制在500万行以内(有索引),建议控制在200万行

  表内索引的使用。

  表如果update,delete,insert频繁,可以考虑optimize table优化下文件存放,索引,存储空间。

  表内update,insert,delete查询的锁定时间。

  select for update如果条件字段无索引的话,会引起的是锁全表而不是行锁,请关注。

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Mysql Binlog三种格式分析介绍 下一篇mysql 数据库的巡检脚本实例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目