我有一张表“aaa”并不是很大。它的行数少于10,000行。但是,此表上的读取操作非常频繁。
每当我尝试使用指向“aaa”的外键创建一个新表“bbb”时。操作锁定,并且无法读取“aaa”。查询也似乎永远不会完成。
ALTER TABLE "bbb" ADD CONSTRAINT "topic_id_refs_id_3942a46c6ab2c0b4" FOREIGN KEY ("topic_id") REFERENCES "aaa" ("id") DEFERRABLE INITIALLY DEFERRED;
目前的解决方法是在非高峰时段创建任何新表格,例如重新启动数据库后的午夜。
我想知道是否有任何适当的解决方案。这是影响所有关系数据库的问题吗?我的db是PostgreSQL 8.3。
答案 0 :(得分:2)
ALTER TABLE
需要表锁,因此您无法使用该表进行读取。你的问题听起来像锁的问题,请检查pg_stat_activity以查看发生了什么。
Offtopic:为什么你会在午夜后重启你的数据库?我们从不重启数据库,没有必要。