10亿行DW到DM

时间:2016-02-11 16:48:45

标签: sql sql-server data-warehouse datamart

我有一个设计/性能问题。

我有下一张桌子。

CREATE TABLE [dbo].[DW_Visits_2016](
    [VisitId] [int] NOT NULL,
    [UserId] [int] NOT NULL,
    [VisitReferrer] [varchar](512) NULL,
    [VisitFirstRequest] [varchar](255) NOT NULL,
    [VisitAppName] [varchar](255) NULL,
    [VisitCountry] [varchar](50) NULL,
    [VisitDate] [smalldatetime] NOT NULL,
    [VisitMins] [int] NOT NULL,
    [VisitHits] [int] NOT NULL,
    [EntryTag] [varchar](100) NOT NULL,
    [VisitCount] [int] NOT NULL,
    [VisitInitialDate] [datetime] NOT NULL,
    [AggregateType] [varchar](50) NULL,
    [MemberId] [int] NULL,
    [ServerName] [varchar](50) NULL,
    [BrowserUserAgent] [varchar](255) NULL,
    [LastModifiedDate] [smalldatetime] NULL,
    [Guid] [uniqueidentifier] NULL,
    [SessionId] [varchar](100) NULL,
    [IPAddress] [varchar](40) NULL,
 CONSTRAINT [PK_Visits] PRIMARY KEY NONCLUSTERED 
(
    [VisitId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Visits]  WITH CHECK ADD  CONSTRAINT [CK_Visits_VisitDate] CHECK  (([VisitDate]>='2016-01-01' AND [VisitDate]<'2017-01-01'))
GO

ALTER TABLE [dbo].[Visits] CHECK CONSTRAINT [CK_Visits_VisitDate]

2015年的这张表...... 2010年。

每个表都有大约1.5亿行。所以,我们总共讨论了10.5亿行。

我收到了一个要求,BI人们希望将这个组合在一个视图上(像all_visits中的select *一样疯狂)。

幸运的是,他们给了我一些'where'子句,以及他们不需要的一些列,所以最终结果将是6列和20%的行(2.1亿行),但是,“视图”是只是一个存储的查询。即使盒子有60GB的RAM,它也与许多其他数据库共享。

我看到的选项:

  1. 而不是视图......将视图创建为表并将其移动到专用框。
  2. 每年创建一个视图?
  3. 将所有这些切换为mongodb或类似vertica的东西?!
  4. 以前的任何选项与列存储的索引相结合吗?

0 个答案:

没有答案