mysql优化(配置优化)

本文介绍MySQL性能优化的多种方法,包括解决死锁、慢查询、查看执行中的SQL、管理数据库连接数、调整线程池缓存大小以及处理大量写I/O问题。提供了详细的SQL语句和参数设置建议。

1.手动解锁:

先查询锁住的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

杀死进程

kill id

其中,id为:trx_mysql_thread_id列

另一种方法:

查询是否有在锁的表:

show OPEN TABLES where In_use > 0;

查询进程(如果你有SUPER权限,你可以看到所有线程。否则,只能看到你自己的线程):

show processlist;

杀死进程:

kill id

2.慢查询

查找当前数据库是否开启了慢查询:

show variables like '%slow%';

查询慢查询日志:

show variables like '%slow_query_log%';

3.查询正在执行的sql(同样适用于长sql)

select * from information_schema.`PROCESSLIST` where info is not null;

另外:

show processlist;

可以查询出当前连接中所有数据库及所有用户的执行情况,但是sql显示不完全。

4.查询数据库连接数

查询数据库最大连接数:

show variables like '%max_connections%';

 查询数据库服务器响应的最大连接数:

show global status like 'Max_used_connections';

 对于mysql服务器最大连接数值的设置范围比较理想的是:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,如果在10%以下,说明mysql服务器最大连接上限值设置过高。

例如:

Max_used_connections / max_connections * 100% = 2/100 *100% ≈ 2%

可以看到占比远低于10%

5.线程池缓存大小
( 当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 )

show status like 'Threads%';
show variables like 'thread_cache_size'; 
set global thread_cache_size=64; (立即生效重启后失效,具体的需要在mysql配置文件中改)
Threads_cached    : 当前线程池中缓存有多少空闲线程
Threads_connected : 当前的连接数 ( 也就是线程数 )
Threads_created   : 已经创建的线程总数
Threads_running   : 当前激活的线程数 ( Threads_connected 中的线程有些可能处于休眠状态 )

当 Threads_cached 越来越少 但 Threads_connected 始终不降 且 Threads_created 持续升高
这时可适当增加 thread_cache_size 的大小,thread_cache_size设置标准:

根据物理内存设置规则如下:

1G  > 8
2G  > 16
3G  > 32
>3G  > 64

6.Mysql占用大量写I/O处理方法

show variables like '%sync_binlog%';

sync_binlog是将二进制日志文件刷新到磁盘上,sync_binlog 的默认值是0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值