您想问一下如何对下表进行分区(见下文)。我遇到的问题不在于检索由聚簇索引解析的历史记录。但正如您所看到的,索引基于HistoryParameterID然后是TimeStamp,这是必需的,因为行的检索基于上述列。
这里的问题是,每当它达到~10亿条记录时,插入速度会减慢,因为场景将会有15k行\秒(注意这可能是30k - 100k)要插入,每行它对应一个HistoryParameterID。
基本上,HistoryParameterID不是唯一的,它有一个 - >许多关系与下表中的其他列一起发布。
我的预感是因为索引会减慢插入速度,因为插入并不总是在底部,因为它是由HistoryParameterID排列的。
我使用Timestamp作为索引进行了一些测试但由于查询性能不可接受而无济于事。
有没有办法按历史记录ParameterID对此进行分区?我正在尝试它,所以我创建了15k表分区视图。但是当我创建视图时,它并没有完成执行。有小费吗?或者有什么方法可以分区吗?请注意,我使用标准版并不能使用企业版。
CREATE TABLE [dbo].[HistorySampleValues]
(
[HistoryParameterID] [int] NOT NULL,
[SourceTimeStamp] [datetime2](7) NOT NULL,
[ArchiveTimestamp] [datetime2](7) NOT NULL CONSTRAINT [DF__HistorySa__Archi__2A164134] DEFAULT (getutcdate()),
[ValueStatus] [int] NOT NULL,
[ArchiveStatus] [int] NOT NULL,
[IntegerValue] [bigint] SPARSE NULL,
[DoubleValue] [float] SPARSE NULL,
[StringValue] [varchar](100) SPARSE NULL,
[EnumNamedSetName] [varchar](100) SPARSE NULL,
[EnumNumericValue] [int] SPARSE NULL,
[EnumTextualValue] [varchar](256) SPARSE NULL
) ON [PRIMARY]
CREATE CLUSTERED INDEX [Source_HistParameterID_Index] ON [dbo].[HistorySampleValues]
(
[HistoryParameterID] ASC,
[SourceTimeStamp] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
答案 0 :(得分:2)
我正在尝试它,所以我创建了15k表用于分区视图。但当 我创建了它没有完成执行的视图。有小费吗?或者在那里 任何分区方式?请注意,我使用标准版和 使用企业版不是一种选择。
如果你沿着分区视图路径(http://technet.microsoft.com/en-us/library/ms190019.aspx)走下去,我会建议更少的表(不到一百个)。如果没有分区表,优化器必须经过大量工作,因为视图的每个表都可以以不同的方式编制索引。
如果HistoryParameterID是增量的话,我不希望插入速度随表大小而减慢。但是,在随机值的情况下,由于较低的缓冲区高速缓存效率,随着表大小的增加,插入将逐渐变慢。单个表,分区表或分区视图将存在该问题。有关使用guid的示例,请参阅http://www.dbdelta.com/improving-uniqueidentifier-performance/,但该问题适用于任何随机键值。
您可以尝试单独使用SourceTimestamp作为聚簇索引键的表,并使用HistoryID和SourceTimestamp上的非聚簇索引。这将提供最佳的插入性能,非聚集索引(可能包含列)可能足以满足您的选择查询。
答案 1 :(得分:0)
你需要的一切都在这里。我希望你能搞清楚。
http://msdn.microsoft.com/en-us/library/ms188730.aspx
并且对于标准版,存在类似this回答的替代解决方案。
和this也是一篇有趣的文章。
我们在企业自动化应用程序中实现了这一点,并在用户表周围自定义索引,并且运行良好。
以下是自定义实施的缺点和优点:
优点:
缺点:
实施路由方法和更新索引。
非集中数据。