您好,
我们基于 Azure 的“Azure Database for PostgreSQL”实例托管我们的 Discourse 论坛。该服务的一个优势是能够根据“数据库特征”和使用情况提供性能建议。
自从迁移到 Azure 后,我们收到了一些关于缺失索引和可能冗余索引的提示,想与大家分享。
在创建这些缺失的索引后,我们观察到整体性能有轻微(幅度不大)的提升,但我们无法应用 DROP INDEX 建议,因为这可能会破坏即将进行的更新或数据库迁移。无论如何,我们无法确定这些索引是否可以安全删除,或者删除后是否会对性能产生负面影响。
以下是 Azure 建议我们创建的索引(影响程度为“低”和“中等”):
create-indexes.csv (1.5 KB)
以下是针对“已覆盖”索引的建议:
摘要
删除表
public.optimized_images上的索引index_optimized_images_on_upload_id。
原因:该索引已被index_optimized_images_on_upload_id_and_width_and_height覆盖。
删除表
public.post_revisions上的索引index_post_revisions_on_post_id。
原因:该索引已被index_post_revisions_on_post_id_and_number覆盖。
删除表
public.post_timings上的索引post_timings_summary。
原因:该索引已被post_timings_unique覆盖。
删除表
public.topic_links上的索引index_topic_links_on_topic_id。
原因:该索引已被unique_post_links覆盖。
删除表
public.post_uploads上的索引index_post_uploads_on_post_id。
原因:该索引已被idx_unique_post_uploads覆盖。
对于上述“删除”建议,建议您谨慎对待。我们认为这主要影响的是数据库总体大小,而非提升性能。例如:我们的整个数据库约为 120GB,而所有这些建议释放的空间仅为 422MB。Azure 本身也将影响定义为“低”。因此,这似乎仅仅是一次清理操作。
如上所述,我分享这些信息是希望它能帮助您在性能调优方面略作改进。除了这些索引外,在我们使用 Azure 服务期间,Azure 未提供其他任何建议。
此致
Sascha