并发事务的控制方式有哪些?MySQL中并发事务的控制方式有两种:锁和Acecc。锁是悲观锁的实现方式,MVCC是乐观锁的实现方式。锁控制方式下会通过锁来显示控制共享资源。
MySQL中主要是通过读写锁来实现并发控制的。读锁又称为共享锁,S锁作为在读取记录的时候也就是查询select的时候获取共享锁,多个事务可以同时获取读锁。写锁又称为排它锁,独占锁。
·x锁是在修改记录的时候获取排它锁,也就是在银色的update 的delete的时候获取排它锁,多个事务不可以同时获取排它锁。
如果一个记录已经被加了排它锁,那么在未释放该锁之前不能再对这条记录加任何类型的锁,所以读写所可以做到读读并行,但是无法做到读写、写写并行。
根据锁力度的不同又被分为表级所和行级锁。INNNODB它默认为行级锁,行级锁的力度更小,仅对相关记录上锁即可。所以对于并发写入操作来说INNODB的性能会更高。
MVCC是多版本并发控制方法,即对一份数据会存储多个版本,通过事物的可见性来保证事物能看到自己应该看到的版本,通常会有一个全局的版本分配器来为每一行数据设置版本号。
MVCC在MySQL实现乐观锁依赖的主要是隐藏字段,一个是read view,一个是Undolog,这三个是MVCC的核心。untolog是用于记录某行数据的多个版本的数据。而read view和隐藏字段用来判断当前版本数据的可见性。