mysql 行锁定需知:
1、表的存储引擎需为InnoDB
2、为查询的条件创建索引
3、for update 关键字
4、行锁定查询需要放置在事物中
例:
Begin;
select `id_sale` from `red_sale` where `id_sale` = 1 for update;
commit;
或者:
set autocommit=0; select `id_sale` from `red_sale` where `id_sale` = 1 for update;
释放 set autocommit=1;
存储过程:
例子:
/****创建存储过程***/
DELIMITER $$ /***将DELIMITER 暂转换成$$,以便数据库将存储过程编译完成后,再执行***/
DROP PROCEDURE IF EXISTS `wbs`.`p_grad_red`$$ /***如果存在则删除这个存储过程***/
CREATE DEFINER = 'root'@'localhost' PROCEDURE `wbs`.`p_grad_red`(in saleId int, in gradId int, in repeatGrad int, out detailId int)
BEGIN
DECLARE num INT; /***定义变量****/
START TRANSACTION; /**事物开启***/
select id_sale from red_sale where id_sale=saleId for update;
/***判断是否允许同个红包活动内,同一个人重复抢**/
IF repeatGrad THEN
SET num=0;
ELSE
select count(1) into num from red_detail where id_sale=saleId and id_grad=gradId;
END IF;
/****判断这个人是否已抢过红包***/
IF num > 0 THEN
SET detailId=-1;
ELSE
SET detailId=(select id_detail from red_detail where id_sale=saleId and id_grad=0 order by id_detail asc LIMIT 0,1);
IF detailId > 0 THEN
update red_detail set id_grad = gradId , grad_time=now() where id_detail=detailId;
ELSE
SET detailId=0;
END IF;
END IF;
select detailId;
COMMIT;
END$$
DELIMITER ;
/*** 回调存储过程 param1:红包ID, param2:抢红包用户ID, param3:是否允许在一个红包活动中同一个账号抢多次(1:允许,0:不允许), param4: 返回结果 return{0:该红包已被抢空, -1:该用户已抢过一次不可重复抢} ***/ call p_grad_red(1,2,1,@resultId);
select @resultId;
//mysql 表锁定与解除锁
查看当前被锁的表
show OPEN TABLES where In_use > 0;
// 查看数据库中表的状态,是否被锁;
SHOW PROCESSLIST;
//杀掉被锁的表
kill 2726;
相关推荐
InnoDB是事务型数据库的首选引擎,为MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎,其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。 ;2.MyISAM
5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys) 5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交/回卷...
18. MYSQL行类型(专指IASM/MYIASM表) 19. MYSQL缓存 20. MYSQL表高速缓存工作原理 21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用...
18. MYSQL行类型(专指IASM/MYIASM表) 8 19. MYSQL缓存 8 20. MYSQL表高速缓存工作原理 9 21. MYSQL扩展/优化-提供更快的速度 9 22. MYSQL何时使用索引 10 23. MYSQL何时不使用索引 10 24. 学会使用EXPLAIN 10 25. ...
5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys) 5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交...
前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 ...11.5. 列类型存储需求 11.6. 选择正确的列类型
13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和...
+ 5.4.4 存储过程和触发器 + 5.4.5 外键(Foreign Keys) # 5.4.5.1 不使用外键的理由 + 5.4.6 视图(Views) + 5.4.7 '--'作为一个 注解的开始 o 5.5 MySQL 遵循什么标准? o 5.6 怎样处理没有提交/回卷(COMMIT ...
7.1 MySQL锁定机制简介 7.2 各种锁定机制分析 7.3 合理利用锁机制优化MySQL 7.4 小结 第8章 MySQL数据库Query的优化 8.0 引言 8.1 理解MySQL的Query Optimizer …… 第9章 MySQL数据库...
11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. ...
13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和...
MySQL锁定机制简介 数据库锁定机制简单来说就是数据库为了保证数据的一致性而使各种共享资源在被并发访问访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。...
13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES...
13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和...
答:MySQL的存储引擎是底层管理MySQL表的程序库,它决定了如何存储、检索和更新表中的数据。MyISAM和InnoDB是两种MySQL的常见存储引擎。两个引擎的主要区别如下: MyISAM:不支持事务和行级锁定,支持全文索引和...
同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式企业级数据库集群环境为目标,分析介绍了通过 MySQL 实现这一目标的多种架构方式。主要包括可扩展和高可用两...
· 00.尚硅谷_MySQL高级_源码、课件 · 01.尚硅谷_MySQL高级_课程简介 · 02.尚硅谷_MySQL高级_MySQL简介 · ...尚硅谷_MySQL高级_如何锁定一行 · 62.尚硅谷_MySQL高级_行锁总结 · 63.尚硅谷_MySQL高级_主从复制
61.MySQL高级_如何锁定一行.avi 60.MySQL高级_间隙锁危害.avi 59.MySQL高级_索引失效行锁变表锁.avi 58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55....
列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. ...
言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 ...13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法...