Mysql锁与事务隔离级别

2021-03-17  本文已影响0人  传达室马大爷

锁的定义

锁是协调多个进程或线程访问某一共享可变资源,防止并发造成不可预见性的问题

锁分类

表锁

每次操作直接锁住整张表,加锁快,开销小,不会出现死锁,但锁的粒度大,发生锁冲突的概率高,并发效率低

MyISAM存储引擎支持表锁

对MyISAM进行读操作时不会影响别的进程的对同一张表的读操作,但会阻止对该张表的写操作,只有读锁释放后才能进行写锁加锁

对MyISAM进行写操作时会阻塞别的进程加读锁和写锁,只有写锁释放后才能执行别的进程的读写

行锁

对行记录进行加锁,开销大,加锁慢,会出现死锁,但锁的粒度小,发生锁冲突的概率低,并发效率高

InnoDB与MyISAM最大的区别

事务

事务的四大特性(ACID)
并发事务带来的问题
事务隔离级别
事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)
MySQL默认事务隔离级别

可重复读(repeatable-read)

-- 查看当前数据库事务隔离级别
SHOW VARIABLES LIKE 'tx_isolation';
-- 设置事务隔离级别
SET tx_isolation='REPEATABLE-READ';
InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为表锁。
上一篇 下一篇

猜你喜欢

热点阅读