共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据

共享锁(S锁):又称为读锁,能够查看但没法修改和删除的一种数据锁。若是事务T对数据A加上共享锁后,则其余事务只能对A再加共享锁,不能加排它锁。获准共享锁的事务只能读数据,不能修改数据。 共享锁下其它用户能够并发读取,查询数据。但不能修改,增长,删除数据。资源共享.数据库

排它锁(X锁):又称为写锁、独占锁,若事务T对数据对象A加上X锁,则只容许T读取和修改A,其余任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其余事务在T释放A上的锁以前不能再读取和修改A编程

互斥锁:在编程中,引入了对象互斥锁的概念,来保证共享数据操做的完整性。每一个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象并发

“悲观锁”、“乐观锁”:https://blog.csdn.net/weixin_36634753/article/details/88809670.net

“行级锁”:行级锁是 MySQL 中锁定粒度最细的一种锁,表示只针对当前操做的行进行加锁。行级锁能大大减小数据库操做的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的几率最低,并发度也最高。线程

“表级锁”:表级锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操做的整张表加锁,它实现简单,资源消耗较少,被大部分 MySQL 引擎支持。最常使用的 MyISAM 与 InnoDB 都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的几率最高,并发度最低。对象

“页级锁”:页级锁是 MySQL 中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。所以,采起了折衷的页级锁,一次锁定相邻的一组记录。BDB 支持页级锁。开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度通常。blog

“丢失修改“:指事务1和事务2同时读入相同的数据并进行修改,事务2提交的结果破坏了事务1提交的结果,致使事务1进行的修改丢失。进程

”不可重复读“:一个事务在读取某些数据后的某个时间,再次读取之前读过的数据,却发现其读出的数据已经发生了改变、或某些记录已经被删除了!事务

”读脏数据“:事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1因为某种缘由被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。资源

死锁:两个或两个以上的进程在执行过程当中,因为竞争资源或者因为彼此通讯而形成的一种阻塞的现象,若无外力做用,它们都将没法推动下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程

死锁四个产生条件:

1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。若是此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。

2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对本身已得到的其它资源保持不放。

3)不剥夺条件:指进程已得到的资源,在未使用完以前,不能被剥夺,只能在使用完时由本身释放。

4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

预防死锁打破上述之一的条件。