Asp.net 网上提供的大型表格的统计数据

Asp.net 网上提供的大型表格的统计数据,asp.net,report,sql-server-2012,large-data-volumes,Asp.net,Report,Sql Server 2012,Large Data Volumes,我们有一个庞大的数据表,大约有300000000行,目前每天都在以100000行的速度增长,这个数字会随着时间的推移而增加 今天,我们直接从数据库(MS-SQL 2012)生成不同的报告,并进行大量计算 问题是这需要时间。我们有索引等等,但是今天的人们想要非常快的报告 我们还希望能够更改时间段、查看数据的不同方式等等 我们只需要查看一天以前的数据,这样我们就可以获取昨天的所有数据,并利用这些数据加快查询和报告的速度 所以,你们中的任何人对一个解决方案有什么好的想法吗?这个解决方案将是快速的,并且

我们有一个庞大的数据表,大约有300000000行,目前每天都在以100000行的速度增长,这个数字会随着时间的推移而增加

今天,我们直接从数据库(MS-SQL 2012)生成不同的报告,并进行大量计算

问题是这需要时间。我们有索引等等,但是今天的人们想要非常快的报告

我们还希望能够更改时间段、查看数据的不同方式等等

我们只需要查看一天以前的数据,这样我们就可以获取昨天的所有数据,并利用这些数据加快查询和报告的速度

所以,你们中的任何人对一个解决方案有什么好的想法吗?这个解决方案将是快速的,并且仍然在web上,而不是在excel或BI工具中


今天,所有报告都是asp.net c#webforms中的,带有针对MS SQL 2012表格的查询。

您有一个OLTP系统。您通常希望在这样的系统上实现最大吞吐量。报告需要使用闩锁和锁来获取数据。这会拖累OLTP的吞吐量,而有利于报告的内容(附加索引)将对OLTP有害,因为这将对性能产生负面影响。甚至不要认为用(NOLOCK)拍打
会减轻一些负担

正如其他人所说,您可能希望将活动数据与报表数据分离

如果您有EnterpriseEdition,对表进行分区可以实现这一点。否则,您将需要进行一些黑客行为,例如,根据数据的访问方式,这些行为可能对您有效,也可能对您无效

我将定期从系统中提取所需的数据,并将其推送到其他地方。其他地方是同一数据库中的不同表集,还是同一服务器上的不同目录,或者是完全不同的服务器,这取决于一系列变量(成本、实施时间、数据复杂性、速度要求、存储子系统等)


由于听起来您没有超具体的报告要求(目前您查看了昨天的数据,但希望看到更多数据,等等),因此我将在报告表中查看实现。它为查询聚合提供了惊人的性能,甚至超过了聚合表,这样做的好处是您不必指定特定的粒度(WTD、MTD、YTD等)。但缺点是它是一个只读数据结构(创建索引时占用内存和cpu)。SQL Server 2014将引入可更新的columnstore索引,这些索引将是Giggit,但这需要一段时间。

永远不要报告实时数据。创建一个单独的报告数据库,或者更好地创建一个数据仓库和OLAP多维数据集,在其中存储报告数据。当谈到报告时,30M记录是相对较少的数据量。如果有多人对同一数据调用同一报告,您可以缓存它。如果您不想使用BI解决方案,您是否考虑过对表进行分区,如果您只查看天数数据,并且正确地对表进行分区,查询可能只需要计算一天的行数。我将防御性地将数据发送到单独的数据库(可能是SQL Azure)。如果所有的计算都可以在内存中进行,然后发送到Web服务器,那么真正的好处是什么呢