社区
Java EE
帖子详情
大数据量上传造成的写入冲突该怎么解决
piaopiao11
2016-09-28 09:39:32
我在一台客户端向数据库写入数据,每次大概15分钟,在这期间假如还有其他客户端向数据库相同的表写入就会报错,请问这种问题该怎么解决
...全文
513
3
打赏
收藏
大数据量上传造成的写入冲突该怎么解决
我在一台客户端向数据库写入数据,每次大概15分钟,在这期间假如还有其他客户端向数据库相同的表写入就会报错,请问这种问题该怎么解决
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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不也能插入吗
HBase分布式架构处理
大数据
量
(高并发和实时处理)
HDFS(Hadoop Distributed File System)分布式文件管理系统、是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。...
Java实现百万级数据从Excel导入到数据库
在一个后台管理功能中,Excel导入数据是不可缺少,但是当处理
大数据
量
的Excel文件导入时候就可能会带来一些列的问题,本文我们会分析问题产生的原因。并提供
解决
方案以及完整的实现代码。
FreeRTOS如何
解决
访问
冲突
-线程不安全(临界段、互斥锁、挂起调度、看门人任务)
当一个任务A开始访问一个资源(外设、一块内存等),但是A还没有完成访问,B任务运行了,也开始访问,这就会
造成
数据破坏、错误等问题。1任务A执行并开始向LCD
写入
字符串“Hello world”。2. 任务A在输出字符串...
ElasticSearch
写入
流程详解
elasticsearch作为一款分布式系统,在
写入
数据时还需要考虑很多重要的事项,比如:可靠性、原子性、一致性、实时性、隔离性、性能等多个指标。 elasticsearch是如何做到的呢?下面我们针对ElasticSearch的
写入
进行...
Redis数据丢失及
解决
在数据大的情况下会导致系统假死很长时间,所以一般不是推荐的。异步回写即BGSAVE命令,主进程fork后,复制自身并通过这个新的进程回写磁盘,回写结束后新进程自行关闭。由于这样做不需要主进程阻塞,系统不会假死,...
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章