mysql中隔离级别和锁

1.在MVCC并发控制中,读操作可以分为两类:快照读与当前读。
快照读(简单的select操作),读取的是记录中的可见版本(可能是历史版本),不用加锁。
当前读(加锁的select操作、insert、delete和update):
读取的是记录中最新版本,并且当前读返回的记录都会加上锁,这样保证了了其他事务不会再并发修改这条记录。
2.Mysql默认级别是repeatable-read,间隙锁在某些情况下可以解决幻读问题
要避免幻读可以用间隙锁在Session_1下面执行

update account set name ='wuhan' where id > 10 and id <=20;

则其他Session没法在这个范围所包含的间隙里插入或修改任何数据
3.无索引行锁会升级为表锁:锁主要是加在索引上,如果对非索引字
段更新, 行锁可能会变表锁。
InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失
效,否则都会从行锁升级为表锁。
锁定某一行还可以用lock in share mode(共享锁) 和for update(排它锁),例如:select * from test_innodb_lock where a = 2 for update;
这样其他session只能使用(当前读)读这行数据,当前读,修改则会被阻塞,直到锁定行的session提交。
4.begin/start transaction 命令并不是一个事务的起点,在执行到它们之后
的第一个操作InnoDB 表的语句,事务才真正启动,才会向mysql申请事务id,mysql内部是严格按照事务的启动顺序来分配事务id的。
5.mvcc中快照读时,(所有已提交的事务)创建事务id <=当前事务id,当前事务id> 删除事务id。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值