jla*_*rcy 3 postgresql concurrency cursors
我想用 PostgreSQL 游标确认一点。
我必须为巨大的结果集查询(超过 1Go 的小重量行)实现一个选择工厂。因此,我已经了解了游标,并按以下方式执行查询:
我创建一个光标:
DECLARE HashedCursorName CURSOR FOR SELECT * FROM BigResultSetQuery;
Run Code Online (Sandbox Code Playgroud)
我重复获取少量结果集:
FETCH 1000 FROM HashedCursorName;
Run Code Online (Sandbox Code Playgroud)
当结果集耗尽时,我关闭游标:
CLOSE HashedCursorName;
Run Code Online (Sandbox Code Playgroud)
我需要解决并发问题,我的意思是,许多用户必须能够同时使用 API 过程中存储的相同查询。当用户执行存储的查询时,他会收到一个新连接。我首先在 API 中修改了我的游标名称,因为我认为如果调用所有选择查询,StaticCursorName
我会遇到两个用户试图创建相同游标或读取相同游标的问题。一切都按预期进行。
然后我尝试将光标名称更改为静态名称,它仍然有效。我能够同时运行多个相同的查询。然后我想知道,光标是否绑定到连接?,然后PostgreSQL是通过将游标分配给会话来解决并发的吗?
归档时间: |
|
查看次数: |
2726 次 |
最近记录: |