通过 ARM 启用 Azure SQL 数据库自动调优
Enabling Azure SQL Database Automatic Tuning via ARM
我找不到任何关于在发布管道中启用自动调整的文档,即通过 ARM 模板或 powershell,也找不到 github arm quickstarts。
我可以在资源浏览器中看到提到了自动调整,但我没有看到这在 ARM 模板中如何反映。
{
"name": "Microsoft.Sql/servers/automaticTuning/read",
"display": {
"provider": "Microsoft SQL Database",
"resource": "Server Automatic Tuning",
"operation": "Get automatic tuning settings for the server",
"description": "Returns automatic tuning settings for the server"
}
},
{
"name": "Microsoft.Sql/servers/automaticTuning/write",
"display": {
"provider": "Microsoft SQL Database",
"resource": "Server Automatic Tuning",
"operation": "Update automatic tuning settings for the server",
"description": "Updates automatic tuning settings for the server and returns updated settings"
}
},
虽然存在适用于此功能的基础设施,但目前尚未正式支持此功能。我们正在努力在不久的将来提供支持。
Alex,正如 Estienne 提到的,ARM 模板目前不支持此功能,但有其他方法可以做到这一点。
1) 所有新建的数据库,默认继承服务器的自动调优设置。因此,如果您在服务器级别配置自动调整,所有新数据库将在创建时继承这些设置。
2) 可以使用T-SQL,即可以运行对数据库配置自动调优。以下 T-SQL 将在数据库级别配置自动调整:
ALTER DATABASE current SET AUTOMATIC_TUNING = AUTO | INHERIT | CUSTOM
选择 AUTO,您将获得一组默认选项 - CREATE_INDEX 和 FORCE_LAST_GOOD_PLAN 已启用。选择继承,您将从服务器继承设置。选择 CUSTOM,您将需要明确说明所有自动调整选项。
如果你想明确地 enable/disable 一些选项,你可以使用这个:
ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = DEFAULT, CREATE_INDEX = ON, DROP_INDEX = OFF )
将一些选项设置为 DEFAULT 将选择数据库级配置。
3) 您可以使用 REST API 配置自动调整。是这样的:
PATCH /subscriptions/{SUBID}/resourceGroups/{RGNAME}/providers/Microsoft.Sql/servers/{SRVNAME}/databases/{DBNAME}/automaticTuning/current?api -版本=2017-03-01-预览HTTP/1.1
主持人:management.azure.com
授权:不记名
内容类型:application/json
缓存控制:无缓存
{ "properties": { "desiredState": "Custom", "options": { "forceLastGoodPlan": "On", "createIndex" : "On", "dropIndex" : "Off" }}}
很快您也可以通过 PowerShell 和托管库进行配置。
现在可以通过 ARM 模板在逻辑服务器或数据库级别设置自动调整选项。我在 Azure 门户上使用 Automation Script
blade 来获取这些信息:
Sql 服务器等级:
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'ForceLastGoodPlan')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'CreateIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'DropIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'DbParameterization')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'DefragmentIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
}
数据库级别:
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'ForceLastGoodPlan')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'CreateIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'DropIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'DbParameterization')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/DefragmentIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
}
我找不到任何关于在发布管道中启用自动调整的文档,即通过 ARM 模板或 powershell,也找不到 github arm quickstarts。
我可以在资源浏览器中看到提到了自动调整,但我没有看到这在 ARM 模板中如何反映。
{
"name": "Microsoft.Sql/servers/automaticTuning/read",
"display": {
"provider": "Microsoft SQL Database",
"resource": "Server Automatic Tuning",
"operation": "Get automatic tuning settings for the server",
"description": "Returns automatic tuning settings for the server"
}
},
{
"name": "Microsoft.Sql/servers/automaticTuning/write",
"display": {
"provider": "Microsoft SQL Database",
"resource": "Server Automatic Tuning",
"operation": "Update automatic tuning settings for the server",
"description": "Updates automatic tuning settings for the server and returns updated settings"
}
},
虽然存在适用于此功能的基础设施,但目前尚未正式支持此功能。我们正在努力在不久的将来提供支持。
Alex,正如 Estienne 提到的,ARM 模板目前不支持此功能,但有其他方法可以做到这一点。
1) 所有新建的数据库,默认继承服务器的自动调优设置。因此,如果您在服务器级别配置自动调整,所有新数据库将在创建时继承这些设置。
2) 可以使用T-SQL,即可以运行对数据库配置自动调优。以下 T-SQL 将在数据库级别配置自动调整:
ALTER DATABASE current SET AUTOMATIC_TUNING = AUTO | INHERIT | CUSTOM
选择 AUTO,您将获得一组默认选项 - CREATE_INDEX 和 FORCE_LAST_GOOD_PLAN 已启用。选择继承,您将从服务器继承设置。选择 CUSTOM,您将需要明确说明所有自动调整选项。
如果你想明确地 enable/disable 一些选项,你可以使用这个:
ALTER DATABASE current SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = DEFAULT, CREATE_INDEX = ON, DROP_INDEX = OFF )
将一些选项设置为 DEFAULT 将选择数据库级配置。
3) 您可以使用 REST API 配置自动调整。是这样的:
PATCH /subscriptions/{SUBID}/resourceGroups/{RGNAME}/providers/Microsoft.Sql/servers/{SRVNAME}/databases/{DBNAME}/automaticTuning/current?api -版本=2017-03-01-预览HTTP/1.1
主持人:management.azure.com
授权:不记名
内容类型:application/json
缓存控制:无缓存
{ "properties": { "desiredState": "Custom", "options": { "forceLastGoodPlan": "On", "createIndex" : "On", "dropIndex" : "Off" }}}
很快您也可以通过 PowerShell 和托管库进行配置。
现在可以通过 ARM 模板在逻辑服务器或数据库级别设置自动调整选项。我在 Azure 门户上使用 Automation Script
blade 来获取这些信息:
Sql 服务器等级:
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'ForceLastGoodPlan')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'CreateIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'DropIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'DbParameterization')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
},
{
"type": "Microsoft.Sql/servers/advisors",
"name": "[concat(parameters('sqlserverName'), '/', 'DefragmentIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]"
]
}
数据库级别:
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'ForceLastGoodPlan')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'CreateIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'DropIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/', 'DbParameterization')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.Sql/servers/databases/advisors",
"name": "[concat(parameters('sqlserverName'), '/', parameters('databaseName'), '/DefragmentIndex')]",
"apiVersion": "2014-04-01",
"scale": null,
"properties": {
"autoExecuteValue": "Disabled"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('sqlserverName'))]",
"[resourceId('Microsoft.Sql/servers/databases', parameters('sqlserverName'), parameters('databaseName'))]"
]
}