如何解决执行选择查询时出现共享内存不足错误
使用:Postgres 10.2
忽略一些不相关的列,我有这些列的表动物(省略了一些不相关的列):
animalid PK number
location (text)
type (text)
name (text)
data (jsonb) for eg: {"age": 2,"tagid": 11 }
要点:
- 该表被分区为 1000 个子表。
- 每个表可能有大约 100,000 条记录,因此总共有大约 1 亿条记录
我的应用程序尝试根据动物 ID 获取动物。例如:
select "animals"."animalid","animals"."type","animals"."data","animals"."location","animals"."name"
from "animals"
where "animals"."animalid" = 2241
尽管如此,会引发错误(当有很多请求时):
ERROR: out of shared memory
Hint: You might need to increase max_locks_per_transaction.
我认为选择查询不应受到这些表上的锁的影响?或者是不是这个应用程序之外的查询会因为在分区表上获取锁而填满内存,从而影响选择查询?
我可以选择直接使用分区表(因为有确定它的逻辑)。这是否有助于解决问题?
如果有更新它们的分区表和查询,为 max_locks_per_transaction 设置使用更大的值通常是个好主意吗?
我主要担心的是,我不太明白为什么选择查询会在这里受到影响。谁能帮忙解释一下?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。