【问题标题】:Resources for high performance SQL Server database design用于高性能 SQL Server 数据库设计的资源
【发布时间】:2011-01-29 19:46:25
【问题描述】:

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

建议?

编辑

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

【问题讨论】:

  • 你能给我们一些你期望的负载的想法吗?

标签: sql-server performance database-design


【解决方案1】:

在中等服务器上听起来像是一个相当易于管理的负载 - 您还没有说明在这些插入和更新进行时发生了什么样的读取操作(Lucene 的提取除外)和大小(按字节/数据类型)(您给出的基数看起来不错)。

此时,我建议只使用regular SQL Server best practices - 确定一个合适的模式(规范化,然后仅在必要时进行非规范化),review execution plans,使用索引调整向导,use the DMVs 来查找未使用的索引并删除它们,choose clustered indexes carefully 以管理页面拆分,仔细选择数据类型和大小以及 use referential integrity and constraints where possible to give the optimizer as much help 尽可能。除此之外,还有性能计数器并确保您的硬件/软件安装得到调整。

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

然而,即便如此,如果读取负载很重,插入和更新可能会导致读取和写入之间的锁定问题,然后您需要考虑应用程序的架构决策。

此外,每天百万行和 200k 更新不会让我担心 - 但您提到 Lucene(即全文索引),所以大概有些列相当大。更新大型列并导出它们显然需要更长的时间 - 并且需要更多的带宽和 IO。具有传统数据类型列的狭窄百万行表中的 30 列将是完全不同的故事。您可能想查看更新配置文件,看看是否需要对表进行垂直分区以将某些列移出行(如果它们很大,它们将已经被存储在行外)以改进锁定行为。

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

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

【讨论】:

  • 非常感谢您的详细回复 - 必须通过这个来消化所有内容。
  • 链接现在是404;我要求新链接会不会太粗鲁了?
【解决方案2】:

您可以试试 CodePlex 上的 SQL Server samplesDatabaseAnswers.com

【讨论】:

    【解决方案3】:

    以下是一些关于在 SQL Server 中进行故障排除和优化性能的资源,我发现它们非常有用:

    http://updates.sqlservervideos.com/2009/09/power-up-with-sql-server-sql-server-performance.html

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

    【讨论】:

      【解决方案4】:

      http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=high+performance+database

      这个主题最好先用书籍来探索,因为它技术含量高且复杂。

      我要指出,创建这个网站的人包括一些使用非常大的数据库的人。你可以从他们身上学到很多东西。 http://lessthandot.com/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-22
        • 1970-01-01
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多