社区
数据库相关
帖子详情
简单的程式,海量的数据,速度问题求解!
jay_lizj
2009-10-30 03:16:05
加精
系统要求扫描产品的条码,保存进数据库,条码不能重复。
系统很简单,但每天的数据量非常大,基本要7万条/天,所以当数据总量达到200万的时候,系统插入记录时就会非常慢,我目前的检查重复是通过设置条码栏位为唯一索引,在程式中捕捉sql返回的错误来判断,这样比传统的用语句判断是否唯一已经快很多,但在数据量大时还是十分缓慢。数据库采用的sql2000.现在没办法只能定期转移数据,实在是非常麻烦。
请教是否有更好的方法处理,谢谢!!!
...全文
1611
104
打赏
收藏
简单的程式,海量的数据,速度问题求解!
系统要求扫描产品的条码,保存进数据库,条码不能重复。 系统很简单,但每天的数据量非常大,基本要7万条/天,所以当数据总量达到200万的时候,系统插入记录时就会非常慢,我目前的检查重复是通过设置条码栏位为唯一索引,在程式中捕捉sql返回的错误来判断,这样比传统的用语句判断是否唯一已经快很多,但在数据量大时还是十分缓慢。数据库采用的sql2000.现在没办法只能定期转移数据,实在是非常麻烦。 请教是否有更好的方法处理,谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
104 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
woshixinghuo
2010-07-11
打赏
举报
回复
haohao xuexi ya
huobr
2009-11-11
打赏
举报
回复
[Quote=引用 85 楼 dd_zhouqian 的回复:]
条形码基本对每个商品都是唯一的,也可能一个商品有多个条形码,
每天7W,也就是7W种商品。
30天210W,也就是210W种商品。
[/Quote]
如果是商品的条码,我在想什么行业每天都有这么多种新商品交易?
ERR0RC0DE
2009-11-06
打赏
举报
回复
楼主应该将表设计(结构,索引,[不会还有触发器吧?]写出来,
然后再写些关键代码(怎么insert表)贴出来让大家分析,而不是靠大家猜。
yjsyyy
2009-11-06
打赏
举报
回复
数据库索引可以使查询变快,但会让插入变慢,数据量大时影响更大。
所以应该把查询和插入分开,建缓冲表应该是个好办法:
缓冲表和持久表都按条码建索引
在缓冲表中只放一天的数据,新数据都插入缓冲表(数据量小,插入快),插入前按‘缓冲表、持久表’的顺序判断重复
每天在数据库服务器空闲时将缓冲表数据转入持久表(耗时操作在后台执行)
查询时综合两张表
还有一个办法就是分区了,分区其实就是:
将所有记录按条码的前n(需规划n的值以控制分区大小及数据量均衡)个字符分类,分别放在多个分区(分表)中,插入或查询时先按前n个字符确定分区(分表),然后再在小数据量的分区(分表)中操作。
patckchen
2009-11-06
打赏
举报
回复
1.一秒之内都应该可以接受
2.并发输入在30台电脑左右
3.数据库服务器的配置志强2.8双核CPU两个,内存2G
4. 条码不能重复是指表中任意时期记录的条码都不能重复
5. 应用系统是局域网
可以开sql跟踪,看慢在哪里啊,cpu,IO,哪里慢解决哪里问题
数据库服务器CPU足够了, 条件允许的话再加2G内存, 硬盘加满;
如果有6个硬盘1,2硬盘RAID1(操作系统,数据库软件); 3,4,5,6硬盘RAID10; 数据库文件放在RAID10盘上
如果有8个硬盘1,2硬盘RAID1(操作系统,数据库软件); 3,4硬盘RAID10(数据库使用文件组,放索引文件);
5,6,7,8硬盘RAID10放数据文件
操作系统和数据库可以升级到X64版本,数据用sql server 2005或2008版本
定期做碎片整理及重建索引工作;
数据记录的表用条码字段做主键,聚集索引,如果要写入快表的索引尽量少.
是否对表分区看具体应用了,条码字段是全局索引,如果只考虑对条码字段唯一性,分区没什么意义.
写表使用存储过程.
你的这种要求insert的sql也能满足,使用绑定变量方法,减少sql的解析时间.
aassdd
2009-11-05
打赏
举报
回复
看完了。学习中,幸好没用sqlserver2000搞这种大数据量。
阿三
2009-11-05
打赏
举报
回复
写个存储过程,用这个去判断,然后客户端去调用。
hehaiyi2008
2009-11-05
打赏
举报
回复
[Quote=引用 75 楼 zyxip 的回复:]
先检查程序,将和这个表有有绑定的数据感知控件全部去掉。
在估算一个数据的最大量,总不至于每天七万,无限的增加下去吧
将条码的长度保存起来,先用条码的长度进行过滤,如果80%以上的长度都是一个长度,则不用这个方法
将条码中的偶数个数保存在一个独立的数字字段中,先进行比较,应该先能排除一半
将条码的最后几位数据独立保存在一个数字字段中,先进行比较,数字比较速度应该比字段比较快
在根据业务看是否能用时间来划分,每天或每周,每月建立一张表
增加一int类型的主键。撤销条码的主键。
总的原则是将数据分类来查,不要每将都在一大堆中查找,就象在书店一样,可以按出版商,按书类型进行
书架分类,然后找书的时间才能快速定位。
[/Quote]
losehum
2009-11-05
打赏
举报
回复
[Quote=引用 3 楼 sz_haitao 的回复:]
7万条/天,每次是多少条,如果多的话,插之前先批量查询是否有重复,没有就批量插入,有重复就先剔除重复的,再批量插入
不过,估计慢在插入后的索引维护上,分区表可以减低维修开销
[/Quote]
统一, 存在索引的话, 绝对的太浪费时间. 如果只是想讲所有条码在数据库中不重复存在, 那干脆直接先把所有索引,外键等删除, 然后等数据全部进入后, 在去重复, 重建索引.
lhslktg
2009-11-05
打赏
举报
回复
h
Yizero
2009-11-04
打赏
举报
回复
很热闹,进来学习一下!
lw_China
2009-11-04
打赏
举报
回复
如果其他地方没问题的话
我认为瓶颈就在比较的过程。
那么是不是可以这样:
1.在做比较的时候统计每一个条形码的重复次数。
2.将经常重复的条形码(比如说前20W个)拿出来做
第一次比较,不重复再进行后续比较。
PS: 当然,如果条码的重复数分布很平均的话,这个方法无效。
dd_zhouqian
2009-11-04
打赏
举报
回复
条形码基本对每个商品都是唯一的,也可能一个商品有多个条形码,
每天7W,也就是7W种商品。
30天210W,也就是210W种商品。
爱技术的山野村民
2009-11-04
打赏
举报
回复
1、楼主的应用场景描述不够清晰。
2、条码建主键索引,使用捕捉sql错误还做程序错误处理,都是正确的。
分析:
3、你的数据每天7万,那么按月分表是可以做的。
检查过你的数据库主机性能没?忙的时候消耗CPU多少、内存多少,是否满足应用需要?
有多少程序在并发处理这个表,是否有锁表的产生,都要看看。
4、我在工作中应用的都是千万级以上的数据,并发的用户量很多,当然数据库主机也很强劲(IBM16CPU,32G内存)。你的问题该不难解决。
jin20000
2009-11-04
打赏
举报
回复
关注
贝隆
2009-11-04
打赏
举报
回复
学习
wzpwork
2009-11-04
打赏
举报
回复
数据库索引查询快,但会影响插入速度,它有两面性。
在内存中实现一个HASH。现在的服务器都四个G以上的内存,每天7万记录没问题。
检查时从内存HASH中查询,插入时存到数据库中,按月建表。一个月下来也只有向几千万的记录。
evenfun
2009-11-04
打赏
举报
回复
在SQL2000中,几百万条数据是不算多的,
如果产品条码是主键或者有索引的话,
查询的速度应该是很快的.
我做过测试, 在五千万条数据中检索一条(where条件是主键或者是索引,用的是"=")
时间不会超过几百毫秒.
你的表是不是索引过多.请确认.
建议先检索是否存在,然后再插入.
不会出现那样的问题
cuidenghong123
2009-11-04
打赏
举报
回复
学习
flowingdream
2009-11-04
打赏
举报
回复
mark & ding.
加载更多回复(82)
【发车优化】基于改进蚁群算法
求解
列车发车优化
问题
附Matlab代码
基于改进蚁群算法的列车发车优化
问题
建模:将列车发车优化
问题
抽象为一个图论模型,其中车站作为节点,列车运行路径作为边。定义列车发车优化
问题
的目标函数,即最小化列车运行总时间。确定列车发车优化
问题
的约束条件,包括列车运行时刻、列车运行
速度
、车站停靠时间等。改进蚁群算法的具体步骤:初始化蚁群算法,包括蚁群规模、信息素浓度、启发因子等参数。构造蚁群算法的解空间,即所有可能的列车发车方案。定义蚁群算法的转移概率函数,即蚂蚁选择下一条路径的概率。更新蚁群算法的信息素浓度,即蚂蚁在路径上留下的信息素数量。
【VRP
问题
】基于免疫优化遗传算法
求解
考虑续驶里程、额定载重量、数量、起始点和带时间窗的电动汽车配送最小成本路径规划EVRP
问题
附Matlab代码
电动汽车配送最小成本路径规划 (EVRP)
问题
是一种复杂的组合优化
问题
,涉及考虑续驶里程、额定载重量、数量、起始点和带时间窗等因素的配送路径规划。本文提出了一种基于免疫算法 (IA) 的方法来
求解
EVRP
问题
。该方法将 EVRP
问题
编码为抗原,并使用免疫算法进行进化计算,以寻找最优解。实验结果表明,该方法能够有效地
求解
EVRP
问题
,并获得较好的解。
基于改进蚁群算法
求解
列车发车优化
问题
附Matlab代码
基于改进蚁群算法的列车发车优化
问题
建模:将列车发车优化
问题
抽象为一个图论模型,其中车站作为节点,列车运行路径作为边。定义列车发车优化
问题
的目标函数,即最小化列车运行总时间。确定列车发车优化
问题
的约束条件,包括列车运行时刻、列车运行
速度
、车站停靠时间等。改进蚁群算法的具体步骤:初始化蚁群算法,包括蚁群规模、信息素浓度、启发因子等参数。构造蚁群算法的解空间,即所有可能的列车发车方案。定义蚁群算法的转移概率函数,即蚂蚁选择下一条路径的概率。更新蚁群算法的信息素浓度,即蚂蚁在路径上留下的信息素数量。
【微电网】基于非支配排序的蜣螂优化算法NSDBO
求解
微电网多目标优化调度附MATLAB代码
微电网是一种分布式发电系统,具有分布式、可再生、低碳等特点。微电网的多目标优化调度
问题
涉及经济性、可靠性和环境保护等多方面的目标,是一个复杂的多目标优化
问题
。本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO)
求解
微电网多目标优化调度
问题
。该算法融合了非支配排序和蜣螂优化算法的优点,能够有效地
求解
微电网的多目标优化调度
问题
。
工业大
数据
分析指南材料整理
工业大
数据
分析指南
数据库相关
2,497
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章