none
求教OLTP高并发数据库设计 RRS feed

  • 问题

  • 感谢进来朋友查阅此帖:

    工作流的数据表,数据表里存储的是工作流里每个节点的任务数据,流程节点间的关系比较复杂,非1对1的关系,还有错综复杂的优先级需求

    常规思路是一张工作流任务表,有流程节点的字段,节点状态字段等。

    任务表数据量上限10条。

    500个人,每人平均1秒3次完成领取任务->工作->提交任务整个过程。(非高峰时期,这个过程是全天都是这样的频率)

    常规思路情况是领取时,把领取到的记录标记状态为:已领取,一次select优先级排序查找最需要领取的,一次update标记数据的状态为:已领取。

    然后工作完成后提交任务,一次update所提交任务的状态为:已完成,一次update下一节点的任务为:可领取。

    测算一下500*3,每秒1500次领取任务到提交任务的过程,每次过程完成需要经历一次select和2次update。

    也就是说单张数据表每秒1500次select和3000次update。

    在这个过程中还会时不时的有新的流程任务会新增至该表,而且考虑到不断新增的流程任务还需要根据固定规则删除或转存已彻底完成的流程任务。

    这么设计并发问题好像Hold不住,请教各位大神可有什么好的思路解决?

    2014年12月18日 10:00

全部回复

  •  并发量不是都分析的很清楚了嘛。。一天24小时,不停的都是那么个并发量,每秒钟的并发量都是那样均衡。

    采用队列的方式控制,数据库的记录也得更新啊,那到头来还是得从数据库的设计方案上下手来做优化。

    Sqlserver最大的并发量32747那个说的是连接数吧,如果32747同时去操作一个数据表,并且每次操作都要进行增删改查行为,Sqlserver妥妥的死机,死锁,死表等等。

    2014年12月22日 8:04