在 Azure Database for PostgreSQL 灵活服务器中配置索引优化

适用于: Azure Database for PostgreSQL 灵活服务器

可以通过一组控制索引优化行为的参数来启用、禁用和配置索引优化,例如优化会话的运行频率。

启用索引优化

索引优化取决于使用查询存储的监视器性能。 我们不建议在可突发定价层上启用查询存储,以避免产生性能影响。 出于同样的原因,不建议对可突发层上的服务器进行索引优化。

索引优化是一项选择加入功能,默认情况下它未在服务器上启用。 对于给定服务器上的所有数据库,可以将其进行全局启用或禁用,但无法针对每个数据库启用或禁用。

在 Azure 门户中启用索引优化(通过服务器参数)

  1. 登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在菜单的“设置”部分中选择“服务器参数”

  3. 搜索 pg_qs.query_capture_mode 参数。

  4. 将值设置为 TOPALL,具体取决于是要跟踪顶级查询还是嵌套查询。 嵌套查询是在函数或过程中执行的那些查询。 若要查看索引优化的最高优势,建议将此参数设置为 ALL

    显示如何设置 pg_qs.query_capture_mode 服务器参数值的屏幕截图。

  5. 搜索 index_tuning.mode 参数并将其值设置为 REPORT

    显示如何将 index_tuning.mode 服务器参数的值设置为 REPORT 的屏幕截图。

  6. 选择“保存”。

    显示如何保存修改的参数以便其生效的屏幕截图。

  7. 在考虑启用功能之前,请先等待部署成功完成。

    显示部署已启动,成功完成后会保存修改的服务器参数的屏幕截图。

在 Azure 门户中启用索引优化(通过索引优化)

  1. 登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在菜单的“智能性能”部分选择“索引优化”

  3. 如果 pg_qs.query_capture_mode 设置为 NONEindex_tuning.mode 设置为 OFF,则索引优化页将提供启用索引优化的选项。

  4. 选择两个“启用索引优化”按钮之一,以启用索引优化功能及其所需的查询存储依赖项,前提是禁用了查询存储。

    显示如何通过索引优化页启用索引优化的屏幕截图。

  5. 启用索引优化后,允许索引优化引擎在 12 小时内分析查询存储收集的工作负荷,并最终生成或删除索引建议。

重要

通过:启用索引优化:按钮启用索引优化时,如果 pg_qs.query_capture_mode 设置为 NONE,则会将其设置为 ALL。 如果它已设置为 TOPALL,则将保持其当前状态。

禁用索引优化

还可以通过更改相应的服务器参数或利用“索引优化”页来实现禁用索引优化。

在 Azure 门户中禁用索引优化(通过服务器参数)

  1. 登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在菜单的“设置”部分中选择“服务器参数”

  3. 搜索 index_tuning.mode 参数并将其值设置为 OFF

    显示如何将 index_tuning.mode 服务器参数的值设置为 OFF 的屏幕截图。

  4. 禁用索引优化不会自动禁用查询存储。 评估是否要继续使用利用查询存储监视性能,以监视工作负荷的性能并使其保持启用状态,或者,如果要禁用它,请将 pg_qs.query_capture_mode 设置为 NONE

  5. 选择“保存”。

    显示如何保存修改的参数以便其生效的屏幕截图。

  6. 在考虑禁用功能之前,请先等待部署成功完成。

    显示部署已启动,成功完成后会保存修改的服务器参数的屏幕截图。

在 Azure 门户中禁用索引优化(通过索引优化)

  1. 登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。

  2. 在菜单的“Query Performance Insight”部分选择“索引优化”

  3. 选中“禁用索引优化”按钮以禁用该功能。

    显示如何通过索引优化页禁用索引优化的屏幕截图。

  4. 评估是否要继续使用利用查询存储监视性能,以监视工作负荷的性能并使其保持启用状态,或者,如果要禁用它,请将 pg_qs.query_capture_mode 设置为 NONE

重要

通过“禁用索引优化”按钮禁用索引优化时,服务器参数 pg_qs.query_capture_mode 保持不变。

配置选项

启用索引优化后,它会以 index_tuning.analysis_interval 服务器参数(默认为 720 分钟或 12 小时)中配置的频率进行唤醒,并开始分析查询存储在该时间段内记录的工作负荷。

请注意,如果更改 index_tuning.analysis_interval 的值,则仅在下一个计划执行完成后才会观察到该值。 例如,如果在上午 10:00 启用索引优化一天,由于 index_tuning.analysis_interval 的默认值为 720 分钟,则第一次执行计划于同一天的晚上 10:00 开始。 对上午 10:00 到晚上 10:00 之间的 index_tuning.analysis_interval 的值所做的任何更改都不会影响初始计划。 仅当计划的运行完成时,它将读取为 index_tuning.analysis_interval 设置的当前值,并根据该值计划下一次执行。

以下选项可用于配置索引优化参数:

参数 说明 默认 范围 单元
index_tuning.analysis_interval 将 index_tuning.mode 设置为 REPORT 时触发每个索引优化会话的频率。 720 60 - 10080 分钟数
index_tuning.max_columns_per_index 任何建议索引的索引键中可以包含的最大列数。 2 1 - 10
index_tuning.max_index_count 在一个优化会话期间为每个数据库推荐的最大索引。 10 1 - 25
index_tuning.max_indexes_per_table 每个表可推荐的最大索引数。 10 1 - 25
index_tuning.max_queries_per_database 每个数据库可为其推荐索引的最慢查询数。 25 5 - 100
index_tuning.max_regression_factor 在一个优化会话中分析的任何查询上推荐索引引入的可接受回归。 0.1 0.05 - 0.2 percentage
index_tuning.max_total_size_factor 任何给定数据库的所有建议索引都可以使用的最大总磁盘空间百分比( 以总磁盘空间百分比为单位)。 0.1 0 - 1 percentage
index_tuning.min_improvement_factor 建议的索引必须提供给在一个优化会话中分析的至少一个查询的成本改进。 0.2 0 - 20 percentage
index_tuning.mode 将索引优化配置为已禁用(OFF),或仅启用以仅发出建议。 通过将 pg_qs.query_capture_mode 设置为 TOPALL 来启用查询存储。 OFF OFF, REPORT
index_tuning.unused_dml_per_table 影响表的每日平均 DML 操作的最小数目,以便考虑删除其未使用的索引。 1000 0 - 9999999
index_tuning.unused_min_period 未根据系统统计信息使用索引的最小天数,以便考虑删除索引。 35 30 - 70
index_tuning.unused_reads_per_table 影响表的每日平均读取操作的最小数目,以便考虑删除其未使用的索引。 1000 0 - 9999999