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数据库的性能分析的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB和MySQL的区别

Mysql 性能:哪个查询会花费更多时间?

高性能MySQL:字符串类型(1)

MySQL中的锁

MySQL优化——什么影响了MySQL性能

mysql 发生死锁问题请求帮助