MYSQL数据库的四大特征和四种隔离级别以及锁类型

事务四大隔离级别 
脏读解决方法:RC(read committed),并且默认就好,数据库默认状态已经解决
可重复读和幻读解决方法是:间歇锁
数据库默认隔离级别:  mysql ---repeatable + MVCC多版本实现,     oracle,sql server ---read commited

四个隔离级别:
MYSQL数据库的四种隔离级别_张Fuliang的博客-CSDN博客_mysql数据库的隔离级别

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表



mysql数据库锁有哪些
https://www.php.cn/mysql-tutorials-418309.html后期更新。等待后续

java锁有哪些​​​​​​
1、可重入锁:可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。例如
当线程已经获取第二个synchronized,再次循环也会获取到该锁,所以称之为可重入锁

可重入锁有synchronized和ReentrantLock

2、自旋锁:是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU
自旋锁有CAS

3、公平锁和非公平锁

公平锁:是指多个线程按照申请锁的顺序来获取锁
非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。
对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。
对于Synchronized而言,也是一种非公平锁。由于其并不像ReentrantLock是通过AQS的来实现线程调度,所以并没有任何办法使其变成公平锁
// 非公平锁   Lock lock = new ReentrantLock();
// 公平锁      Lock lock = new ReentrantLock(true);

4、偏向锁、轻量级锁、重量级锁
偏向锁:是指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁。降低获取锁的代价。
轻量级锁:是指当锁是偏向锁的时候,被另一个线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,提高性能。
重量级锁:是指当锁为轻量级锁的时候,另一个线程虽然是自旋,但自旋不会一直持续下去,当自旋一定次数的时候,还没有获取到锁,就会进入阻塞,该锁膨胀为重量级锁。重量级锁会让其他申请的线程进入阻塞,性能降低。

 

  • 与轻量级锁的区别:轻量级锁是在无竞争的情况下使用CAS操作来代替互斥量的使用,从而实现同步;而偏向锁是在无竞争的情况下完全取消同步。
  • 与轻量级锁的相同点:它们都是乐观锁,都认为同步期间不会有其他线程竞争锁
  • 原理:当线程请求到锁对象后,将锁对象的状态标志位改为01,即偏向模式。然后使用CAS操作将线程的ID记录在锁对象的Mark Word中。以后该线程可以直接进入同步块,连CAS操作都不需要。但是,一旦有第二条线程需要竞争锁,那么偏向模式立即结束,进入轻量级锁的状态。

5、间歇锁
思想是:锁的是索引叶子节点的next指针。
解决问题是:解决了mysql RR级别下是幻读的问题

锁的范围:

begin; 
select * from z where id=4 for update;

会锁住主键索引叶子节点的3的next指针。(为啥呢,需要你自己画主键索引的图)

begin; 
select * from z where id=3 for update;

间隙锁会退化为行锁只锁叶子节点3 ,为什么因为没必要。不加间隙锁也不会打破上述的红色4个条件。

begin; 
select * from z where id>4 for update;

叶子节点3及之后所有节点会加行锁并且他们的next指针会加锁,

begin; 
select * from z where c=2 for update;

会发生锁表,因为c没有索引结构能存储行锁或者间隙锁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值