楼主: yulihua49

[讨论] 侃一下关于程序的“柔性”

[复制链接]
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
261#
 楼主| 发表于 2025-10-21 09:51 | 只看该作者
本帖最后由 yulihua49 于 2025-10-21 10:15 编辑
newkid 发表于 2025-10-20 21:57
我就知道你要问这个问题,所以255楼特地举了一个纯内存的例子,估计你看都没看。"其中的USING DUAL看起来有 ...

内存数据是最原始的数据来源,等进了数据库,随便你怎么用。我的想法,最快的把原始数据弄进数据库。
这个速度有个硬指标,必须高于网络传输速度,不允许数据堆积。
此前,他们一直在研究,数据到达太快时,如何排队如何缓冲。我说,后端处理够快时,就不需要那些。
当年就进行了这种测试,到达数据瞬间就被消化,根本用不上缓冲。
当时的数据到达率是每秒2000笔,要求每秒消化5000,我做到了每秒35000,如果采用新方法,预期可以达到50000。
在以前那个帖子说过,一开始,不使用绑定变量单条插入时,每秒1500,还不算处理重复的开销。显然不满足需求。但是,大多数的C程序员懒得使用绑定变量。
使用绑定变量的单条插入达到每秒5000,不包括处理重复记录,也是难以满足需求的。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
262#
发表于 2025-10-21 22:10 | 只看该作者
yulihua49 发表于 2025-10-21 09:46
看了。再请问,insert有没有 不管任何错误的hint?意思是,在一个数组插入时,有错的跳过。

如果是用PL/SQL的FORALL DML, 它可以把异常全部放在一个数组里面。C语言不知道有没有类似机制。但是可以用如下的 DML ERROR LOG功能来忽略错误:

假设要操作的表名为T,先建立一个错误日志表:
exec dbms_errlog.create_error_log (dml_table_name => 'T');

它会自动建立一个名字为ERR$_T的表。这个步骤是一次性的,以后可以一直用。

insert into t values(1,2,3) log errors reject limit unlimited;

所有的DML错误会被收集到ERR$_T表中, INSERT不会报错。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
263#
 楼主| 发表于 2025-10-22 21:03 | 只看该作者
newkid 发表于 2025-10-21 22:10
如果是用PL/SQL的FORALL DML, 它可以把异常全部放在一个数组里面。C语言不知道有没有类似机制。但是可以用 ...

哦,发过去让他们研究研究

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
264#
 楼主| 发表于 2025-10-25 18:06 | 只看该作者
newkid 发表于 2025-10-21 22:10
如果是用PL/SQL的FORALL DML, 它可以把异常全部放在一个数组里面。C语言不知道有没有类似机制。但是可以用 ...

这个方案可以,错误处理有点麻烦。
可以这么办:
工作线程直接进行插入处理,如果出现错误,就提交到另外的错误处理线程,让它慢慢处理。。
工作线程继续处理下一个数据包。这样不耽误数据流。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表