1.mysql事务原理,特性,事务并发控制2.如何解决高并发场景下的插入重复3.乐观锁和悲观锁4.常用数据库引擎之间区别5.mysql索引6.B-Tree7.mysql索引类型8.什么时候创建索引9.索引什么时候失效(模糊匹配,类型隐转,最左匹配) 10.什么是聚集索引和非聚集索引(辅助索引)11. ...
分类:
数据库 时间:
2019-07-24 16:37:43
阅读次数:
114
写在前面: 锁根据其使用的方式可以划分为:乐观锁和悲观锁。乐观锁即乐观并发控制,悲观锁即悲观并发控制,他们是处理并发控制时主要采用的技术手段。其中,悲观锁正是数据库本身提供的锁机制实现的。 悲观锁: 悲观锁(Pessimistic Concurrency Control)缩写为PCC。从字面意义上理 ...
分类:
数据库 时间:
2019-07-24 13:03:14
阅读次数:
122
Java中锁的概念 自旋锁 : 是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断判断锁是否能够被成功获取,直到获取到锁才会退出循环。 乐观锁 : 假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改 悲观锁 :假定会发生并发冲突 ...
分类:
编程语言 时间:
2019-07-24 00:11:37
阅读次数:
127
乐观锁:认为数据修改产生冲突的概率并不大,所以不会先获取锁,一般都是使用版本号或者时间戳来标记,若A和B同时修改数据,当A修改完毕的同时将时间戳也替换为自己修改的时间戳,则B去修改时就会发现此条数据已经被修改过,则此次B则无法修改 优点:不对数据加锁,只有在对数据进行修改操作时才会进行校验不会影响服 ...
分类:
编程语言 时间:
2019-07-23 17:19:51
阅读次数:
99
网上关于Java中锁的话题可以说资料相当丰富,但相关内容总感觉是一大串术语的罗列,让人云里雾里,读完就忘。本文希望能为Java新人做一篇通俗易懂的整合,旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止,但是在需要时能够知道去查什么。 首先要打消一种想法,就是一个锁只能属于一种分类。其实 ...
分类:
编程语言 时间:
2019-07-22 18:03:41
阅读次数:
107
一乐观锁总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在
分类:
其他好文 时间:
2019-07-17 14:01:10
阅读次数:
90
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 (1) 在操 ...
分类:
其他好文 时间:
2019-07-16 08:43:13
阅读次数:
95
网上关于Java中锁的话题可以说资料相当丰富,但相关内容总感觉是一大串术语的罗列,让人云里雾里,读完就忘。本文希望能为Java新人做一篇通俗易懂的整合,旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止,但是在需要时能够知道去查什么。 首先要打消一种想法,就是一个锁只能属于一种分类。其实 ...
分类:
编程语言 时间:
2019-07-11 12:58:27
阅读次数:
140
三四百的并发量的防止超卖问题可以用数据库的悲观锁和乐观锁。 悲观锁比乐观锁(失败重试)效率更高。因为这和响应速度 冲突频率 重试代价有关。。乐观锁的冲突频率和重试太多。 ...
分类:
其他好文 时间:
2019-07-11 00:24:54
阅读次数:
132
10.锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等, ...
分类:
其他好文 时间:
2019-07-09 00:10:26
阅读次数:
86