Mysql数据库的性能分析
Posted mingyuewu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库的性能分析相关的知识,希望对你有一定的参考价值。
mysql数据库的性能分析
文章目录
性能监控
一、连接数
数据库系统允许的最大连接数max_connections 定值,可以设置;
当前数据库的连接线程数threads_connected,动态变化的;
当threads_connected==max_connected时,数据库不能提供更多的连接数,报错too many connections。
数据库与客户端建立连接后,客户端不发送数据后,连接仍然会保持连接一段时间 time_wait
1 常用查看修改连接数的命令
#1 查看当前运行的连接数
show processlist;//默认显示前100条
show full processlist;//显示全部的连接数
show global status like 'threads_connected' //连接数个数
#2 查看数据库中允许支持的最大连接数,默认151
show variables like 'max_connections'
在配置文件/etc/my.cnf中
[mysqld] port=3306 #socket=MySQL ...set-variable =
max_connections=3200
修改后重启
#3 查看当前已经使用过的最大连接数
show global status like 'max_used_connections'
#4 查看线程运行情况
show global status like 'thread_%'
#5 查看数据库建立过的(已断开+连接中)连接
show global status like 'Connections'
二、事务和锁
当前正在运行的事务 | information_schema.innodb_trx; |
---|---|
当前产生的锁情况 | information_schema.innodb_locks; |
事务等待锁情况 | information_schema.innodb_lock_waits; |
每秒提交的事物数
show global status 'com_commit'
每秒事务的回滚数
show global status 'com_rollback'
三、表
1 查看数据库中当前打开了哪些表:
show open tables
2 查看表状态
show status like 'table%'
table_locks_waited 指不能获得表级锁而需长等待的次数,如果等待次数较大,则说明可能存在锁争抢问题。
3 查看表被扫描的情况
show global status like 'handler_read%'
性能定位
四、慢日志
1 作用
查看超时执行的SQL语句
2 开启慢日志
命令行开启慢日志,临时生效
set global slow_query_log = ON;
set global long_query_time=2 ;
set global log-query-not-using-indexs = on;
配置文件开启慢日志,永久生效,需重启mysql数据库
/etc/my.cnf
在[mysqld]处添加以下配置
//开启慢查询日志
slow_query_log = ON
//执行时间超过2s的SQL语句将被记录
long_query_time=2
//慢日志文件位置
slow_query_log_file=/var/lib/mysql/localhost-slow.log
//记录没有使用索引的query
log-query-not-using-indexs
检查是否开启慢查询
show variables like 'slow_query_log'
3 查看慢日志发生的次数
show status like 'slow_querries;'
4 慢查询日志内容
慢查询发送时间、数据库用户、线程ID、执行的SQL语句等
以上是关于Mysql数据库的性能分析的主要内容,如果未能解决你的问题,请参考以下文章