我们知道,SSAS是SQL Server 2005数据库中的用于BI的组件,通过SSAS可以创建多维数据库,并在之上进行数据挖掘操作。本文我们就对SSAS工作时遇到的一些问题进行了总结,接下来我们就来一起了解一下这部分内容。
事实表dim_BasicProbe->维度dim_System->维度dim_SystemType 呈雪花型关联,但事实表dim_BasicProbe仍然与维度dim_SystemType直接关联,因为如果不直接关联要查某个系统类型的BasicProbe数据时,必须先查询出System,从而查询出BasicProbe,性能有所损耗。所以雪花型关联慎用。
数据仓库(sql server)中表之间没有外键关联,到设计ssas时才在数据源视图中设计外键关联,即在程序逻辑中控制。不管是不是BI,只要是大数据量的应用程序,都不会在存储方(如sqlserver)建立外键关联,因为如果在存储方设置外键,当数据量达到上百上千万时,性能相当低。
问题描述:为什么在一个事实表中,已经有os字段(非外键关联)用于描述操作系统,又要有osId字段(外键关联os维 度)?
答案:一般如果单单在SQLDB数据库里面查数据的,是尽量不要用关联查询的,关联查询太慢,如果在cube里面那倒没什么问。即是说os字段用于直接在SQLDB数据库里面查询数据库,为了提高性能直接放在事实表中,免去关联查询。而osId用于在cube中进行关联,体现多维。所以既要有os字段也要有osid字段。在接触的项目中,这种做法相当普遍。
优化小点:
数据存储时可以考虑适当的数据冗余,以减少数据库表之间的链接操作,提高查询效率。
不要在一句sql里再三地使用相同的函数,浪费资源,将函数结果放在变量里以便重复调用。
将量少的数据考虑放在程序中的常量或者xml文件中。
select的时候只返回需要的字段,而不是select *。
关于利用SSAS创建多维数据库、设计数据仓库以及性能优化方面的总结就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】
- SQL Server 2005数据库nolock使用详解
- SQL Server 2005无法连接到本地服务器的解决
- SQL Server如何查询当前服务器有多少连接请求
- SQL Server通过整理索引碎片和重建索引提高速度
- SQL Server 2008安装无法通过性能计数器一致性的解决