Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql锁机制

作者:掌心余温   发布日期:2026-03-19   浏览:69

-- 示例代码:MySQL 行锁和表锁的使用

-- 1. 表锁 (Table Lock)
-- 使用 LOCK TABLES 对整个表进行锁定,防止其他会话对表进行写操作。
LOCK TABLES orders WRITE;

-- 在这里执行一些需要独占表的操作
UPDATE orders SET status = 'shipped' WHERE order_id = 123;

-- 解锁表
UNLOCK TABLES;

-- 2. 行锁 (Row Lock)
-- 使用 SELECT ... FOR UPDATE 对特定行加锁,防止其他事务修改这些行。
START TRANSACTION;

-- 加锁并查询特定行
SELECT * FROM orders WHERE order_id = 123 FOR UPDATE;

-- 修改锁定的行
UPDATE orders SET status = 'shipped' WHERE order_id = 123;

-- 提交事务
COMMIT;

-- 3. 共享锁 (Shared Lock)
-- 使用 SELECT ... LOCK IN SHARE MODE 对特定行加共享锁,允许多个事务读取但不允许修改。
START TRANSACTION;

-- 加共享锁并查询特定行
SELECT * FROM orders WHERE order_id = 123 LOCK IN SHARE MODE;

-- 提交事务
COMMIT;

解释说明:

  • 表锁 (LOCK TABLESUNLOCK TABLES):用于锁定整个表,防止其他会话对该表进行写操作。适用于需要对表进行批量更新或维护的情况。
  • 行锁 (SELECT ... FOR UPDATE):用于锁定特定行,防止其他事务修改这些行。适用于并发场景下对特定记录进行更新。
  • 共享锁 (SELECT ... LOCK IN SHARE MODE):允许多个事务同时读取锁定的行,但不允许修改。适用于读多写少的场景。

通过合理使用这些锁机制,可以有效避免数据竞争和一致性问题。

上一篇:mysql 查询数据库大小

下一篇:mysql计算保留两位小数

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站