跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • mysql 里 非事务的 update 语句,会自动加排它锁吗
未分類
8 2 月 2021

mysql 里 非事务的 update 语句,会自动加排它锁吗

mysql 里 非事务的 update 语句,会自动加排它锁吗

資深大佬 : zxCoder 1

没查到相关资料

是我理解错了吗

大多数书 教程都说的是事务的情况

然后在事务中,到底要不要手动写 FOR UPDATE 或 LOCK IN SHARE MODE 来加锁呢?还是说 mysql 会自动根据查询语句的类别来加锁?

大佬有話說 (4)

  • 資深大佬 : louettagfh

    你是指没有显式的 begin 吗?

    update 语句依然需要排它锁.

    事务中写不写 FOR UPDATE 和 LOCK IN SHARE MODE 取决于你的需求啊.

  • 主 資深大佬 : zxCoder

    @louettagfh 对 就是没有显式的开启事务,这时候 update 会自动当做一个事务吗?
    所以事务中其实是不会自动加锁的吗?必须自己手动显式加锁?(对于 innodb )

  • 資深大佬 : lizuoqiang

    session 1:
    #关闭自动提交
    set autocommit = ‘OFF’;
    #更新一条记录
    update author set name = ‘first_new’ where id = 1;

    session 2:
    #关闭自动提交
    set autocommit = ‘OFF’;
    #更新一条记录
    update author set name = ‘first_new_2’ where id = 1;

    session2 会等待 session1 的锁释放而导致超时

    所以一般的事物不需要显示的加锁

  • 資深大佬 : louettagfh

    @zxCoder 针对 SELECT 当然是取决于你的语句来决定加什么锁.

    Update 即修改 record 是自动加锁的, 你不需要做任何处理.

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具