
排查思路通過斷點查看卡在了MP的delete操作上。使用Navicate查看鎖信息發現沒有死鎖。先查看active的sql語句將事務中斷。使用explain anylize分析單條刪除發現外鍵關聯的大表上耗時超過一秒。查詢資料發現pgsql刪除會觸發外鍵檢查這個表與核心業務表還有通過另一表的關聯數據量為n*n我猜測會進行多次全表掃描。對兩個表分別建立外鍵索引以及覆蓋索引毫秒級刪除完成五千條記錄秒級完成。結果原本核心業務表是沒有加外鍵索引的后面有一次變動加上了外鍵索引。pgsql的外鍵檢查增加了刪除耗時表內parentId級聯刪也導致了嚴重的性能問題。結論postgresql不會自動加外鍵索引若使用外鍵關聯的關聯表數據量巨大請在表上添加外鍵索引不知道能不能這么稱呼就是在給大表的外鍵連接字段加索引刪除耗時從2s/條提升至20ms/條因為外鍵關聯太多了有點崩潰。有級聯刪的最好是先刪除關聯內容。