Foxtable(狐表)用户栏目专家坐堂 → 再提“大容量数据”的问题


  共有15530人关注过本帖树形打印复制链接

主题:再提“大容量数据”的问题

帅哥哟,离线,有人找我吗?
reachtone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
再提“大容量数据”的问题  发帖心情 Post By:2009/11/12 9:36:00 [只看该作者]

    昨天去给客户搞了大半天的数据迁移,老数据都已经移植到新库中了。其中,基础数据表的记录已经达到近150万条。
    现场用后台分组或交叉统计给客户测试了一下,瞬间即可得到结果,客户非常满意;加上随手即得的图表,统计这块没的说了!
    但是,在查询明细数据时,有个问题:只要数据超过8-10万条,系统性能就会急剧下降。关于这一点,我也早就预料到了,毕竟占用内存太大了嘛。因此,我在项目中专门设了个“关闭查询表”按钮,用于将窗口中的table重新fill成空记录。但是,尽管如此,项目操作还是很“卡”。
    刚才我一直想在这块进行改进,还发现:如果在窗口的table中加载过10万条以上的记录,再打开该窗口进行设计时,写代码都开始“卡”了。按说,该窗口重新打开后,原来的table已经自动销毁了,为什么还会这样呢?
    请老六考虑个办法,看看怎样才能彻底“关闭表”、以提高项目运行效率。
    还有就是,加载大容量数据时,等待时间太长,这点能否也考虑改进一下。我之前建议过“分页”方式,如果此方法不可行,能否借鉴一下BDB的做法。这个软件最初采取的就是一次全部加载方式,打开超大表时简直无法忍受;改进以后,就能马上看到数据、同时也有加载进度提示了,界面很友好。这是下载地址,请参考一下:http://www.bainsoft.com
    如果这个问题能解决,大家再测试我那个远程数据库时,查询过程就不会再有漫长的等待了。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/11/12 9:40:00 [只看该作者]

1、没必要加载10万行的
2、.net都是延迟销毁的
3、可以自己设计分页的:

http://www.foxtable.com/dispbbs.asp?boardid=2&Id=4949

在这个帖子的8楼
[此贴子已经被作者于2009-11-12 9:42:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/11/12 9:47:00 [只看该作者]

以下是引用狐狸爸爸在2009-11-12 9:40:00的发言:
1、没必要加载10万行的
2、.net都是延迟销毁的
3、可以自己设计分页的:

http://www.foxtable.com/dispbbs.asp?boardid=2&Id=4949

在这个帖子的8楼
[此贴子已经被作者于2009-11-12 9:42:21编辑过]

呵呵,已经看了,那个代码很好,正在研究。
但客户有时是需要查询这么多数据的。


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/11/12 9:49:00 [只看该作者]

还是建议老六能参考一下bdb的数据加载方式,取人之长可以让foxtable更完美,呵呵。

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/11/12 12:01:00 [只看该作者]

客户想要加载100多万行,无非是想要查询统计一些数据。

最常见的查询数据是:某月某品种的量、某月某客户的量等。


你可以将这些统计结果保存在“统计表”中,直接调用就行了。因为历史的数据是不会变化的,有结账控制。

这样,所有的明细数据你就可以不加载了,在运行以后根据需要加载,比如你一定要查询某一条记录,你就用SQL查询吧。

还有一个建议:将你的那100多万条数据分一下期间,一年一个数据表。


 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/11/12 12:18:00 [只看该作者]

以下是引用wcs在2009-11-12 12:01:00的发言:

客户想要加载100多万行,无非是想要查询统计一些数据。

最常见的查询数据是:某月某品种的量、某月某客户的量等。


你可以将这些统计结果保存在“统计表”中,直接调用就行了。因为历史的数据是不会变化的,有结账控制。

这样,所有的明细数据你就可以不加载了,在运行以后根据需要加载,比如你一定要查询某一条记录,你就用SQL查询吧。

还有一个建议:将你的那100多万条数据分一下期间,一年一个数据表。

同感,如果一年的数据量还很大,那就改成半年一个数据表,并按月份或季度做成统计表


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/11/12 12:26:00 [只看该作者]

以下是引用yangming在2009-11-12 12:18:00的发言:

同感,如果一年的数据量还很大,那就改成半年一个数据表,并按月份或季度做成统计表

呵呵,没有必要的,sql数据库上千万条数据都没问题。
客户查询明细数据,出个几万条很正常。正在研究分页,这个问题也会解决的。


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/11/12 12:30:00 [只看该作者]

以下是引用hnaysx在2009-11-12 12:24:00的发言:

提议:是否可以边加载边显示,比如加载了1万行就先显示1万行,然后继续在显示的过程中继续加载,继续显示。

bdb就是这么处理的。不知老六会否参考一下这样的做法。
bdb是个很棒的数据库管理工具,在没用foxtable之前,我都是用它管理数据库的。虽然网站是英文的,但软件是中文的。您可以下载一个试用看看。
非常希望老六能参考一下。

[此贴子已经被作者于2009-11-12 12:31:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟foxtable
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/11/12 12:42:00 [只看该作者]

以下是引用reachtone在2009-11-12 12:30:00的发言:

bdb就是这么处理的。不知老六会否参考一下这样的做法。
bdb是个很棒的数据库管理工具,在没用foxtable之前,我都是用它管理数据库的。虽然网站是英文的,但软件是中文的。您可以下载一个试用看看。
非常希望老六能参考一下。

[此贴子已经被作者于2009-11-12 12:31:51编辑过]

图片点击可在新窗口打开查看似乎可以用来进行数据库建模?

[此贴子已经被作者于2009-11-12 12:42:02编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/11/12 12:42:00 [只看该作者]

没必要这么复杂的,关键不是加载速度,而是超过一定行数后处理速度下降。
有了动态加载、分业加载,后台统计,没有什么难度的了,啥任务不能处理啊。

我做成这样的了,加载第三页,每页10行:


DataTables("订单").LoadTop = "10"
DataTables("订单").LoadPage = "3"
DataTables("订单").LoadOrder = "[_Identify]"
DataTables("订单").Load

[此贴子已经被作者于2009-11-12 12:43:06编辑过]

 回到顶部
总数 17 1 2 下一页