Sql server 优化SQL Azure中股票数据的存储

Sql server 优化SQL Azure中股票数据的存储,sql-server,azure-sql-database,Sql Server,Azure Sql Database,我想将历史股票价格数据存储在sqlazure数据库的表中。 我每15分钟会得到大约100000个股票价格,其中一些可能会改变,也可能不会改变它们的价值。所以我每天需要存储大约(5000*32(8小时*4次)=160000)160000条记录 目前,权益表的结构如下,大约有20列 Equity table --------------- ID INT PK, Name Varchar(20), Value Money, Currency Varchar(10), ....... 我想存储历史价格

我想将历史股票价格数据存储在sqlazure数据库的表中。 我每15分钟会得到大约100000个股票价格,其中一些可能会改变,也可能不会改变它们的价值。所以我每天需要存储大约(5000*32(8小时*4次)=160000)160000条记录

目前,权益表的结构如下,大约有20列

Equity table
---------------
ID INT PK,
Name Varchar(20),
Value Money,
Currency Varchar(10),
.......
我想存储历史价格的新表(HistoricalPrices)包含以下结构

HistoricalPrices
-------------------
ID INT PK,
EquityID INT FK,
[Date] DateTime,
Value Money
如果我每天存储这16万条记录,一个月内我的表将获得大约500万条记录


我的问题是,这个表将如何处理数据,我是否会遇到任何性能问题,是否有其他方法来维护这些数据,我是否需要对表结构等进行任何更改?

通过适当的索引和聚类,适当的、有选择的查询不应该存在性能问题。需要考虑备份、重新索引作业和限制返回数据量等传统操作问题,尽管这不是Azure的问题

请注意,Azure DB大小限制可能会迫使您在某个点()进行水平分区(shard)(Azure不支持表分区)


也要考虑你的32位INT PK的溢出——虽然在当前的速率下你有超过50年的价值,但是如果你跟踪增加的频率(例如更多的交换或者更多的股票),你需要考虑一个64位的INT.

< P>你应该考虑使用联邦(http://msdn.microsoft.com/en-us/library/windowsazure/hh597452.aspx)由于您的音量要求。如果在单个批次中插入/更新记录,则可能需要将其细分为特定的值范围。但一般来说,联邦是SQLAzure的首选分片机制。在完成存储设计之前,请先查看该功能


如果有兴趣,请查看我的博客,了解与联合设计相关的具体信息:

我想补充一点,您可能希望完全删除人工PK,并将EquityID和日期组合成PK。这是tick数据的自然键。您还希望在这两列上都有一个聚集索引—可能首先是equity ID,然后是Date(因为这可能是您的查询模式—“Show me MSFT from 1/1/2012 today”),谢谢您提供的信息。我会考虑你的观点。