mysql相关

一个数据库操作需要半个小时,并且在一个transaction 内,导致其它的操作因为lock 而timeout 。
为了解决这个问题,找了DBA 了解了数据锁的知识:
1. 两种类型的锁: locks:
共享的(S) 锁允许一个事务去读一行(tuple )。
独占的锁(X) 允许一个事务更新或删除一行。
2. 表锁定,页锁定,行锁定?
看看mysql 使用的是什么存储引擎,以区分对锁定的支持:SHOW TABLE STATUS FROM database_name 。ok ,是InnoDB ,它实现标准行级锁定。
锁的有效期决定于transaction 或者for update 这类语句在何时结束或者roll back 。
如果有select * from table for update 此类语句,那么就是表锁定。
如果有select * from table where id between 1 and 10000 for update 此类语句,那么就是页级锁定。
如果有select * from table where id= 1 for update 此类语句,那么就是行级锁定。
还有,索引也会影响到锁的多少。
锁直到transaction 结束后释放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值