死锁概念:
两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象
1.监控死锁(innotop):
(1) 启用 innodb_status_file
在/etc/my.cnf添加如下:
[mysqld]
innodb_status_file =1
于/var/lib/mysql/下查看.err日志
(2)启用 innodb_monitor
建立监视表:
mysql>use mysql;
mysql> create table innodb_monitor ( id int ) engine = innodb;
mysql> show innodb status\G;
例:一个表test,结构如下:
id:主键;
state:状态;
time:时间;
索引:index(state,time)
任务1: update test set state=1064,time=now() where state=1061 and time < date_sub(now(), INTERVAL 30 minute);
锁分析:先锁定非主键索引index,再锁定主键索引id
任务2: update test set state=1067,time=now() where id in (9921180);
锁分析:先锁定主键索引id,再锁定非主键索引index
解决方法:保证锁顺序一致
select id from tab_test where state=1061 and time < date_sub(now(), INTERVAL 30 minute);
update tab_test state=1064,time=now() where id in(......);
2.监控慢查询操作:
在/etc/my.cnf添加如下:
[mysqld]
slow_query_log=1
slow_query_log_file=/tmp/mysqld_slow.log
long-query-time=1(单位:秒)
log-queries-not-using-indexes(未使用索引)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端