当前位置: 首页 > 网络应用技术

MySQL交易和锁的做法

时间:2023-03-05 23:54:30 网络应用技术

  概念说明:

  肮脏的读数:这意味着数据可以访问数据并修改数据,并且此修改尚未提交到数据库中。目前,另一项交易也访问了此数据,然后使用此数据使用此数据

  重复阅读:指在一次交易中多次读取相同的数据。在此交易结束之前,另一笔交易也访问了相同的数据并提交了修改。第二笔交易,在第一次交易中读取两次数据可能是不同的。以这种方式,数据读取两次是不同的,因此被称为不可再生读数。

  幻影读数:指交易不是独立时发生的现象。例如,第一个事务修改了表中的数据。此修改涉及表中的所有数据行。在同一时间,第二笔交易还修改了该表中的数据。此修改是插入表中的一系列新数据线。然后,将来,操作第一个交易的用户将发现表中仍然存在修改后的数据行,就好像发生了幻觉一样。

  mysql的隔离水平

  实验如下:

  RC隔离水平首次

  未提交交易时,Windows A将不会提交。更新数据将锁定数据。

  1AAAA2BBB32 ROO和SET(0.00秒)

  查询确定,0行影响(0.00秒)

  查询OK,1行影响(0.01秒)行匹配:1更改:1警告:0

  由于窗口A的锁定,窗口B中的更新数据失败了。

  错误1205(HY000):锁定等待时间超出;尝试重新启动交易

  窗口B插头数据成功

  查询OK,1行影响(0.00秒)

  RC可以避免肮脏的阅读并避免更改现有数据。但是,不可能避免重复读取:如果数据当时查询数据,则将数据修改并提交到数据,并且当数据时数据已更改再次读取数据。图片读取:窗口B仍然可以插入新数据。将新数据插入B窗口后,窗口A的数据将再次读取数据,数据将更改

  第二次采用RR隔离水平

  月亮A打开交易并读取数据。

  查询确定,0行影响(0.00秒)

  1DDDD22BBBBBB33EEE44FFF54 set(0.00 sec)中

  B董事会开放交易,修改和插入数据,并提交。

  查询确定,0行影响(0.00秒)

  查询OK,1行影响(0.00秒)行匹配:1更改:1警告:0

  查询OK,1行影响(0.00秒)

  1GGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKKKKKKK65 set(0.00秒)

  窗口A再次读取数据。窗口B修改的数据不会影响A,但是新插入的数据会影响A

  1DDDD22BBBBBB33EEE44FFF54 set(0.00 sec)中

  RR隔离级别可以避免肮脏的阅读,并且可以反复阅读和阅读(注意:大多数信息无法解决,MySQL实际上已经解决了)

  GAP锁定窗口交易未提交

  查询OK,1行影响(0.00秒)行匹配:1更改:1警告:0

  窗户

  错误1205(HY000):锁定等待时间超出;尝试重新启动交易

  查询OK,1行影响(0.00秒)

  成功,失败,mySQL的数据将锁定contert_id = 2的数据