架构设计中关于配置项放在哪里?

    近期看数据库吓了一跳,负载是以前的3倍。8点到12点有一条SQL执行了两千万次,占用数据库负载30%。我看了以前的数据库报告,次数也是上千万次,不过平均执行时间是0.00s,现在变成0.01s。就是这么一点点变化导致高峰期数据库CPU从50%上升到80%,这是一个巨大隐患,这条SQL正是系统读取配置项的操作。如果这条SQL从0.01s变为0.02s,完全有可能,因为配置表是不断在增加的。

    要各开发组查找,发现完全不行,有很多代码调用,查循环调用可操作性太差,从数据库层面上可以看到一些绑定变量的信息,不过要执行很多次:

select value_string,count(1)
  from dba_hist_sqlbind s
 where sql_id = 'caxnkstk3wk65'
 group by s.value_string
 order by count(1) desc;

   经过一番努力,终于找到两个功能用了spring AOP查配置项。第一个功能是记录请求记录,每次都要读取配置项对请求过滤。第二个功能是对流程的监控,流程上报,撤回都会查一下配置项。这样的功能需求无论配置项在数据库中,还是在内存数据库(coherence或redis)中,都是不可承受之痛。

    优化建议:这两个功能非业务功能,是审计功能,完全没有必要每次都读取,配置项写到xml文件中,可以采取热加载。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值