千万数据的处理

liaoyukun111 2011-01-15 03:01:06
准备做一个数据查询和统计的功能.一个月上传一次,一次100多W,
现在有3千万,是WEB还是桌面程序,这大的数据在建立数据库或是开发时 有什么好的建议了
...全文
247 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaoyukun111 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 gongsun 的回复:]
楼主的重点在哪里?

数据上传? 那就按p哥的,快递邮寄光盘,10来块钱,1个月1次。

数据查询? 多少人使用,如果就几个内部员工, 你就随便搞搞吧。

如果N个人用,你就架服务器群吧。。。
[/Quote]
重点在上传的性能,和对应表统计结果的时间的性能
liaoyukun111 2011-01-18
  • 打赏
  • 举报
回复
这是我做的导出,代码可否优化
DataTable table;

private OleDbDataAdapter oadp;
int pagesize = 100000;
private void LoadData()
{
Stopwatch sw = new Stopwatch();
sw.Start();
string strconn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("Files/201003乘用车.xlsx") + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
OleDbConnection ocn = new OleDbConnection(strconn);

ocn.Open();
OleDbDataAdapter oadp = new OleDbDataAdapter("select * from [乘用车$]", ocn);
table = new DataTable();
oadp.Fill(table);

int len = table.Rows.Count;
int page = len / pagesize + 1;
if (len % pagesize == 0)
page--;
for (int i = 0; i < page; i++)
{
PageControl(table, i);
}
sw.Stop();
Response.Write(sw.ElapsedMilliseconds);
}

private void PageControl(DataTable table, int page)
{
int start = (page) * pagesize;
int end = (page + 1) * pagesize;
if (end > table.Rows.Count)
end = table.Rows.Count;
SqlDataAdapter da = new SqlDataAdapter("select top 0 * from pcar", "server=.\\sqlexpress;database=car;uid=sa;pwd=lyk");
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(da);//这句很重要
DataSet ds_xls = new DataSet();
da.Fill(ds_xls);

DataTable dt = ds_xls.Tables[0];
for (int i = start; i < end; i++)
{
dt.Rows.Add(table.Rows[i].ItemArray);
}
da.Update(dt);//在此处更新数据
}//测试结果是:927488条,443s 和35640条,13s 差不多,大概是1s3000条不到
w87875251l 2011-01-17
  • 打赏
  • 举报
回复
我刚做了个查询,1000w就超时了,囧
gongsun 2011-01-17
  • 打赏
  • 举报
回复
楼主的重点在哪里?

数据上传? 那就按p哥的,快递邮寄光盘,10来块钱,1个月1次。

数据查询? 多少人使用,如果就几个内部员工, 你就随便搞搞吧。

如果N个人用,你就架服务器群吧。。。
一克代码 2011-01-17
  • 打赏
  • 举报
回复
用索引 和存储过程
lw402365015 2011-01-17
  • 打赏
  • 举报
回复
对于这种数据量特大的 还是用桌面应用程序吧
fendouaj 2011-01-17
  • 打赏
  • 举报
回复
1.首先要优化你的数据库设计
2.对表进行分区,建立索引等优化
3.最好是分批次上次
4.查询的时候设置筛选条件,优化查询
极地_雪狼 2011-01-17
  • 打赏
  • 举报
回复
分区 索引
liaoyukun111 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 maco_wang 的回复:]
3千万数据是一个表3000w,还是一共3000w?

建立合理索引,表分区。
[/Quote]
现在一共有3000W 后面还有每年加1000W
雨网科技 2011-01-17
  • 打赏
  • 举报
回复
个人觉得要分档,根据自己分的档 自动创建不同的表,在去搞,一个表有几百万条数据库 就要分了,这样你就不用管了,根据分档数据库建好查询优化就好了
wanghua_hot 2011-01-17
  • 打赏
  • 举报
回复
你非得一次性都查出来啊 ....
子夜__ 2011-01-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp1234 的回复:]

一个月上传一次,用快递寄送光盘就行了。
[/Quote]



索引 分布比较好。或者弄个临时表。
每天上传一点儿。
这样不就减轻负担了么。
  • 打赏
  • 举报
回复
一个月上传一次,用快递寄送光盘就行了。
ruolins 2011-01-16
  • 打赏
  • 举报
回复
liffe 2011-01-16
  • 打赏
  • 举报
回复
数据量不小呀。。。
叶子 2011-01-16
  • 打赏
  • 举报
回复
3千万数据是一个表3000w,还是一共3000w?

建立合理索引,表分区。
whb147 2011-01-15
  • 打赏
  • 举报
回复
还有就是预处理

whb147 2011-01-15
  • 打赏
  • 举报
回复
很多数据能归档就归档,那样就节省很大的空间了
z289830131 2011-01-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]

不是单靠软件就能解决的,需要先在物理结构上有一个合理的解决方案
优化数据库设计和语句,建立索引。分区和分页查询
分布式
[/Quote] ++
风骑士之怒 2011-01-15
  • 打赏
  • 举报
回复
分区 索引,别的暂不知
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