日期:2014-05-18  浏览次数:20460 次

业务报表设计和调优问题
主要是一个电信业务的系统,有一个业务报表的数据库,里面存放聚合信息,用来计算KPI指标。从各个维度计算成功率,失败率,下载速率之类的指标。前端报表调用写好的存储过程,将结果返回生成业务报表

现在有几个问题:

数据库里面的表,没有主键,没有索引。各个表都类似(date,Tel-phoneNumber,Dlinksize,uplinkesize,successRate,FaileRate,duration)的结构。这样带来的结果是无法用复制分发功能做读写分离,所有的查询都是表扫描,当数据达到1000w(一般1-2周左右时间)的时候效率无法让人接受。

前端报表里面一个页面可能会调用一个存储过程多次,因为展示的报表模式不一样(比如用一个统计要同时展示柱图和饼图,用得是用一个存储过程返回的结果,但是要执行2次)

现在我暂时的解决办法是根据调用的存储过程脚本先给表加上非聚集索引。因为这些表在现场会每小时插入大量数据,所以加identity-ID做主键的方法会造成频繁锁表

请问下各位有设计经验的大拿们:1)这种插入查询都很多的报告表如何更改下设计 2)有无好的办法是解决前端调用多次调用同一个存储问题

------解决方案--------------------
调用存储过程的结果不是一个记录集么,如果是相同的,为什么要调用两次呢?直接使用上次调用结果不行吗?