MySQL中锁

1、Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本的一致性。在进行反序列化时,JVM会将传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果一样的话,就可以进行反序列化,否则就出现序列化不一致的异常,会抛出InvalidCastException!
2、Having和Where的区别?
having后面接的语句与where类似,where后面的表达式怎么写,having就怎么写,但是两者之间有一个很重要的区别就是:

  • where是针对表中的列进行筛选,查询数据
  • having是针对查询结果中的列进行筛选,查询已经得到的结果中的数据
  • 简单的说:where对表起作用,having对结果进行筛选
  • MySQL
    select * from room303
    where age >=22
    having salary < 1900;
    3、select五个子句的具体顺序为:
where、group by、having、order by、limit

MySQL默认引擎为InnoDB,InnoDB支持行锁和表锁。
行锁和表锁
MySQL的行锁是通过索引加载的,行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁即无法实现,取而代之的是表锁。
行锁:会出现死锁,发生锁冲突几率低,并发高。
表锁:不会出现死锁,发生锁冲突几率高,并发低。

锁冲突:例如说事务A将某几行上锁后,事务B又对其上锁,锁不能共存否则会出现锁冲突。(但是共享锁可以共存,共享锁和排它锁不能共存,排它锁和排他锁也不可以)
死锁:例如说两个事务,事务A锁住了1-5行,同时事务B锁住了6-10行,此时事务A请求锁住6-10行,就会阻塞直到事务B施放6-10行的锁,而随后事务B又请求锁住1-5行,事务B也阻塞直到事务A释放1-5行的锁。死锁发生时,会产生Deadlock错误。
锁是对表操作的,所以自然锁住全表的表锁就不会出现死锁。

1、InnoDB引擎的行锁和表锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rsun04551

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值