一.脏读.不可重复读.幻象读的区别 1.脏读:包含未提交数据的读取.例如,事务 a 更改了某行(数据库已发生更改,但尚未提交,有可能发生回滚),事务 b 在事务 a 提交更改之前读取已更改的行.如果事务 a 回滚更改,则事务 b 读取到了不存在的脏数据 2.不可重复读取:当某个事务(a)不止一次读取同一行,并且一个单独的事务(b)在两次或多次读取之间修改了该行,所以事务(a)每次读取的该行的值都不同. 3.幻象:是指当事务不是独立执行时发生的一种现象.例如当事务(a)对一个表中的数据进行全部
mysql 事务锁超时时间 innodb_lock_wait_timeout: # 查询全局等待事务锁超时时间 SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; # 设置全局等待事务锁超时时间 SET GLOBAL innodb_lock_wait_timeout=; # 查询当前会话等待事务锁超时时间 SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
原文:http://blog.csdn.net/heyewu4107/article/details/71009712 高并发场景系列(一) 利用redis实现分布式事务锁,解决高并发环境下减库存 问题描述:某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖 方案一 利用数据库锁机制,对记录进行锁定,再进行操作 SELECT * from goods where ID =1 for update; UPDATE goods set stock
FMDB使用SQLite事务Save Point 在SQLite中,事务提供了批量处理,批量撤销的功能.当批量操作中有一步无法完成操作,就会把执行过的语句都撤销,恢复到撤销前的状态.但是由于SQLite不支持事务嵌套,所以用户不能直接完成复杂的事务.不过,SQLite提供了保存点Save Point机制.用户可以在事务中添加保存点,然后根据情况,回滚到指定的保存点,并可以重新执行保存点之后的代码.这样,通过保存点机制,可以变相实现事务嵌套. 为了满足开发者需要,FMDB在FMDataba
利用redis实现分布式事务锁,解决高并发环境下库存扣减 问题描述: 某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖 解决方案一 利用数据库锁机制,对记录进行锁定,再进行操作 select * from goods where id =1 for update ; update goods set count = count - 1 where id= 1; 利用排它锁将并行转化为串行操作,但该方案的性能和用户体验较差 解决方案二 利