English 中文(简体)
2005年服务器库中“Indexing”数据汇总(维持一个表格)
原标题:"Indexing" (aka maintaining a table of) aggregate data in SQL Server 2005
  • 时间:2009-09-21 13:39:02
  •  标签:

我有一个表格,保存一个系统的性能数据,每个记录都是对一些重要方法发出的呼吁,包括方法名称、期限和象征性的——对该系统的每一请求都是独特的象征性的,因此,所有有相同标语的记录都是相同的要求,例如:

CallName    Duration    Token
----------- ----------- -----------
GetData     121         12345
Process     800         12345
SaveData    87          12345

GetData     97          ABCDE
Process     652         ABCDE
SaveData    101         ABCDE

我有兴趣了解图肯和卡塔尼亚美分类的总数据,例如:

-- The total duration of each request, in descending order
SELECT Token, SUM(Duration) FROM Requests GROUP BY Token ORDER BY SUM(Duration) DESC

-- The average duration of each call, in descending order
SELECT CallName, AVG(Duration) FROM Requests GROUP BY CallName ORDER BY AVG(Duration) DESC

现在,这个表格可能非常庞大,我只想对每个询问的最少记录感兴趣,因此,我已经为这两个问题铺了。 问题在于,由于这些询问涉及的是总的职能服务器,最终完成一个表扫描。

肯定还有其他人有这一问题?

我在此确实需要的是由Token归类的SUM(Duration)“指数”,即我可以做以下事情的表格:

SELECT Token, SumToken FROM RequestTokens ORDER BY SumToken DESC
  • Is this a really bad idea?
  • If so, is there a better way?
  • What would be the best way to do this? Would triggers on INSERT / UPDATE / DELETE work (where I update the aggregate values based on the old values and the changed data), or would I be better off manually updating my "index" when updating this table?

捷径是我迄今提出的最佳解决办法,但我已经看到这是一个僵局/一致性的 night! :

最佳回答

如何根据合计数,甚至可能采用指数化的观点来看待。 我没有用指数化的观点做很多工作,但该条谈到使用这些观点,如AVG(AVG)()。 也许会让你正确方向。

http://msdn.microsoft.com/en-us/library/a933128SQL.80%.aspx

问题回答

首先,图肯列的指数是否足够? 那么,鉴于图肯价值,Kingkry优化机将只扫描包含你感兴趣的部分指数。 使这一指数集中化,使你获得最佳业绩。

接下来,你们如何知道你对汇总的兴趣是什么? 没有列入日期(或时间范围)栏,因此,为了标值似乎随意分配(而不是某种形式的加价),我猜测,你知道,在你发出警告之前,应集中计算负值。 如果这些价值观不为人所知,但有些how,你可以采取一些策略,首先确定最新的X光标值,一旦你发现,你会再次回到部分桌旁。

现在我更好地理解了这个问题,我在此再说一遍。 这是一个不常见的报告问题,导致数据仓储解决办法,例如:你能否在含有预先分类数据的第二个表格中补充? 这确实是非正常/多余的数据......但似乎明确,定义明确,符合企业的需要。 这一概念的两条缩略语:

如果数据只输入一次,你就可以修改数据输入的例行程序,同时增加总流量。 如果它随着时间的推移而trick,那么你需要经常程序来“处理事情”。 我避免了一般原则的触发因素;它们可能在此提供帮助,但也可能根据使用模式和数据相互关系而使你的系统相互连接。

数据必须如何更新? 合并数据能否与详细数据分开,如果是,时间又多长? 您可以从事一项繁重的工作,每天/小时/5分钟,对最近条目进行扫描,并更新综合表格。 (加上一个指数化的“最后输入”栏,这些更新可以迅速进行)。 权衡是你数据被切断的时间。 (该日间栏可表示数据准确的“直至......”。) 难道在那个时候之后,你不会提供综合数据吗?

如果数据输入后数据没有变化(无更新、不删除、不使用过迟来的浏览量),这可以发挥作用——但是,如果你必须随时间而保持更新,以及数据输入时可得到的合计数据改动had<>em>。





相关问题