带有 postgres 的游标,数据存储在哪里以及对数据库的调用次数

2024-03-09

您好,我正在使用 psycopg2 进行 postgres 访问。

我试图了解“光标”存储返回的行的位置。是将其作为临时表存储在数据库中还是存储在客户端?

游标(当您指定获取多行时)是否一次命中数据库一个查询,或者它是否命中数据库一次,获取第一组结果,然后当您迭代返回的值时,它获取下一组结果(缓冲) 。

我已经阅读了多篇关于光标的文章,但没有什么真正给出内部工作......

谢谢。


游标的数据集由服务器在执行第一次 FETCH 时准备。客户端应用程序仅接收后续 FETCH 语句的结果。

如果服务器无法使用索引来维护游标,则会创建临时数据集。您可以执行这个简单的测试:

create table test(i int, v text);
insert into test
select i, i::text
from generate_series(1, 5000000) i;

一一执行该脚本中的语句:

begin;

declare cur cursor 
for select * from test
order by random();             -- 17 ms

fetch next cur;                -- 37294 ms (*)

fetch next cur;                -- 0 ms
fetch prior cur;               -- 0 ms
fetch absolute 1000000 cur;    -- 181 ms
fetch relative 1000000 cur;    -- 163 ms
fetch first cur;               -- 0 ms
fetch last cur;                -- 0 ms

rollback;

第一个 FETCH (*) 的执行时间与创建类似临时表的时间大致相同:

create temp table temp_test as
select * from test
order by random();             -- 51684 ms

某些驱动程序可能在客户端有自己的光标实现。这应该在驱动程序文档中明确描述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 postgres 的游标,数据存储在哪里以及对数据库的调用次数 的相关文章

  • 对 numpy 数组的每 n 个元素求平均值

    我有一个 numpy 数组 我想创建一个新数组 它是每个连续三元组元素的平均值 因此 新数组的大小将是原始数组的三分之一 举个例子 np array 1 2 3 1 2 3 1 2 3 应该返回数组 np array 2 2 2 谁能建议一
  • 如何在仍然使用 unique = True 的同时允许 ModelForm 中的空字段?

    目前在models py I have class ModelName models Model rowname models CharField max length 100 blank True unique True 就确保相同的值不
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • python解释器自动重启而不返回答案

    调用递归函数时 python解释器会自动重新启动吗 我正在编写一个快速排序算法 并尝试对一个大的数字数组 顺序 10 4 进行排序 但是当我尝试对整个数组进行排序时 python 正在重新启动 即给我 重新启动 并且存储在内存中的所有值 函
  • 代码终止后保持 matplotlib / pyplot 窗口打开

    我希望 python 绘制一个图 在不阻塞控制流的情况下显示它 并在代码退出后使图保持打开状态 这可能吗 这个以及相关的主题存在于许多其他线程中 见下文 但我无法让情节保持开放且非阻塞 例如 如果我使用pyplot ion before p
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • 张量流 - 向量中的前 k 个值到二进制向量

    假设我有一个带有值的向量 0 4 1 2 8 7 0 2 如何获得前 k 个值的二进制向量 k 3 0 1 0 0 1 1 0 0 in 张量流 TensorFlow 的tf math top k https www tensorflow
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • XGBoostLibraryNotFound:在候选路径中找不到 XGBoost 库,您是否安装了编译器并在根路径中运行了 build.sh?

    我在移动 XGBoost 的 python package 目录时遇到这个问题 Traceback most recent call last File setup py line 19 in LIB PATH libpath find l
  • 如何通过不规则索引获取子张量?

    我想通过不规则索引获得子张量 这是我的问题 Input tensor 2x8x10x1 Batch x Height x Width x Channel index Height 0 1 4 5 index Width 0 1 4 5 8
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • setUp() 中的 if 条件忽略测试

    在unittest python库中 存在函数setUp and tearDown用于设置变量和其他测试前后的事情 如何运行或忽略 setUp 中条件的测试 您可以致电if cond self skipTest reason in setU
  • 获取SVG绘图的边界框

    我想提取 SVG 绘图的边界框 由于 Python 已经在系统上可用并且还用于执行其他任务 因此我不想使用 JavaScript 或任何其他语言 我的理解是是否可以计算单个元素的边界框 但我不知道如何计算 整个绘图的边界框只是所有元素的最小
  • 如何重写一个列表列表,使值的“孤岛”彼此唯一?

    假设我有一个列表列表 或更概念上准确的二维数组 list 1 1 0 0 0 1 1 2 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 1 0 我想识别具有相同值的不同区域并重写列表 以便每个区域都有唯一的值 如下所示 lis
  • 2D 矩阵上的 Numpy where()

    我有一个像这样的矩阵 t np array 1 2 3 foo 2 3 4 bar 5 6 7 hello 8 9 1 bar 我想获取行包含字符串 bar 的索引 在一维数组中 rows np where t bar 应该给我索引 0 3
  • 使用缓存时计算“页面浏览量”或“点击量”

    我有一个叫做show board 在其中 除其他外 我增加了一个字段Board views每次运行时加 1 以计算页面浏览量 问题是当我在该视图上使用 cache page 装饰器时 Board views仅在每次生成新的缓存视图时才会增加
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o
  • DataFrame 对象没有属性“sort_values”

    dataset pd read csv dataset csv fillna 100 dataset Id 0 dataset i 0 dataset j 0 entries dataset dataset Id 0 print type
  • 使用 Pandas 来“applymap”来访问索引/列?

    解决以下 pandas 问题的最有效方法是什么 这是一个简化的示例 其中包含数据框中的一些数据 import pandas as pd import numpy as np df pd DataFrame np random randint
  • gis计算点和多边形/边界之间的距离

    我想使用 python 计算一个点到一个国家边界之间的距离shapely 它应该工作得很好 point distance poly 例如在这里展示查找多边形形状上最近点的坐标 https stackoverflow com question

