演示Mysql死锁的产生

-演示Mysql的死锁的产生及如何释放死锁;
- 创建数据库demo并设置
字符create database demo charset = utf8;
- 进入演示数据库,
使用demo;
- 创建一张表
create table t1(
int(11)not null default'0 ',
主键(a)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;
- 添加几条数据
插入t1值(1);
插入t1值(2);
插入t1值(3);
插入t1值(4);
- 如果是引擎是myisam是否commit都无效,如果引擎是innodb默认是自动提交事务,查看是否开启
- 显示变量如'%autocommit%'; no表示自动提交
- 查询
select * from t1;
- 演示开始
- 在一个窗口中打开
- 关闭自动提交
- 对行一开始加锁
set autocommit = 0;
select * from t1,其中a ='1'进行更新;




- 在另一个窗口打开
- 关闭自动提交
- 对行二开始加锁
set autocommit = 0;
select * from t1,其中a ='2'进行更新;


- 此时在对调运行,行一和行二的语句会出现锁等待


- 行一
选*来自t1,其中a ='2'进行更新;
- 行二
选*来自t1,其中a ='1'进行更新;


- 出现ERROR 1205(HY000):超出锁定等待超时; 尝试重启事务


- 可以使用下面的三个语句查询打开的表,正在执行的任务和开启的事务
显示OPEN TABLES其中in_use> 0;
show processlist; - kill杀死进程id(id列)
select * from information_schema.innodb_trx; - kill杀死进程id(trx_mysql_threab_id列)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值