设计表高插入率

时间:2012-07-02 20:30:58

标签: tsql database-design indexing

我想知道如何设计一个每天需要1000到5000万次插入的表,并且需要快速响应选择...我应该使用索引吗?或者管理费用太高了?

编辑:我不担心交易量......这实际上是一个分配...我需要找出一个表格的设计“必须做出很好的反应,选择不是基于主键,知道这个表每天都会收到大量的插页“

3 个答案:

答案 0 :(得分:1)

肯定。至少主键,外键,以及报告所需的任何内容,都不要过度。 10k-50k插入一天不是问题。如果它是,我不知道,一百万个插入,那么你可以开始考虑使用单独的表,数据字典和什么不是,但为了您的需要,我不会担心。

答案 1 :(得分:1)

最佳速率是PK排序与插入顺序相同而没有其他索引。每天10-50万不是那么多。如果只插入,那么我看不到脏读的任何缺点。

如果要优化select,则使用行级锁定进行插入。

衡量索引碎片。使用适当的填充因子定期对索引进行碎片整理。填充因子决定了索引碎片的速度以及碎片整理的频率。

答案 2 :(得分:1)

即使您每天做了50,000次,而您的工作日也是8小时,但平均每秒仍然少于两次插入。我想你可能会得到比这更高的峰值,但一般来说,SQL Server可以处理比你看起来更高的事务率。

如果您的表格相当宽(很多列或几个非常长的列),那么您可能需要考虑通过代理(IDENTITY)列进行聚类。你的数量不足以在桌子末端形成一个糟糕的热点。与此相结合,使用数据一致性(即FK)和检索(PK,自然键等)所需的任何密钥的索引。注意在索引上设置填充因子,并考虑在定期停机时间窗口重建它们。

如果您的表格相当狭窄,那么您可以考虑使用自然键进行聚类,但是您必须确保满足您的响应时间预期。