如何批量处理大数据

1. 通过数据状态(未处理、处理中、处理完成)

2. 分页 分层

3. 通过数据锁定 select for update (多线程安全)

4. 事务

实例:

用户表、兑换资格表、兑换资格统计表

1. 千万用户

2. 用户通过签到获取若干兑换资格

3. 定时任务在固定时间统计每个用户去年未兑换的资格总数

4. 用户可手动兑换,此时 未兑换->兑换中 ,也需要更新统计表

具体实现:

通过select 非处理中用户并加锁,然后更新处理状态为(处理中)

循环处理这N条数据。

for{

锁定统计表

更新统计信息

更新用户表为处理完成(这三步在同一个事务里)

}

问题1:定时任务多线程处理每个用户如何不重复

通过select 锁定 N 条用户,然后把这些用户更新为资格统计中。(这两步在同一个事务里)

然后处理这N个用户(在另外的事务里)

问题2:如果处理结束出现异常,用户表状态依旧是处理中 怎么办?如何区分是正在处理还是处理异常?

手动更新某个时间点之前的所有处理中为未处理,比如10天前。此时即便两个线程同时处理,由于统计表被锁,也会先后处理,不存在数据安全问题。

时间: 2024-08-03 09:18:10

如何批量处理大数据的相关文章

C# 使用SqlBulkCopy类批量复制大数据

特别注意  sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); 插入的时候列的顺序可以不一致,但名称和数据类型最好要保存一致.不一致时候,也能进行正确的转换,除了比如DataTime数据类型,不能插入一个无效的string时间字符串. 本文转载:http://zhoufoxcn.blog.51cto.com/792419/166052 参考http://www.cnblogs.co

.Net批量插入数据到SQLServer数据库,SqlBulkCopy类批量插入大数据到数据库

批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储到数据库中,而不需要一次一次的向数据库Insert数据. 经过几次实验,百万级别的数据表,也只需几秒时间内就可以完全的存入数据库中,其速度,比传统的Insert into方法不止快很多倍. 下面看代码: /// <summary> /// 批量插入数据 /// </summary> /

使用SqlBulkCopy类批量复制大数据

1 using System; 2 using System.Configuration; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Diagnostics; 6 7 namespace SqlBulkCopy1 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Stopwatch sw = new Stopwatch(

第三十三节(java-操作Excel实现企业级批量处理大数据)

package com.tanzhou.aduio;//创始一个包 import java.io.File;//引入类 import java.io.IOException; import java.util.Scanner; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.format.UnderlineStyle; //import jxl.read.biff.BiffException; import j

mysql+php+pdo批量添加大数据

1.使用insert into插入 ini_set('max_execution_time','0');//限制超时时间,因为第一种时间较长,索性设为0不限制 $pdo = new PDO("mysql:host=localhost;dbname=oradt_cloud1520","root","123456");  for($i=0; $i<100000; $i++){ $str = strrand(32); $pdo -> exe

大数据 云计算 等搜集的资料

云计算和大数据 http://www.cstor.cn/textdetail_6067.html http://wenku.baidu.com/link?url=kscWHrJRhI2PdBscQvBmTJTcNcUQpNIk8xFXlkNKWnnTtRLmYPPLBAV4Gp5CmP-H1bQcrCIoxkdSP3XnC3xkDoGWDFyy1R9gJkD9EuyF47q 大数据和云计算两者的区别 http://www.csdn.net/article/2015-09-11/2825674 盘

阿里大数据架构师必备技能,你“佩奇”了嘛?

这两天真的是被<啥是佩奇>这支广告片刷屏了.佩奇明明是个喜剧角色,却把所有人都给看哭了! 中间的剧情,小孙子一句:"想要佩奇",结果爷爷就开始了满村子的寻找佩奇,到最后寻找到了小编认为是最好看的佩奇 不知道大家看了之后是什么感觉,反正我看了之后的感觉是非常感动了.不过经过几天的发酵,"佩奇"这两个字似乎有了更多的含义了!各种"佩奇"齐出不穷,女人的"佩奇"是什么样的?程序员的"佩奇"是什么样的?

大数据必修三大技能 ,你知道吗?

大数据,人工智能技术引领科技潮流,推开大数据时代的大门!国家点赞!政策扶持,前景斐然!紧接着,学习大数据的人才便如过江之鲫,络绎不绝!整体形势,欣欣向荣!在这里,小编为大家送上技术干货,助大家一臂之力,学习大数据技术,一定要注重培训质量,只有如此,方可事半功倍!接下来,就为大家讲解,大数据必修的三大课程! 一.Hadoop生态体系  Hadoop 是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hado

C#中几种数据库的大数据批量插入

C#语言中对SqlServer.Oracle.SQLite和MySql中的数据批量插入是支持的,不过Oracle需要使用Orace.DataAccess驱动. IProvider里有一个用于实现批量插入的插件服务接口IBatcherProvider.批量插入的实现可以通过实现该接口来实现. /// <summary> /// 提供数据批量处理的方法. /// </summary> public interface IBatcherProvider : IProviderServic