我想将历史股票价格数据存储在 SQL Azure 数据库的表中。 我每 15 分钟会得到大约 100000 个股票价格,其中一些可能会也可能不会改变其值(value)。所以我每天需要存储大约(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
如果我每天存储这 160000 条记录,一个月后我的表将获得大约 500 万条记录。
我的问题是,这个表将如何处理数据,我是否会遇到任何性能问题,是否有其他方法来维护这些数据,以及我是否需要对表结构进行任何更改等等?
最佳答案
通过适当的索引和集群,适当的选择性查询的性能不应该成为问题。传统的操作问题(例如备份、重新索引作业和限制返回的数据量)需要考虑,尽管这不会是 Azure 的问题。
请注意,Azure DB 大小限制可能会迫使您在某个时刻进行水平分区(分片)( http://blogs.msdn.com/b/sqlazure/archive/2010/06/24/10029719.aspx )(Azure 不支持表分区。)
http://msdn.microsoft.com/en-us/library/ms345146(v=sql.90).aspx
还要考虑的是 32 位 INT PK 的溢出 - 尽管按照目前的速度,您的值(value)超过 50 年,但如果您跟踪频率增加(例如更多交易所或更多股票),您将需要考虑 64 位 INT。
关于sql-server - 优化 SQL Azure 中股票数据的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073371/