什么是自旋锁和互斥锁?
由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么?
自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时等待锁的线程不会进入休眠状态,而是一直忙等待浪费CPU周期。因此自旋锁适用于锁占用时间短的场合。
这里谈到了自旋锁,那么我们也顺便说下互斥锁。这里的互斥锁说的是传统意义的互斥锁,就是多个线程并发竞争锁的时候,没有抢到锁的线程会进入休眠状态即sleep-waiting,当锁被释放的时候,处于休眠状态的一个线程会再次获取到锁。缺点就是这一些列过程需要线程切换,需要执行很多CPU指令,同样需要时间。如果CPU执行线程切换的时间比锁占用的时间还长,那么可能还不如使用自旋锁。因此互斥锁适用于锁占用时间长的场合。
目录
- 1.Mysql
- 2.CHAR 与 VARCHAR 的区别?
- 3.能说下myisam 和 innodb的区别吗?
- 4.你能说下事务的基本特性和隔离级别吗?
- 5.并发问题 – 脏读、不可重复读、幻读?
- 6.事务的隔离级别?
- 7.说说自增主键、UUID?
- 8.mysql 的约束分类?
- 9.drop、delete 与 truncate 的区别:
- 10.隐式事务、显式事务?
- 11.存储过程
- 12.你们数据量级多大?分库分表怎么做的?
- 13.那分表后的ID怎么保证唯一性的呢?
- 14.那分表后的ID怎么保证唯一性的呢?
- 15.分表后非sharding_key的查询怎么处理呢?
- 16.说说mysql主从同步怎么做的吧?
- 总结
1.Mysql 中有哪几种锁?
(1)表级锁:开销小,加锁快。不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低。
(2)行