Sql server 用于高性能SQL Server数据库设计的资源

Sql server 用于高性能SQL Server数据库设计的资源,sql-server,performance,database-design,Sql Server,Performance,Database Design,我想要一些关于在线资源(博客、指南等,而不是论坛)的建议,以帮助我擅长设计高性能SQL Server数据库,这些数据库可以处理大量数据,并且在每分钟的数据周转和查询方面具有重负载 建议 编辑 我所说的负载主要是数据周转。主表最多有一百万行,大约30个大小不同的数据字段,每天更新约30-40000行,每天更新至少200000行。这些更新在一天中持续进行。除此之外,所有的更改和更新都需要整天从数据库中提取,以使大型Lucene索引保持最新。 这是一门技术性很强、很复杂的学科,最好先通过书本来探讨 我

我想要一些关于在线资源(博客、指南等,而不是论坛)的建议,以帮助我擅长设计高性能SQL Server数据库,这些数据库可以处理大量数据,并且在每分钟的数据周转和查询方面具有重负载

建议

编辑

我所说的负载主要是数据周转。主表最多有一百万行,大约30个大小不同的数据字段,每天更新约30-40000行,每天更新至少200000行。这些更新在一天中持续进行。除此之外,所有的更改和更新都需要整天从数据库中提取,以使大型Lucene索引保持最新。

这是一门技术性很强、很复杂的学科,最好先通过书本来探讨

我要指出的是,创建这个网站的人包括几个使用大型数据库的人。你可以从他们身上学到很多。

您可以在CodePlex或上尝试。

以下是有关SQL Server性能故障排除和优化的一些资源,我发现这些资源非常有用:


特别是,有效使用索引可以极大地提高性能。我认为,在大多数情况下,大多数web应用程序的阅读比写作要多得多。此外,表达式的可重用性可能会对性能产生严重影响。

在中等服务器上听起来是一个相当可管理的负载-您还没有说明在进行这些插入和更新(Lucene的提取除外)时会发生什么样的读取操作以及数据的大小(字节/数据类型)(你给予的基数似乎很好)

在这一点上,我建议只使用-确定一个合适的模式(规范化,然后仅在必要时反规范化),使用索引调整向导,查找并删除未使用的索引,管理页面拆分,仔细选择数据类型和大小,并尽可能地调整。除此之外,还要选择性能计数器,确保硬件/软件安装得到调整

在许多/大多数情况下,您永远不需要超越这一点来实际重新设计您的体系结构

然而,即使在所有这些之后,如果读取负载很重,那么插入和更新可能会导致读取和写入之间的锁定问题,然后您将考虑应用程序的体系结构决策

此外,每天百万行和20万次更新也不会让我担心,但你提到了Lucene(即全文索引),因此可能有些列相当大。更新大型列并将其导出显然需要更长的时间——以及更多的带宽和IO。使用传统数据类型列的窄百万行表中的30列将是完全不同的情况。您可能希望查看更新配置文件,看看是否需要分区在表上垂直移动一些列(如果它们很大,它们将已经存储在行外)以改进锁定行为

因此,当您有很重的读取负载时,关键是:插入和更新需要尽可能快,锁定尽可能少(避免锁升级),更新尽可能少的索引以支持读取操作


如果读取负载很重(因此插入/更新开始冲突),但不需要100%的最新信息(例如5分钟或15分钟的延迟不明显),则可以保留数据库的只读版本(复制过程中相同,性能索引不同,非规范化或建模不同-如维度模型)。也许您的Lucene索引可以包含额外的信息,以便昂贵的读取操作都保留在Lucene中-即Lucene将覆盖许多大型读取操作,从而将数据库上的读取负载减少到支持插入/更新的基本读取(这些通常是小型读取)以及应用程序的事务部分(即,客户服务信息屏幕将使用常规数据库,而您的每小时仪表板将使用辅助数据库)。

您能告诉我们您期望的负载是多少吗?非常感谢您的详细回复-必须通过此过程才能消化所有内容。