随机推荐

  • 具有 TestCoverageEnabled 的 Android 多模块项目会引发数据绑定错误

    我有一个多模块项目 其结构如下 这是解决此错误的代码 https github com ajitsing MultiModuleAndroid https github com ajitsing MultiModuleAndroid Roo
  • Spring Data:支持“删除”吗?

    我正在使用 Spring JPA 进行数据库访问 我能够找到诸如 findByName 和 countByName 之类的示例 我不必为此编写任何方法实现 我希望找到根据某些条件删除一组记录的示例 Spring JPA是否支持类似delet
  • 使用范围作为字典中的键值,最有效的方法是什么?

    我一直想知道如果定义范围的给定值不重叠 是否有某种数据结构或巧妙的方法使用字典 O 1 查找 来返回值 到目前为止 我一直在想 如果范围有一些恒定的差异 0 2 2 4 4 6 等 或者可以在 O log n 时间 因此 例如给定一本字典
  • 如何使用 jQuery 使 div 平滑地跟随滚动?

    在我的容器中有一些部分 框 但最后一个框应该跟随滚动当其他盒子都不可见时 因此 当用户向下滚动时 他会看到一个正常的侧边栏 但是当用户向下滚动足够多时 侧边栏结束 但最后一个框开始出现在屏幕顶部 我在不同类型的网站上见过很多这样的情况 我现
  • 在 Pandas 中加载通用 Google 电子表格

    当我尝试在 pandas 中加载 Google 电子表格时 from StringIO import StringIO import requests r requests get https docs google com spreads
  • 无法使用conda和python 3.8安装tensorflow

    最近 我升级到了 Anaconda3 2020 07 它使用 python 3 8 在以前版本的anaconda中 tensorflow安装成功 该版本未能成功安装Tensorflow 我运行了下面的命令 conda install ten
  • 如何将 Web 应用程序转换为桌面可执行文件?

    我使用 AngularJS jQuery Bootstrap 和 AJAX REST API 构建了 HTML 应用程序 是否可以为 Windows 操作系统创建可执行文件 安装程序 如果没有任何第三方软件 它应该看起来像本机应用程序 但只
  • WCF 与 Flash 教程

    我是 WCF 的初学者 我选择 WCF 而不是 Web 服务 因为我读过的所有文章和博客似乎都指出 ASMX 已经是旧闻了 我读过一些有关旧 Web 服务和 WCF 之间差异的内容 并且了解了总体思路 我也采取了MSDN WCF 教程 ht
  • Node.js / Express.js - 如何覆盖/拦截 res.render 函数?

    我正在使用 Connect Express js 构建 Node js 应用程序 并且我想拦截 res render view option 函数以运行一些代码 然后再将其转发到原始渲染函数 app get someUrl function
  • 如何更改所用纱线的版本?

    我使用Homebrew安装yarn 跑步yarn v显示我目前使用0 23 2 I ran brew upgrade yarn获取最新版本 即0 24 6 Homebrew成功升级后yarn I run yarn v又来了 不过版本还是0
  • MvvmCross 自定义事件绑定事件参数

    我使用 MvvmCross 在 EditText 上为 FocusChange 事件创建了自定义绑定 我可以绑定事件并触发 但我不知道如何传递事件参数 我的自定义绑定是这样的 using Android Views using Androi
  • 使用 python 在 CSV 文件中搜索字符串并写入结果

    usr bin python import csv import re string 1 OneTouch AT string 2 LinkRunner AT string 3 AirCheck searched OneTouch AT L
  • R 中的左移列

    我有一个这样的数据集 temp lt structure list col 1 c P9603 11040 80053 col 2 c 84484 80061 80061 A0428 85025 col 3 c V2632 82310 86
  • 谷歌电子表格公式中的多个嵌套 if 块

    我试图编写一个嵌套的 if 语句 如下伪代码 IF h4 1 CORRECT IF h4 2 CORRECT IF h4 3 CORRECT IF h4 4 CORRECT 但是 如果我写出代码并每次添加 if 语句 我会收到以下错误 IE
  • 使用 PHP 将时间添加 30 秒

    我怎样才能给这个时间加上30秒呢 time date m d Y h i s a time 我不知道该怎么做 因为它显示了很多不同的时间单位 而我只想添加 30 秒 time date m d Y h i s a time 30
  • 输入大数以避免 NumberFormatException

    我必须控制从1到9999999999的输入 代表学校的注册号 原始类型 long 只能容纳大约 2 000 000 000 我如何存储这个大小的数字 根据this http docs oracle com javase tutorial j
  • www.sandbox.itunes.apple.com 已关闭

    在此先感谢您的帮助 具体问题 由于在沙盒环境中测试应用内购买时出现错误 1001 无法连接到 iTunes 商店 知道是否重要吗 www sandbox itunes apple com下降了吗 如果没有 我怎么知道苹果的沙盒是否已关闭 背
  • 如何创建一个所有字段都是公共的公共结构,而无需为每个字段重复“pub”?

    如何在 Rust 中定义一个公共结构 其中所有字段都是公共的 而不必重复pub每个字段前面的修饰符 A pub struct宏将是理想的 pub struct Foo a i32 b f64 这相当于 pub struct Foo pub
  • 如何创建动画切换按钮?

    是的 我可以创建带有 2 张图片的 ToggleButton 开 关 但我想创建带有 3 5 张图片的 ToggleButton 例如 什么时候关闭 我单击 关闭图片 中图 图片上 它什么时候开启 我点击 图片上 中图 关闭图片 所以它就像
  • 带有 postgres 的游标,数据存储在哪里以及对数据库的调用次数

    您好 我正在使用 psycopg2 进行 postgres 访问 我试图了解 光标 存储返回的行的位置 是将其作为临时表存储在数据库中还是存储在客户端 游标 当您指定获取多行时 是否一次命中数据库一个查询 或者它是否命中数据库一次 获取第一