社区
C#
帖子详情
...........挑战数据库查询和文件读写极限......
hzhxxx
2007-01-16 04:58:11
...........挑战数据库查询和文件读写极限......
需要把数据库中一个数据表 3600W 条记录读出,写成一个 txt 文本文件
一条记录对应 txt 文件中的一行数据,有什么比较快的方式
1. 目前我准备每次取出100 条记录后通过(每次最多取这么多) 异步IO 的方式把数据写入
文本文件,这样我也需要 循环 36000次,每次就算0.5秒,但是这样初步计算了一下,大致
也要5 个小时啊,客户没法答应,怎么办
...全文
337
11
打赏
收藏
...........挑战数据库查询和文件读写极限......
...........挑战数据库查询和文件读写极限...... 需要把数据库中一个数据表 3600W 条记录读出,写成一个 txt 文本文件 一条记录对应 txt 文件中的一行数据,有什么比较快的方式 1. 目前我准备每次取出100 条记录后通过(每次最多取这么多) 异步IO 的方式把数据写入 文本文件,这样我也需要 循环 36000次,每次就算0.5秒,但是这样初步计算了一下,大致 也要5 个小时啊,客户没法答应,怎么办
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hzhxxx
2007-01-18
打赏
举报
回复
/*
WriteFileTest()
{
Console.WriteLine(DateTime.Now.ToString());
FileStream fStream = new FileStream("c:\\bb.txt",FileMode.Append);
const int length = 1024 * 6;
StringBuilder strvalue = new StringBuilder();
//Console.WriteLine("read start" + DateTime.Now.Millisecond.ToString());
for(int i = 0; i < 70000;++i)
{
for(int k = 0;k < 100;++k)
{
strvalue.Append(i);
strvalue.Append(";11");
strvalue.Append(";22");
strvalue.Append(";ggg");
strvalue.Append(";fffff");
strvalue.Append(";aaaa");
strvalue.Append(";22");
strvalue.Append(";ggg");
strvalue.Append( ";fffff");
strvalue.Append(";发大幅度");
strvalue.Append(";aaaa");
strvalue.Append( ";fffff");
strvalue.Append(";发大幅度");
strvalue.Append("\r\n");
}
//Console.WriteLine("read end" + DateTime.Now.Millisecond.ToString());
byte[]ImageContent = System.Text.Encoding.Default.GetBytes(strvalue.ToString());
//Console.WriteLine("write start" + DateTime.Now.Millisecond.ToString());
fStream.Write(ImageContent,0,ImageContent.Length);
//Console.WriteLine("write end" + DateTime.Now.Millisecond.ToString());
strvalue.Remove(0,strvalue.Length);
}
fStream.Close();
Console.WriteLine(DateTime.Now.ToString());
}
经过测试,这段代码的运行速度是最快的,写一个 477M 的文件耗时25s,效率的
瓶颈是内部的100次循环,组装字符串,IO 写操作非常快
各位看还有什么优化的措施
*/
hzhxxx
2007-01-17
打赏
举报
回复
经过测试 ,做 70000 次循环,每次循环里面再 100 次循环(模拟取数据),
使用 stringbuilder 预先开 1024 * 128 k 内存,循环使用这段内存,
最终写到一个文本文件。
同步模式: 25s,异步模式 26m,文件大小 为 477431KB,测试结果表明同步比异步快,
单线程模式
bitpolar
2007-01-16
打赏
举报
回复
这也算极限???
0.5秒执行一次也太慢了吧
一般服务器(我们公司服务器大致2W块钱左右)通过WebService执行登录大约支持1000次/秒
hzhxxx
2007-01-16
打赏
举报
回复
部署数据库备份一类的,导出的数据还要加工处理,比如说某个字段是值 1 写入文本文件是 正确,2 写入是错误
hzhxxx
2007-01-16
打赏
举报
回复
不能到数据库上操作,一定是需要调用别人的存储过程(别人提供的方法),所以每次才能得到100 条记录的限制,这个是无法改变的了
runrunrun
2007-01-16
打赏
举报
回复
用bcp命令
mobydick
2007-01-16
打赏
举报
回复
数据库图标上点右键->所有任务->导出数据
TheRule
2007-01-16
打赏
举报
回复
直接从数据库导出为一个txt文件不行吗?
joleo
2007-01-16
打赏
举报
回复
这个txt还打得开吗?
*****************************************************************************
http://www.poge.com.cn
三省Ta叔
2007-01-16
打赏
举报
回复
执行一次需要那么久吗?那不干脆找个打字的敲进去
数据库性能基准测试 DB-Webbench.zip
数据库性能基准测试 DB-Webbench ,Webbench 是一款数据库性能基准测试程序,模拟博客真实应用对数据库所做操作进行性能测试。不单单...
面试题高并发和大流量解决方案篇.pdf
面试题高并发和大流量解决方案篇
官方版_pgxc-v1.2.1.tar.gz
pgxc-v1.2.1.tar.gz
软件测试葵花宝典!练就此功,
非常实用,帮助你更快应对行业面试,相信你看了之后,不会后悔你的选择
C#
111,120
社区成员
642,538
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章