设为首页 收藏本站
查看: 835|回复: 0

[经验分享] SQL Server 空间换时间的数据库设计

[复制链接]

尚未签到

发表于 2015-6-29 15:01:02 | 显示全部楼层 |阅读模式
  我们的系统中很常会用到SMS、Email等的发送,在我们的设计中通常会创建一个Tb_outbox表,当产生数据时,插入到Tb_outbox表,由定时器去读取Tb_outbox的数据进行发送,发送完了再修改Tb_outbox的发送状态。是的,这就是通常的做法,但是当我们的SMS、Email的发送频率和数量足够大的时候,我们的系统就会出现性能、表被锁等问题。那我们如何是好呢?
  下面的设计的一个思想就是如标题所述:空间换时间。就个人而言,我感觉这个描述更加贴切:对象的职责分离,把Insert、Update、Delete等分离在不同的表中。废话不多说,下面就来看看这个设计图:

DSC0000.jpg
图:逻辑图  
  Tb_NotSent_buffer:待发送短信缓存表(即时清理).

  • 该表是为了避免应用过多对Tb_NotSent同时操作产生锁表情况。
  • 主要考虑到产生待发短信的逻辑通常会比较复杂,或者长事务。
  • 一次性将已经在buffer表里的短信insert到Tb_NotSent,这次插入没有长事务计算,由一条insert from select完成。
  • 该表并非一定用到,视乎产生待发短信的逻辑的事务复杂度,和量而定。
  Tb_NotSent:待发送的短信(会被定时清理)

  • 会将该已经发送的短信的处理结果存储在jms消息队列里。
  • 把这些数据从Tb_NotSent copy到Tb_outbox同时,插一条记录到Tb_Sent.这样作是为了下一步删除Tb_NotSent里已经发送的信息.同时又不因为删除而锁Tb_NotSent表(应用使用)
  • 使用空间换时间的思想,减少对同一张表(Tb_outbox)的过多操作和过程时间的操作,导致锁表出现系统瓶颈。
  Tb_outbox:存储历史记录的主表,该表需建立在独立的数据库。

  • 减少备份文件大小,可灵活调整,大大减少备份空间的需求。
  • 减少对主数据库的影响。
  Tb_Sent:一个参照表,为删除Tb_NotSent表做基表

  • 已经发送短信(会定时清理),存放已经被网关处理的短信(发送成功或者失败)。
  • 这个表不一定要保存和Tb_NotSent一样多的字段,也许只要两个字段,那就是ID值和状态值。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81574-1-1.html 上篇帖子: SQL Server数据库表锁定原理以及如何解除表的锁定--示例演示 下篇帖子: 配置 SQL Server Email 发送以及 Job 的 Notification通知功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表