最佳优化大型SQL Server表格(100-200百万条记录)

6
在处理包含100-200万条记录的大型SQL Server 2005表时,最好的选择/建议和优化方法是什么?

3
需要更多信息 - 重点在阅读还是写作?数据类型、建模/表设计...。请问您需要更多的信息,是偏向于阅读或写作方面的内容呢?同时,您是否需要关于数据类型、建模以及表格设计方面的翻译呢? - OMG Ponies
2个回答

9
由于您没有说明数据库的目的或要求,以下是一些通用建议,没有特定顺序:
  1. 每个表都应该有一个小的聚集索引。考虑将其作为主键。这样非常高效,并且可以节省主表和相关表的空间。
  2. 适当的非聚集索引(尽可能使用覆盖索引)。
  3. 引用完整性。
  4. 规范化的表结构。
  5. 所有数据库对象的命名应保持一致,以便更容易进行维护。
  6. 如果您拥有SQL Server企业版,则需要适当的分区(表和索引)。
  7. 如果您打算允许直接在数据库中操作数据,请在表上设置适当的检查约束。
  8. 决定业务规则的存放位置,并坚持不变。在大多数情况下,它们不应该存在于数据库中。
  9. 对于频繁使用的查询(至少),请使用查询分析器并查找表扫描。这会影响性能。
  10. 准备好处理死锁。对于这么大的数据库,特别是如果有大量写入操作,死锁可能成为一个问题。
  11. 充分利用视图来隐藏查询连接复杂性,以及潜在的查询优化和灵活的安全实现。
  12. 考虑使用架构来更好地组织数据和实现灵活的安全性。
  13. 熟悉Profiler。对于这么大的数据库,您很可能会花费一些时间来确定查询瓶颈。Profiler可以帮助您解决这个问题。

如果您的硬件大小适当且配置正确,并且大多数查询工作负载都有覆盖NC索引,则死锁应该很少发生。 - Mitch Wheat

1
一条经验法则是,如果一个表将包含超过2500万条记录,您应该考虑对表(和索引)进行分区,但这个功能仅在SQL Server的企业版(以及相应的开发人员版)中可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接