PostgreSQL中基于内连接跨表复制数据遇执行停滞问题
跨Schema更新语句长时间无响应的临时解决办法
我最近碰到了一个有点棘手的数据库问题,分享下我的经历和解决思路:
我有两个独立的数据库schema:bikeshare(里面有bs表)和spatial(里面有docks表),两张表可以通过bikeshare.bs.start_dock_code和spatial.docks.id做关联——之前执行内连接查询完全没问题:
SELECT * FROM bikeshare.bs INNER JOIN spatial.docks ON bikeshare.bs.start_dock_code = spatial.docks.id;
后来我需要把spatial.docks表中的asumi_nr字段值同步到bikeshare.bs表的neighbourhood_code字段,就写了这条更新语句:
UPDATE bikeshare.bs SET neighbourhood_code = spatial.docks.asumi_nr FROM spatial.docks WHERE bikeshare.bs.start_dock_code = spatial.docks.id;
结果这条语句既不报错,也不执行完成,一直卡在“等待查询完成”的状态,我足足等了30多分钟都没动静。
试了各种排查方向(比如检查锁表状态、索引有效性)都没找到根因,最后抱着试试看的心态重装了整个数据库,没想到重装之后再执行这条更新语句,居然秒级完成了!
虽然我至今没搞清楚到底是数据库的什么底层问题导致的卡死,但作为新手,这个“笨办法”确实解决了我的燃眉之急,分享出来给遇到类似情况的小伙伴做个参考。
内容的提问来源于stack exchange,提问作者SpatialAnalyst
相关产品推荐
相关产品推荐

