mysql 并行写数据导致重复的问题,加间隙锁解决
来源:互联网 发布:空间主页图片网络错误 编辑:程序博客网 时间:2024/06/16 09:17
前期设计只会有一个客户端,现在变为多个客户端接收同样的数据,向本地服务器写同样的数据,采用的是mysql的默认事务级别,频繁导致数据重复。
先是加个行锁 ,两个客户端都执行这段代码时,第一个会锁住;后面的只能等待,类似lock概念;但是未解决数据重复的问题,因为repeatable-read是Mysql默认事务隔离级别!能解决脏读以及不可重复读的问题,但可能出现幻读的情况,对幻读的概念一直理解不对。 幻读是在执行期间读不到其它事务插入的数据
加锁有两种方式,一个是行锁,一个是表间隙锁;关键都要锁住要插入或者修改的行。我是特意建的锁表,虽然锁住了事务,但仍然出现幻读,最后对关键表加了间隙表锁,解决了问题
参考如下的文档http://www.mamicode.com/info-detail-511523.html,增加了间隙表锁,其它的事务在执行到此处时,会等待此事务执行
行锁方式:
select count(*) into count from yyb_data_lock where id=2 FOR UPDATE;
0 0
- mysql 并行写数据导致重复的问题,加间隙锁解决
- MySQL间隙锁问题
- 解决mysql数据重复问题
- MySQL中InnoDB的间隙锁问题
- mysql的间隙锁
- Mysql 解决left join 数据重复的问题
- 解决查询MySQL数据库中重复数据的问题
- 关于oracle重复数据合并以及.前面加0问题的解决
- [Tips]解决MySQL写数据中文乱码的问题
- 解决iframe之间的间隙问题
- 关于服务器并发访问导致重复写数据库的问题
- RecyclerView使用GridLayoutManager导致间隙变大的问题
- cocoapods导致的符号重复问题分析和解决
- 解决spring、springMVC重复扫描导致事务失效的问题
- 解决spring、springMVC重复扫描导致事务失效的问题
- MySQL auto_increment间隙问题
- 解决mysql数据重复问题-只保留一条数据
- mysql新旧数据不一致导致的问题
- 配置apache,直接访问服务器不显示文件目录
- 第二章 寄存器
- PLSQL Trigger will execute even when there is a Foreign Key Constraint Error
- AngularJs最简单解决跨域问题jsonp案例
- Unreal Engine 4 —— 键位更换以及对应思考
- mysql 并行写数据导致重复的问题,加间隙锁解决
- 小程序 小程序专用LBS数据服务工具包(腾讯位置服务)
- 欢迎使用CSDN-markdown编辑器
- RecyclerView检测滑动到顶部或底部的代码示例
- Java多线程之生产者-消费者模式
- jvm
- 适配:解决IE9以下对H5不支持的方法
- git拉取远程分支并创建本地分支
- 面试题:关于一些nio的问题资料