社区
Java EE
帖子详情
大数据量上传造成的写入冲突该怎么解决
piaopiao11
2016-09-28 09:39:32
我在一台客户端向数据库写入数据,每次大概15分钟,在这期间假如还有其他客户端向数据库相同的表写入就会报错,请问这种问题该怎么解决
...全文
483
3
打赏
收藏
大数据量上传造成的写入冲突该怎么解决
我在一台客户端向数据库写入数据,每次大概15分钟,在这期间假如还有其他客户端向数据库相同的表写入就会报错,请问这种问题该怎么解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
attilax
2016-10-03
打赏
举报
回复
应该你的数据库是基于表级别锁的,粗粒度。。现在很多数据库都是行级别锁了,细粒度锁。。 Atitit.数据库锁的原理与技术点attilax总结 应该你的数据库是基于表级别锁的,粗粒度。。现在很多数据库默认都是行级别锁了,细粒度锁。 你试试不加lock锁,应该就采用默认的行级别锁即可。。现在很多数据库都默认可以多行插入的。 如果你的数据库不支持行级别锁。那就麻烦点了,需要俩个线程独立分表tab1,tabl2,然后一个线程做合并操作即可。。 1. 行级锁、表级锁、页级锁详细介绍_ 1 2. 对WRITE, 表锁定方法原理如下: 2 3. 行级锁定的优点缺点: 2 4. 上述三种锁的特性可大致归纳如下: 2 5. 共享锁 2)排他锁 3 6. 锁调度是如何实现的呢, 3 7. 参考资料 3 1. 行级锁、表级锁、页级锁详细介绍_ 页级:引擎 BDB。 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许 行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。 页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。 2.对WRITE, 表锁定方法原理如下: 如果在表上没有锁,在它上面放一个写锁。 否则,把锁定请求放在写锁定队列中。 对READ,MySQL使用的锁定方法原理如下: 如果在表上没有写锁定,把一个读锁定放在它上面 否则,把锁请求放在读锁定队列中。 InnoDB使用行锁定,BDB使用页锁定。对于这两种存储引擎,都可能存在死锁。这是因为,在SQL语句处理期间,InnoDB自动获得行锁定和BDB获得页锁定,而不是在事务启动时获得。 3.行级锁定的优点缺点: · 当在许多线程中访问不同的行时只存在少量锁定冲突。 · 回滚时只有少量的更改。 · 可以长时间锁定单一的行。 行级锁定的缺点: · 比页级或表级锁定占用更多的内存。 · 当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。 · 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。 · 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。 4.上述三种锁的特性可大致归纳如下: 1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3) 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 三种锁各有各的特点,若仅从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如WEB应用;行级锁更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统 5.共享锁 2)排他锁 6.锁调度是如何实现的呢, 作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com 转载请注明来源: http://blog.csdn.net/attilax 7.参考资料 ORACLE六大锁模式级别越高影响越多 - Oracle数据库栏目 - 红黑联盟.html MySQL行级锁、表级锁、页级锁详细介绍_Mysql_脚本之家.htm
ylovep
2016-09-30
打赏
举报
回复
写数据会影响数据的一致性 难道写的数据一样 不然会报什么错?
piaopiao11
2016-09-29
打赏
举报
回复
我在每个事物开启加锁,锁住这张表, lock table "tablename" write insert into ******************** unlock tables; 但是这样也会有问题,800条数据作为一次事物插入,30W+的数据 开两个客户端同时写入的话,客户端A的一次事物结束,释放锁,客户端B不也能插入吗
Flink读取Kafka数据保存到Redis的
解决
方案教程
数据
量
较大,要求高吞吐低延迟的场景;需要进行状态管理或窗口统计的场景,建议使用flink 针对以上知识我们通过flink读取kafka保存到redis方式快速让大家学习flink如何使用,以及我们如果搭建高性能的flink应用,这...
HBase分布式架构处理
大数据
量
(高并发和实时处理)
HDFS(Hadoop Distributed File System)分布式文件管理系统、是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。...
Java实现百万级数据从Excel导入到数据库
在一个后台管理功能中,Excel导入数据是不可缺少,但是当处理
大数据
量
的Excel文件导入时候就可能会带来一些列的问题,本文我们会分析问题产生的原因。并提供
解决
方案以及完整的实现代码。
高并发的
大数据
量
查询导致系统频繁死机
我们的
大数据
量
查询是数据库分页的,但是导出和打印功能是基于全部数据的.系统投入使用后,对于导出和打印功能的使用远远要高于我们的预期.而我们的系统的硬件设备是有限的 不能再升级了.抓取内存大对象的时候,常常...
阿里云
大数据
工厂DataWorks学习之--数据同步任务常见日志报错总结
在使用
大数据
开发套件时最常用的就是数据同步模块,工单里最常见的问题就是其中数据同步的问题,这里总结一些常见一些从Maxcompute到其他数据源的同步任务报错案例,主要是日志中出现数据回滚
写入
的问题。...
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章