博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql数据库隔离级别
阅读量:4482 次
发布时间:2019-06-08

本文共 1701 字,大约阅读时间需要 5 分钟。

# 原创,转载请留言联系

事务的隔离级别 (由高到低)

1.串行化(serializable):一个事务一个事务的执行
2.可重复读(Repeatable-Read) 可重复读,无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务影响  (mysql数据库所默认的级别)
3.读已提交(Read Committed)  读取已提交,其他事务提交了对数据的修改后,本事务就能读取到修改后的数据值(大多数数据库默认的隔离级别)
4.读未提交:(Read Uncommitted)  读取未提交,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。

 

结合实际流程理解一下:

 

1.串行化 serializable

串行化就是一个事务一个事务的执行。一个事务未执行完毕,另一个事务不能执行。例如上面的购买商品流程。用户A购买商品时,开始一个事务。在这个事务未执行完的时候,用户B不能开始事务。

 

2.可重复读 Repeatable-Read

可重复读就是一个事务里,无论查找多少遍,都是一样的结果,即使另一个事务对数据进行了更改,查到的结果也是永远一样。例如,用户A开始了事务,查询商品的库存为3。即使用户B这时候开始事务,然后完成了事务,修改了库存,提交了事务。但是用户A的事务在查询商品的库存永远都是3,并不会因为用户B的事务更改了库存而更新数据。它是独立于一个事务的。Mysql默认的隔离级别就是可重复读。

 

3.读已提交 Read Committed

读已提交是其他事务提交了对数据的修改后,本事务就能读取到修改后的数据值。

例如,用户A开始了事务,查询商品数据是3。这时候,用户B开始了事务,修改了商品库存为1,并且事务提交了。这时候A的事务再查询库存的时候,库存不再是3了,而是1。

很多数据库的默认隔离级别都是读已提交。

 

4.读未提交 Read Uncommitted

读未提交是其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。例如,用户A开始了事务,查询商品库存是3。这时候用户B开始了事务,先修改了商品库存为1,但是还没有提交。即使这样,用户A的事务再查询商品库存时,查到的库存也是1。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在用乐观锁的时候,必须要把mysql的隔离级别设置为读已提交。

Ubuntu下的设置方法:

方式一:

1. 使用vi打开mysql配置文件

   sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
2. 在文件的最末尾添加如下配置, 指定mysql数据库的隔离级别为READ-COMMITTED,如下图
   # 可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
   transaction-isolation=READ-COMMITTED
   
3. 在终端中重启mysql服务
   sudo service mysql restart

方式二:

1. 进入mysql终端

2. 查看当前事务隔离级别
    select @@global.tx_isolation;
3. 设置隔离级别,可选的参数READ UNCOMMITTED  | REPEATABLE READ | SERIALIZABLE
    SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

转载于:https://www.cnblogs.com/chichung/p/10065306.html

你可能感兴趣的文章
[转]WPF MVVM 实战
查看>>
[转载] Python 标准库 urllib2 的使用细节
查看>>
Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果
查看>>
Java学习——Applet写字符串(调字体)
查看>>
react路由
查看>>
nyoj 220——推桌子——————【贪心】
查看>>
java 静态方法分析
查看>>
codevs——4189 字典&&HihoCoder #1014 : Trie树
查看>>
洛谷——P1602 Sramoc问题
查看>>
【MySQL笔记】字符串、时间日期转换
查看>>
jQuery实战之仿淘宝商城左侧导航效果
查看>>
AC日记——「SCOI2016」幸运数字 LiBreOJ 2013
查看>>
unmount
查看>>
数据库连接池
查看>>
windwos iis 7.5 使用html 报405错误
查看>>
范围(地址转换)
查看>>
Unity3D游戏,TCP,WEBCOSKT,HTTP通信架构 weaving-socket
查看>>
【小程序入门集锦】19,微信小程序个人帐号申请
查看>>
【JAVA零基础入门系列】Day3 Java基本数据类型
查看>>
两个整数,求他们的最小公倍数和最大公约数
查看>>