事务的隔离级别


MysQL是一个客户端/服务器架构的软件件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理多个事务。事务有隔离性的特性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以 继续访问这个数据。但是这样对性能影响太大,我们既想保持事务的隔离性,又想让服务器在处理访问同一数据的多个事务时性能尽量高些,那就看二者如何权衡取舍了。

数据并发的问题

针对事务的隔离性和并发性,我们怎么做取舍呢?先看一下访问相同数据的事务在不保证串行拟行(也就是执行 完一个再执行另一个)的情況下可能会出现哪些问题:

1.脏写(DirtyWrite)

对于两个事务SessionA、SessionB,如果事务SessionA修改了另一个未提交事务SessionB修改过的数据,那就意味着发生了脏写,示意图如下:

SQL中的四种隔离级别

如何设置事务的隔离级别


分类:MySQL
标签: MySQL
文章目录