AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 84593
Accepted
Reaces
Reaces
Asked: 2014-12-09 04:41:21 +0800 CST2014-12-09 04:41:21 +0800 CST 2014-12-09 04:41:21 +0800 CST

ONLINE 与 OFFLINE 索引重建

  • 772

我正在寻找一个意见,我知道这通常是不受欢迎的,所以我提前道歉。

我目前处于每个实例都是 SQL Server 企业版的环境中。维护任务由自定义计划执行。默认情况下,此计划在夜间进行离线重建。

没有夜间维护窗口,并且由于环境是多国的,维护的“夜间”部分并不总是意味着最低活动点(但在 95% 的情况下确实如此)。由于积极的索引维护,目前有很多夜间作业运行缓慢。(一个报告查询在等待一个包含客户数据的 300GB 表的索引重建时卡住了,导致我走上了这条路线)

我可以假设以下内容将产生主要的积极影响:

  • 添加 10% 的最小碎片值进行重组(目前每天晚上完成,无论 %)
  • 将最低重建要求更改为 30%(目前为 5%)
  • 将默认行为更改为 ONLINE
  • 将最小页数更改为 1000(当前为 50)

我在这里主要要问的是,我是否正确假设当前的维护计划过于激进。并且上述 4 项变化将产生净积极影响。

我最担心的是每天晚上为所有事情重新组织一切......这似乎太过分了。

sql-server fragmentation
  • 3 3 个回答
  • 6185 Views

3 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2014-12-09T06:33:55+08:002014-12-09T06:33:55+08:00

    我们很难知道这是否会是一个净积极因素。这些几乎是显而易见的:

    • 将所有操作设置为 ONLINE,因为您可以
    • 忽略小于 1000 页的表

    不过,您仍然应该测试这些。

    但是我们不知道碎片整理/重建对您的读取工作量有什么影响,以及是否推迟到某个百分比更好,您什么也得不到,甚至可能使某些读取查询变得更糟。

    其他人已经完善了这种类型的维护,并将您从猜谜游戏中带走。获取Ola Hallengren 的脚本或我们的工具Fragmentation Manager。您只需更改参数值即可按照您的建议进行更改。而且不要忘记,这些人已经解决了很多你还没有遇到的错误,并且想到了你还没有想到的事情。当新版本在线提供新操作,或为不同的维护功能添加新选项时,这些工具和脚本将为您更新。你所做的被亲切地称为重新发明轮子:

    • 重新博客:重新发明轮子的成本

    由于过去的投资而拒绝转向更自动化的解决方案,这有点像因为你去年付了钱而留下了一个糟糕的管家或园丁。有时你只需要剪断电源线。

    • 3
  2. Alocyte
    2014-12-09T05:13:50+08:002014-12-09T05:13:50+08:00

    我假设数据库是高度事务性的,需要重建;并且是国际化的,随时可以访问...所以在我看来,一切都保持原样,并改为在线重建。

    一切都是浪费的;但不是火车粉碎。轻松完成任务检查碎片 - 将其设置得稍微不那么激进 - 10% 碎片然后重新组织;20% 然后重建。

    因此,您只引入了 2 个更改,再次评估和调整。这样,您就可以考虑可选而不是所有时间;和在线,这样您就可以让人们访问。

    按照建议,检查 Ola Hallengren 的工作。编码的绝妙例子......鼓舞人心。

    祝你好运!

    • 2
  3. user119732
    2017-03-15T22:24:06+08:002017-03-15T22:24:06+08:00

    主要区别在于:

    1. 离线索引重建比在线重建更快。

    2. SQL Server 联机索引重建期间需要额外的磁盘空间。

    3. 通过 SQL Server 联机索引重建获得的 SQL Server 锁。

      此模式修改锁会阻止所有其他对表的并发访问,但它只会在很短的时间内保持很短的时间,同时删除旧索引并更新统计信息。

    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve