【问题标题】:read only databases and index fragmentation in SQL ServerSQL Server 中的只读数据库和索引碎片
【发布时间】:2011-04-09 20:02:43
【问题描述】:

我有许多只读数据库 alter database [ReferenceData] set READ_ONLY 供我们的应用程序使用,我想知道我可以调整哪些类型的东西以获得最佳性能?

到目前为止,我提出了以下目标:

  • 将索引中的填充强制为 100% 填充因子
  • 索引碎片小于 10%
  • 如果空间不是问题,请查看 DMV,并根据建议添加尽可能多的 INCLUDED 列

这些有意义吗?为了最大限度地提高效率,我还应该做更多的调整吗?

我在 Windows 2008 上运行 SQL Server 2008

【问题讨论】:

    标签: sql sql-server database sql-server-2008 indexing


    【解决方案1】:

    这听起来可能有点明显,但你并没有在你的问题中直截了当地说你已经做到了,所以我会提到它:

    1. 您确定所有索引都正确吗 到位了吗?你可能会跑 profiler/DTA 对 DB 看是否 有任何领域可以 可能通过创建新的改进 索引。
    2. 您是否对性能进行了调整 使用只读数据库的查询? 世界上所有的索引都没有 不管你写得不好 查询。

    【讨论】:

    • 是的,关于正确编写的代码和索引的选择,您是正确的,但我的问题更具体地是关于当数据库是只读数据库与读写数据库时可以做什么。
    【解决方案2】:
    ALTER DATABASE MyDatabase
    SET READ_ONLY
    

    会将数据库设置为不可修改状态。大概那里有一些优化,但我不确定。

    您还可以将默认事务级别设置为 READ UNCOMMITTED 以获得每个会话的最大读取性能。大概如果您将数据库设置为只读模式,这已经发生了。

    编辑:遇到this article,您应该如何准备数据库以使其成为只读。

    【讨论】:

    • 我不确定,但我确实希望当它是只读的数据库时,引擎知道它可以在没有锁的情况下读取。我的数据库多年来一直是只读的(每月更新期间除外),我只是想弄清楚可以做些什么来保持它的最佳状态。
    • 感谢您的链接。那篇文章提到性能优势不需要锁,额外的索引没有影响,第三,不知道为什么这与性能相关,但你可以在数据库在线时复制数据和日志文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多