现在有一个中间表需要设计,由系统A负责插入数据,由系统B负责取出数据处理并删除。 1,由于不知道A系统何时插入数据,所以删除只能用delete,这会导致表空间一直在增加。 2,这个中间表需要加索引么,如果加索引,频繁dml操作会造成该表查询效率变慢。 B系统的设计是这样的 之前做测试的时候,如果给中间表加索引,B系统启动2个小时左右存储过程就阻塞了,没有异常,只是不停的调用存储过程pro1但是没有任何返回结果,也就是没有对中间表做相应的处理,这里初步怀疑是由于加了索引,并频繁的dml操作,导致 之后我把索引删除了,不出所料,比之前跑的时间长了,B系统跑了7,8小时都没问题,可是第二天还是出现了之前的问题, 这里提一下,测试环境是为了测试峰值,插入速度是非常快的,平均每秒30-50条记录,项目实际情况不会有这么大的负担。 |
|
看的头疼 楼主可以把这个发到数据库论坛去
|
|
推荐使用消息队列中间件
|
|
30分 |
对于 这种 多个系统 频繁操作 某一个中间表的设计 本身 应该以业务为主,不一定 非要数据库,也可以把这个频繁操作 转移到程序中处理,或者 用缓存+消息队列来解决 数据库中间表本身频繁DML的局限性。
若非要用 中间表+存储过程来处理,那么有些比较通用的模式可以提供: 1,不要建立索引,索引目前对于更新力度不大的 海量查询比较有用, |