记一次外键索引导致数据库删除缓慢问题排查

发布时间:2026/9/11 9:35:12
记一次外键索引导致数据库删除缓慢问题排查 排查思路通过断点查看卡在了MP的delete操作上。使用Navicate查看锁信息发现没有死锁。先查看active的sql语句将事务中断。使用explain anylize分析单条删除发现外键关联的大表上耗时超过一秒。查询资料发现pgsql删除会触发外键检查这个表与核心业务表还有通过另一表的关联数据量为n*n我猜测会进行多次全表扫描。对两个表分别建立外键索引以及覆盖索引毫秒级删除完成五千条记录秒级完成。结果原本核心业务表是没有加外键索引的后面有一次变动加上了外键索引。pgsql的外键检查增加了删除耗时表内parentId级联删也导致了严重的性能问题。结论postgresql不会自动加外键索引若使用外键关联的关联表数据量巨大请在表上添加外键索引不知道能不能这么称呼就是在给大表的外键连接字段加索引删除耗时从2s/条提升至20ms/条因为外键关联太多了有点崩溃。有级联删的最好是先删除关联内容。