none
业务报表设计和调优问题 RRS feed

  • 问题

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

    现在有几个问题:

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

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

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

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


    凡人有庸俗的快乐,智者有高尚的痛苦
    2011年11月15日 3:13

答案

  • 1. try use merge replication to replicate tables to reporting server, you can add indices on reporting server.

    2. you can store sp results to staging table so don't have to run sp multiple times.

    • 已标记为答案 Vincent-Z 2011年11月16日 4:04
    2011年11月15日 3:37
  • 既然是聚合的了,就相似于DW了。。。建好足够的索引,通常以日期聚集索引,再以其他TELNO等建包含覆盖索引
    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    • 已标记为答案 Vincent-Z 2011年11月16日 4:04
    2011年11月16日 2:31

全部回复

  • 1. try use merge replication to replicate tables to reporting server, you can add indices on reporting server.

    2. you can store sp results to staging table so don't have to run sp multiple times.

    • 已标记为答案 Vincent-Z 2011年11月16日 4:04
    2011年11月15日 3:37
  • 确认一下,

    1)合并发布上同步的表不需要主键吗?

    因为之前只用过事物发布,发布服务器上面复制的表要求都有主键。之前做得事物发布也是采取将查询相关的索引建在订阅服务器上

    2)也考虑过临时表的方式,但是前端报表可能有多用户在使用,然后根据用户实时选择的条件(主要是时间段)调用存储过程,存储过程中封装的也是查询脚本。所以多用户的条件下临时表这个方法应该行不通。

     


    凡人有庸俗的快乐,智者有高尚的痛苦
    2011年11月15日 3:49
  • 1. merge replication doesn't require pkey but needs uniqueidentifier column.

    2. possible to name staging table with session specific info dynamically?

    2011年11月15日 4:30
  • 合并复制的方式我去试一下,但是想看看有没有更改表结构的方法。因为对于百万到千万的数据,没有索引(尤其是没有聚集索引)效率实在地低下

     


    凡人有庸俗的快乐,智者有高尚的痛苦
    2011年11月15日 6:37
  • 既然是聚合的了,就相似于DW了。。。建好足够的索引,通常以日期聚集索引,再以其他TELNO等建包含覆盖索引
    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    • 已标记为答案 Vincent-Z 2011年11月16日 4:04
    2011年11月16日 2:31
  • 多谢大家的帮助  我在去服务器上实验一下 看看结果如何
    凡人有庸俗的快乐,智者有高尚的痛苦
    2011年11月16日 4:04