并不是所有的数据库引擎都是支持事务的,如 MyISAM 就不支持,InnoDB 就支持,我们的是InnoDB

show variables like '%storage_engine%'; 查看当前数据库的默认引擎是什么

事务的基本要素(A-原子性C-一致性I-隔离性D-持久性)

我们在处理事务的时候会遇到的状况:

脏读:A读取了 B操作还未提交事务的结果,脏数据(B一旦提交事务,这个结果就不准确了)

不可重复读:A在某段时间,查询到的数据不一样(B提交事务,可能在不停的修改数据)--->针对单条数据

幻读:主要针对一批数据来讲,A查询的一批数据,可能被B在不停的修改,出现幻觉了?

mysql的事务隔离级别:

Serializable串行:我的事务尚未提交,别人就都给我等着,谁也不准动。

Repeatable read可重复读:别人改数据的事务已经提交,不管你做了什么,我只认我第一次读到的数据。

Read committed读已提交:别人改数据的事务已经提交,只有别人的操作完提交了事务,我才能去读你的数据。

Read uncommitted 读未提交:别人改数据的事务尚未提交,只要任何人做了修改,不管是否提交事务,我都能读。

这 4 种隔离级别,并行性能依次提高,安全性依次降低

关于数据库事务的隔离级别

查询当前的事务隔离级别是什么:select @@tx_isolation;

关于数据库事务的隔离级别

设置mysql的隔离级别:set session transaction isolation level 设置事务隔离级别

相关文章:

猜你喜欢
  • 2021-09-30
  • 2021-08-31
  • 2022-12-23
  • 2021-03-31
相关资源
相似解决方案