一、Mysql事务

1、共享锁、排他锁:读锁,写锁;读锁具有共享性,写锁具有排他性
2、锁粒度和锁策略:
如何提高共享资源的并发性?-》采用更精确的锁粒度,只对修改的数据片进行锁定,锁定的资源越少,系统并发程度越高。
锁粒度是否越精确越好?不是,锁也需要消耗资源,锁策略是在锁的开销和数据的安全性之间寻求平衡。
3、两种重要的锁策略:

1.表锁:Mysql中最基本、开销最小的锁策略,对表进行写操作时,需先获得写锁,并阻塞其他读写操作,写锁优先级比读锁更高
2.行级锁:最大程度的支持并发处理,同时带来最大的锁开销,只在存储引擎层实现,未在服务器层实现。

4、什么是事务?

一组原子性的SQL查询,事务内的语句,要么全部执行成功,要么全部执行失败。

5、什么是ACID?(事务具有哪些特性)

1.原子性:整个事务中的所有操作要么全部执行成功,要么全部执行失败。
2.一致性:事务未提交,修改的数据不会保存到数据库。
3.隔离性:通常,一个事务未提交之前,对他事务是不可见的。
4.持久性:一旦事务提交,所作的修改就会永久保存到数据库

6、mysql的四种隔离级别

1.未提交读:READ UNCOMMITED,事务中的修改,即使没有提交,其他事务也是可见的。
脏读:事务读取未提交的数据
2.提交读:READ COMMITED,有时也叫不可重复读,一个事务从开始到提交前,所作的修改其他事务均不可见。
3.可重复读:Mysql默认隔离级别,一个事务中多次读取同样的记录结果是一样的。
幻读:当某个事务读取某范围内的记录后,另一个事务在该范围内插入了新的记录,之前的事务再次读取时,会产生幻行。
4.可串行化:强制事务串行执行,避免幻读,在没一行数据都加锁,导致大量超时和锁争用。

7、什么是死锁?

死锁是两个或以上事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。
多个事务以不同顺序或者同时锁定一个资源,都有可能会造成死锁。

8、InnoDB如何处理死锁?

将持有最少行级排他锁的事务进行回滚。(死锁回滚算法)
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页