none
SQL Server 2014 线上环境重建碎片较多的索引会不会影响业务? RRS feed

  • 问题

  • 线上环境重建碎片较多的索引会不会影响业务。有没有实践过的解答下,需要注意什么?会面临哪些问题呢

    最近在优化数据库的时候打算重建碎片较多的索引,会不会在此过程中严重影响业务呢? 还有在优化数据库这块,各位前辈有没有什么好的建议分析下吗?小弟万分感谢。

    2019年5月26日 4:13

答案

  • 您好,请问ALTER INDEX  [Index_name]  ON  [dbo].[Table] REBUILD with (online=on)在线重建索引是不是要比ALTER INDEX  [Index_name]  ON  [dbo].[Table] REBUILD 效果要好呢?

    感谢您的回答

    When you use online option, sql doesn't lock underlying table during whole reindex period. Only lock table while copying indices.
    • 已标记为答案 六月i 2019年5月28日 23:41
    2019年5月27日 17:15
  • 在online模式下,你可以对表进行增删改查,但是online模式下会影响数据库性能,并且在online模式下,索引重建需要花费更多时间,日志使用量也会比offline模式下更多。你可以通过这个连接查看两种模式下的比对:https://www.mssqltips.com/sqlservertip/2361/rebuilding-sql-server-indexes-using-the-online-option/

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

    • 已标记为答案 六月i 2019年5月28日 23:41
    2019年5月28日 9:48

全部回复

  • If you have enterprise edition, can rebuild certain kind of index online. But still better to do it in maintenance window.
    2019年5月26日 19:42
  • 您好,请问ALTER INDEX  [Index_name]  ON  [dbo].[Table] REBUILD with (online=on)在线重建索引是不是要比ALTER INDEX  [Index_name]  ON  [dbo].[Table] REBUILD 效果要好呢?

    感谢您的回答

    2019年5月26日 23:55
  • Hi 六月i

     

    ONLINE模式下,构建新索引,同时可以读取和写入旧索引。 旧索引的任何更新也将应用于新索引。反物质列用于跟踪更新和重建之间可能存在的冲突(即删除尚未复制的行)。 当进程完成时,表会被锁定一段时间,新索引将替换旧索引。 如果索引包含LOB列,则SQL Server 2005/2008 / R2中不支持ONLINE操作。

     

    OFFLINE模式下,表被预先锁定以进行任何读取或写入,然后新索引从旧索引构建,同时保持对表的锁定。在重建索引时,表上不允许读取或写入操作。 仅在操作完成时才释放对表的锁定,并再次允许读取和写入。

     

    Hope this could help you .

    Best regards,

    Dedmon Dai


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

    2019年5月27日 9:11
  • 您好,请问ALTER INDEX  [Index_name]  ON  [dbo].[Table] REBUILD with (online=on)在线重建索引是不是要比ALTER INDEX  [Index_name]  ON  [dbo].[Table] REBUILD 效果要好呢?

    感谢您的回答

    When you use online option, sql doesn't lock underlying table during whole reindex period. Only lock table while copying indices.
    • 已标记为答案 六月i 2019年5月28日 23:41
    2019年5月27日 17:15
  • ONLINE模式下重建索引,还可以对表进行增删改吗?(表有上亿数据),数据库为完整恢复模式,对次操作的大量日志能承受吗

      谢谢您的回答

      

    2019年5月28日 8:30
  • 那就是说ONLINE模式下,不能对这个表进行增删改成对吗?但是这样的话就会影响业务正常运营,目前表数据最大有2亿多数据,很麻烦.
    2019年5月28日 8:37
  • 在online模式下,你可以对表进行增删改查,但是online模式下会影响数据库性能,并且在online模式下,索引重建需要花费更多时间,日志使用量也会比offline模式下更多。你可以通过这个连接查看两种模式下的比对:https://www.mssqltips.com/sqlservertip/2361/rebuilding-sql-server-indexes-using-the-online-option/

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

    • 已标记为答案 六月i 2019年5月28日 23:41
    2019年5月28日 9:48