当前位置: 首页 > news >正文

网站登不了企业建设网银带佣金的旅游推广平台有哪些

网站登不了企业建设网银,带佣金的旅游推广平台有哪些,平台搭建大概多少钱,网站建设人员培训疑问:Mysql多事务默认情况下,同时修改同一条记录运行修改吗?是否要手动加上for update行锁。 猜想:MySQL 会自动对涉及的数据行加上写锁(排他锁),以确保数据的一致性和隔离性。这是在默认的事务…
  • 疑问:Mysql多事务默认情况下,同时修改同一条记录运行修改吗?是否要手动加上for update行锁。

  • 猜想:MySQL 会自动对涉及的数据行加上写锁(排他锁),以确保数据的一致性和隔离性。这是在默认的事务隔离级别 Repeatable Read 下的行为。

  • 验证

第一个事务不结束,并对message_id=40的记录进行修改

BEGIN;
UPDATE message SET message_name = '瓜瓜在哪里' WHERE message_id = 40;
SELECT * FROM message WHERE message_id = 40;

第二个事务同样执行,对该记录进行修改

BEGIN;
UPDATE message SET message_name = '瓜瓜不见了' WHERE message_id = 40;
SELECT * FROM message WHERE message_id = 40;
COMMIT;
  • 结果
    第二个事务,一直处于阻塞状态,知道我42秒将第一个事务COMMIT后,才获得锁进行修改操作。
UPDATE message SET message_name = '瓜瓜不见了' WHERE message_id = 40
> Affected rows: 1
> 时间: 42.577s
  • 结论

在多事务同时修改同一条记录的情况下,MySQL 会自动对涉及的数据行加上写锁(排他锁)。
注意:读该条记录的话不受影响。 不是事务,进行修改同一条也会阻塞。

  • 引出问题:那么自动也可以加锁的话,我怎么验证手动加锁for update是否生效,因为它不手动加锁,也会自动加锁阻止update。
  • 测试1:于是想到不结束的事务,不作修改就不会自动加锁。

第一个事务只做查询

BEGIN;
SELECT * FROM message WHERE message_id = 40;

第二个事务对该记录进行修改,查看是否阻塞

BEGIN;
SELECT * FROM message WHERE message_id = 40;
UPDATE message SET message_name = '瓜瓜不见了' WHERE message_id = 40;
SELECT * FROM message WHERE message_id = 40;
COMMIT;
BEGIN
> OK
> 时间: 0.016sSELECT * FROM message WHERE message_id = 40
> OK
> 时间: 0.02sUPDATE message SET message_name = '瓜瓜不见了' WHERE message_id = 40
> Affected rows: 0
> 时间: 0.016sSELECT * FROM message WHERE message_id = 40
> OK
> 时间: 0.018sCOMMIT
> OK
> 时间: 0.017s
  • 结论:发现不会阻塞正常修改。

  • 测试2:对查询手动加排它锁,FOR UPDATE,其他事务对该记录进行修改,查看是否阻塞。

第一个事务对查询手动加排它锁,FOR UPDATE

BEGIN;
SELECT * FROM message WHERE message_id = 40 for UPDATE;
SELECT * FROM message WHERE message_id = 40;

第二个事务对该记录进行修改

BEGIN;
SELECT * FROM message WHERE message_id = 40;
UPDATE message SET message_name = '瓜瓜不见了' WHERE message_id = 40;
SELECT * FROM message WHERE message_id = 40;
COMMIT;
BEGIN
> OK
> 时间: 0.015sSELECT * FROM message WHERE message_id = 40
> OK
> 时间: 0.016sUPDATE message SET message_name = '瓜瓜不见了' WHERE message_id = 40
> Affected rows: 0
> 时间: 5.325sSELECT * FROM message WHERE message_id = 40
> OK
> 时间: 0.017sCOMMIT
> OK
> 时间: 0.015s
  • 结论:在修改操作是,会有阻塞现象,知道我提交了第一个事务才继续运行。

  • 补充:

    • 自动加锁和where或set的条件字段是否为索引和主键无关。
    • 自动加的锁和手动加的FOR UPDATE锁是同一种类型的锁(排它锁)。
    • 刚开始我以为自动加锁会与隔离级别有关,于是更换了READ-COMMITTED和READ-UNCOMMITTED隔离级别测试,发现事务执行update语句都会自动加锁,影响别的事务。
show variables like '%tx_isolation%';
set tx_isolation='READ-COMMITTED';
set tx_isolation='READ-UNCOMMITTED';
http://www.yayakq.cn/news/500836/

相关文章:

  • 一级a做网站免费广告推销网站
  • 网站幕布拍摄郑州app拉新项目
  • 西安专业做网站建广告设计图案
  • 淮北市矿业工程建设公司网站做网站的费用 可以抵扣吗
  • 松江品划网站建设开发电商网站开发的现状
  • 龙门惠州网站建设萧县哪有做网站的
  • 哈尔滨企业制作网站网站建设实战
  • 黄江镇网站建设新闻单位建设网站的意义
  • 网站的备案要求吗网站建设 图片上传
  • 邢台网站建设平台成都企业网站制作
  • 大连网站开发选领超科技网站开发选什么职位
  • 手把手教你做网站wordpress 登陆访问
  • 网站文档设置index.phpwordpress后台主题
  • 做网站需要用什么软件东莞热点网站建设
  • 青海西宁网站建设网站设计团队发展
  • 网站主题网站开发的ppt报告
  • 大兴网站开发网站建设优秀设计作品的网站
  • 移动网站建站视频ps做网站主页图片
  • 国外不织布网站做的教具网站弹出广告的是怎么做的
  • 无锡做推广的网站保定哪有做网站的
  • 得力文具网站建设策划书深圳学校网站建设公司
  • 成品网站 免费大宗贸易采购平台
  • 地下城做解封任务的网站wordpress设计类
  • 国内专业网站制作公司网站建设 seo商情网
  • 个人服务器网站备案我要自学网网站建设
  • 厦门网站建设缑阳建网页游戏脚本制作教程
  • 做自己的网站收费吗竹溪县网站集约化建设
  • 公众号微网站制作网站建设与推广完美结合
  • 做网站用什么后台办公室装修计入什么会计科目
  • 太原seo网站管理小程序开发一般多少钱