适用于: Azure Database for PostgreSQL 灵活服务器
可以通过一组控制索引优化行为的参数来启用、禁用和配置索引优化,例如优化会话的运行频率。
启用索引优化
索引优化取决于使用查询存储的监视器性能。 我们不建议在可突发定价层上启用查询存储,以避免产生性能影响。 出于同样的原因,不建议对可突发层上的服务器进行索引优化。
索引优化是一项选择加入功能,默认情况下它未在服务器上启用。 对于给定服务器上的所有数据库,可以将其进行全局启用或禁用,但无法针对每个数据库启用或禁用。
在 Azure 门户中启用索引优化(通过服务器参数)
登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。
在菜单的“设置”部分中选择“服务器参数”。
搜索
pg_qs.query_capture_mode
参数。将值设置为
TOP
或ALL
,具体取决于是要跟踪顶级查询还是嵌套查询。 嵌套查询是在函数或过程中执行的那些查询。 若要查看索引优化的最高优势,建议将此参数设置为ALL
。搜索
index_tuning.mode
参数并将其值设置为REPORT
。选择“保存”。
在考虑启用功能之前,请先等待部署成功完成。
在 Azure 门户中启用索引优化(通过索引优化)
登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。
在菜单的“智能性能”部分选择“索引优化”。
如果
pg_qs.query_capture_mode
设置为NONE
或index_tuning.mode
设置为OFF
,则索引优化页将提供启用索引优化的选项。选择两个“启用索引优化”按钮之一,以启用索引优化功能及其所需的查询存储依赖项,前提是禁用了查询存储。
启用索引优化后,允许索引优化引擎在 12 小时内分析查询存储收集的工作负荷,并最终生成或删除索引建议。
重要
通过:启用索引优化:按钮启用索引优化时,如果 pg_qs.query_capture_mode
设置为 NONE
,则会将其设置为 ALL
。 如果它已设置为 TOP
或 ALL
,则将保持其当前状态。
禁用索引优化
还可以通过更改相应的服务器参数或利用“索引优化”页来实现禁用索引优化。
在 Azure 门户中禁用索引优化(通过服务器参数)
登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。
在菜单的“设置”部分中选择“服务器参数”。
搜索
index_tuning.mode
参数并将其值设置为OFF
。禁用索引优化不会自动禁用查询存储。 评估是否要继续使用利用查询存储监视性能,以监视工作负荷的性能并使其保持启用状态,或者,如果要禁用它,请将
pg_qs.query_capture_mode
设置为NONE
。选择“保存”。
在考虑禁用功能之前,请先等待部署成功完成。
在 Azure 门户中禁用索引优化(通过索引优化)
登录到 Azure 门户并选择你的 Azure Database for PostgreSQL 灵活服务器实例。
在菜单的“Query Performance Insight”部分选择“索引优化”。
选中“禁用索引优化”按钮以禁用该功能。
评估是否要继续使用利用查询存储监视性能,以监视工作负荷的性能并使其保持启用状态,或者,如果要禁用它,请将
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 设置为 TOP 或 ALL 来启用查询存储。 |
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 |