zoukankan      html  css  js  c++  java
  • 当硬件成为瓶颈时怎么提高数据仓库的加载?

       很多公司流行使用数据仓库进行数据分析,一般从线上数据源备库(mirror,logshipping,slave等)抽取到ods 层

    在从ods层到dw再到dm.特别在ods层到dw时,数据的清洗装载需要一定的时间和硬件资源.

    但是当硬件成为瓶颈时,怎么能快速完成清洗转载,及时的提供数据分析?

    下面提供一种方法使用Ssis 加载到 ods层后,直接通过分区表把数据加载到 dw 

    1 准备

    1 /*create filegroup*/
    2  ALTER DATABASE [testxwj] ADD FILEGROUP [account_1]
    3  go
    4  ALTER DATABASE [testxwj] ADD FILEGROUP [account_2]
    5  go
    6  ALTER DATABASE [testxwj] ADD FILEGROUP [account_3]
    7
    8  /*create file to filegroup*/
    9
    10  ALTER DATABASE [testxwj] ADD FILE ( NAME = N'account_1', FILENAME = N'E:\account_1.ndf' , SIZE = 409600KB , FILEGROWTH = 20480KB ) TO FILEGROUP [account_1]
    11  GO
    12  ALTER DATABASE [testxwj] ADD FILE ( NAME = N'account_2', FILENAME = N'E:\account_2.ndf' , SIZE = 409600KB , FILEGROWTH = 20480KB ) TO FILEGROUP [account_2]
    13  GO
    14 ALTER DATABASE [testxwj] ADD FILE ( NAME = N'account_3', FILENAME = N'E:\account_3.ndf' , SIZE = 409600KB , FILEGROWTH = 20480KB ) TO FILEGROUP [account_3]
    15 GO
    16

    2 使用ssis copy table

    1 sp_spaceused accountdetail;

    1
    2 /* delete EarnTime is not null*/
    3
    4
    5 /*23 sec*/
    6 delete from accountdetail where EarnTime is null
    7 /*26 sec*/
    8 delete from accountdetail where isnull(CommitStatus,0)<1
    9 /*12 sec*/
    10 delete from accountdetail where isnull(EarnStatus,0) =0

    对传输过来的表进行分区

    1
    2 /*create partition function*/
    3 declare @bdate char(8),@edate varchar(8),@sql varchar(500)
    4 select
    5 @bdate=convert(char(8),GETDATE()-1 ,112)
    6 ,@edate=convert(char(8),GETDATE() ,112)
    7 select @bdate,@edate;
    8 set @sql='
    9 CREATE PARTITION FUNCTION ac_EarnTime (datetime)
    10 AS
    11 RANGE RIGHT FOR VALUES ( '''+@bdate+''' ,'''+@edate+''')'
    12 execute(@sql)
    13 /*create partition schema*/
    14 CREATE PARTITION SCHEME ac_schema_ac_EarnTime
    15 AS PARTITION ac_EarnTime TO (account_1,account_2,account_3);
    16
    17 /*create partition table */
    18
    19 alter table accountdetail
    20 alter column EarnTime datetime not null;
    21
    22 alter TABLE accountdetail
    23 add CONSTRAINT [PK_PARTITIONmis] PRIMARY KEY
    24 ( id,EarnTime
    25 )ON ac_schema_ac_EarnTime(EarnTime)
    26

    把分区partition 2指向给 dw 值得注意的是 accountdetail_dw 必须跟partition 2 分区所在同一个文件组

    1
    2 /*switch accountdetail to accountdetail_dwl*/
    3
    4 ALTER TABLE accountdetail SWITCH PARTITION 2 TO accountdetail_dw ;
    5
    6 /**/

    整个过程在 5分钟内.数据仓库最重要的还在当初的设计和选型.

  • 相关阅读:
    通过命令修改wampserver的mysql密码
    MOS管(场效应管)导通条件
    JQUERY1.9学习笔记 之属性选择器(二) 包含选择器
    JQUERY1.9学习笔记 之属性选择器(一) 前缀选择器
    JQUERY1.9学习笔记 之可见性过滤器(二) 可见选择器
    JQUERY1.9学习笔记 之可见性过滤器(一) 隐藏选择器
    [forwarding]Android上dip、dp、px、sp等单位说明
    [forwarding]Android 常用控件讲解
    [forwarding] mysql数据库的备份、导入、导出命令,以及数据的导入、导出
    【Make My Eclipse】之 使用正确的插件
  • 原文地址:https://www.cnblogs.com/xwj1985/p/1803272.html
Copyright © 2011-2022 走看看