调试PostgreSQL触发器性能

nbewdwxp  于 2023-05-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(232)

我有一个缓慢的删除查询。我使用EXPLAIN ANALYZE来理解瓶颈,我看到两个触发器很慢:

Trigger for constraint other_table_1_fid_fkey: time=3.644 calls=1
Trigger for constraint other_table_2_fid_fkey: time=6.289 calls=1

在此讨论之后,我添加了索引。other_table_1fid上的索引确实提高了性能。但是在other_table_2中为fid添加索引并没有带来任何不同,这似乎是delete查询中的瓶颈。
我的问题是如何调试(或EXPLAIN ANALYZE)触发器本身。
谢谢
为了解决我的具体问题,我暂时删除了外键约束,它提高了性能。

qojgxg4l

qojgxg4l1#

设置这些参数:

shared_preload_libraries = 'auto_explain'
auto_explain.log_min_duration = 0
auto_explain.log_analyze = on
auto_explain.log_buffers = on
auto_explain.log_triggers = on
auto_explain.log_nested_statements = on

然后重新启动PostgreSQL(以便shared_preload_libraries生效)并再次执行该语句。您将在PostgreSQL日志的触发器函数中找到所有SQL语句的执行计划。这将使您能够查找和调优慢速语句。

相关问题