Ash*_*ous 11 sql-server azure azure-sql-database azure-sql-server
在内部部署SQL数据库中,有一个维护计划可以偶尔重建索引,而不是那么多.
如何在Azure SQL DB中进行设置?
PS:我之前尝试过,但由于我找不到任何选项,我想也许他们自动这样做,直到我读完这篇文章并试过:
SELECT
DB_NAME() AS DBName
,OBJECT_NAME(ps.object_id) AS TableName
,i.name AS IndexName
,ips.index_type_desc
,ips.avg_fragmentation_in_percent
FROM sys.dm_db_partition_stats ps
INNER JOIN sys.indexes i
ON ps.object_id = i.object_id
AND ps.index_id = i.index_id
CROSS APPLY sys.dm_db_index_physical_stats(DB_ID(), ps.object_id, ps.index_id, null, 'LIMITED') ips
ORDER BY ps.object_id, ps.index_id
Run Code Online (Sandbox Code Playgroud)
Con*_*SFT 19
我要指出的是,大多数人根本不需要考虑在SQL Azure中重建索引.是的,B +树索引可能会碎片化,是的,与完美调整的索引相比,这会导致一些空间开销和一些CPU开销.因此,在某些情况下,我们会与客户合作重建索引.(主要方案是当客户可能用完空间时,目前,由于当前架构,SQL Azure中的磁盘空间有限).因此,我将鼓励您退一步考虑使用SQL Server模型来管理数据库不是"错误的",但它可能或可能不值得您的努力.
(如果最终需要重建索引,欢迎使用其他海报发布的模型 - 它们通常是编写脚本任务的好模型.请注意,SQL Azure托管实例也支持SQL Agent,您也可以使用它如果您愿意,可以创建作业来编写脚本维护操作).
以下是一些可以帮助您确定是否可能成为索引重建候选者的详细信息:
我给客户的官方建议是不打扰索引重建,除非他们有一级应用程序,他们已经证明了真正的需求(收益大于成本)或者他们是SaaS ISV他们试图调整工作量的地方在弹性池或多租户数据库设计中的许多数据库/客户,因此他们可以减少他们的COGS或避免在一个非常大的数据库上耗尽磁盘空间(如前所述).在我们在平台上拥有的最大客户中,我们有时会看到与客户手动进行索引操作的价值,但我们通常不需要在我们进行"以防万一"这种操作的情况下定期工作.SQL团队的目的是让您根本无需担心这一点,您可以专注于您的应用程序.当然,我们总能在我们的自动机制中添加或改进这些内容,因此我完全允许单个客户数据库可能需要此类操作.除了我提到的案例之外,我没有见过任何自己,甚至那些也很少成为问题.
我希望这可以为您提供一些背景信息,以了解为什么还没有在平台上完成 - 对于我们今天服务的绝大多数客户数据库而言,与其他迫切需求相比,这只是一个问题.当然,我们会重新审视构建每个计划周期所需的事项列表,并且我们会定期查看此类机会.
祝你好运 - 无论你的结果如何,我希望这能帮助你做出正确的选择.
此致,Conor Cunningham Architect,SQL
Alb*_*llo 10
您可以使用Azure自动化来安排索引维护任务,如下所述:使用Azure自动化重建SQL数据库索引
以下是步骤:
1)如果您没有,请提供自动化帐户,访问https://portal.azure.com并选择新建>管理>自动化帐户
2)创建自动化帐户后,打开详细信息,然后单击Runbook>浏览库
在搜索框中键入单词"indexes"和Runbook"Azure数据库中的索引表,如果它们具有高碎片",则会出现:
4)请注意,Runbook的作者是Microsoft的SC自动化产品团队.点击导入:
5)导入Runbook后,现在让我们将数据库凭据添加到资产中.单击Assets> Credentials,然后单击"Add a credential ..."按钮.
6)设置凭据名称(稍后将在Runbook上使用),数据库用户名和密码:
7)现在再次单击Runbooks,然后从列表中选择"Update-SQLIndexRunbook",并单击"编辑..."按钮.您将能够看到将要执行的PowerShell脚本:
8)如果要测试脚本,只需单击"测试窗格"按钮,即可打开测试窗口.引入所需的参数,然后单击Start以执行索引重建.如果发生任何错误,则会在结果窗口中记录错误.请注意,根据数据库和其他参数,这可能需要很长时间才能完成:
9)现在返回编辑器,然后单击"发布"按钮启用Runbook.如果我们点击"开始",会出现一个询问参数的窗口.但是,由于我们要安排此任务,我们将点击"计划"按钮:
10)单击Schedule链接为Runbook创建新的Schedule.我每周指定一次,但这取决于您的工作量以及索引如何随着时间的推移而增加碎片.您需要根据需要调整计划,并在执行之间执行初始查询:
11)现在介绍参数和运行设置:
注意:您可以使用具有不同设置的不同计划,即具有特定表的特定计划.
有了这个,你已经完成了.请记住根据需要更改"记录"设置:
归档时间: |
|
查看次数: |
8296 次 |
最近记录: |