摘要:对象有一个set,hibernate save时拿hashmap依次遍历入库 会导致死锁,相互等待对方update行锁
阅读全文
摘要:在只读事务与普通读 work log 中假设了一种死锁,非mysql死锁,而是jvm死锁 CREATE TABLE `mytest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`
阅读全文
摘要:https://www.zhihu.com/question/51513268/answer/648362223 设想一下,假如没有这道“关卡”检查表锁被是否被占有, 而是直接去获取行锁,会是什么结果? 可以看到, 即使表X锁已经被事务A持有,事务B仍然可以获得行锁,这显然是错误的. 没有意图锁以后
阅读全文
摘要:1 https://www.cnblogs.com/gimin/p/5466247.html 尽量避免事务,缩小事务范围(避免gap锁)(个人认为) 按表顺序,记录id顺序依次访问 直接申请足够级别的锁,即排他锁,而不应先申请共享锁,更新时再申请排他锁,因为当用户申请排他锁时,其他事务可能又已经获得
阅读全文
摘要:只读事务为了扩大事务的范围(single sql -》 java function),解决多次select不相等(即不可重复读)的问题;相当于在外面盖了一个整体的rr的隔离级别 注意隔离级别不是只读事务的目标,因为即使autocommit true,也有事务隔离级别可单独设定,只不过是对于singl
阅读全文
摘要:全部过程有两个关键点:violate和本地原子操作 语录: 从内存领域来说这是乐观锁,因为它在对共享变量更新之前会先比较当前值是否与更新前的值一致,如果是,则更新,如果不是,则无限循环执行(称为自旋),直到当前值与更新前的值一致为止,才执行更新。 而Synchronized是一种悲观锁,它认为在它修
阅读全文
摘要:涉及到这个问题,首先要解答,索引这种数据结构在InnoDB与MyIsam中有何不同 非常经典的文章:https://blog.csdn.net/qq_25551295/article/details/48901317 myisam的主索引和次索引都指向物理行,下面来进行讲解 innodb的主键下存储
阅读全文
摘要:A转给B100元 两个关键点: 1 A B sql在一个事务中 2 A转账前,先查余额 开启事务 lined = update set A.money = A.money-100 where A.money >= 100 if(lined == 0) return 没钱; update set B.
阅读全文
摘要:http://blog.csdn.net/aaa123524457/article/details/54375341 主要区别: 1).[事务]MyISAM是非事务安全型的,而InnoDB是事务安全型的,默认开启自动提交,宜合并事务,一同提交,减小数据库多次提交导致的开销,大大提高性能。 2).[锁
阅读全文
摘要:个人以为MVCC也是乐观锁的一种形式https://www.zhihu.com/question/27876575
阅读全文
摘要:结论:1. 本句本身具有原子性2. 当前读(包含update等写入操作)锁定数据,直到事务提交https://www.zhihu.com/question/46733729/answer/128582074阿里的mysql大咖给出了肯定的答案比如,表名A,字段名为 n...
阅读全文
摘要:http://suene.iteye.com/blog/1756295可以使用 @Lock , 里面填入的是 JPA 的 LockModeType * Java代码 @Lock(LockModeType.PESSIMISTIC_READ) public List ...
阅读全文
摘要:4.18,红色批注,并做了一些纠正 库存超卖的问题作描述:一般电子商务网站都会遇到如团购、秒杀、特价之类的活动,而这样的活动有一个共同的特点就是访问量激增、上千甚至上万人抢购一个商品。然而,作为活动商品,库存肯定是很有限的,如何控制库存不让出现超买,以防止造成不必要的损失是众多电子商务网站程序员头疼
阅读全文
摘要:业务场景: 某对象被访问,并累计访问次数 特点: 1.表中该对象初始没有纪录 2.该对象首次被访问后,为其建立一条纪录 3.此后每次被访问,访问次数++ 4.该对象在表中有且仅有一条纪录 分析一下这个场景: 0.为表的对象字段建立unique索引,确保同一个对象在表中仅有一条纪录 1.访问次数为共享
阅读全文
摘要:实践悲观锁。业务模型是User访问target,target的点击数量+1一般流程是 读——count+1——写如果在并发下,存在count计数失误的情况,可以以如下方法验证:为了模拟放大并发的现象,在读与写之间➕ sleep读-sleep(6000) —— coun...
阅读全文