将 PostgreSQL text/bytea 列迁移到大对象?

2024-03-09

我有一个表(10k 行),用于存储大值text柱子。当前最大的未压缩大小为 417 MB(烘烤后为 85 MB)。此设计的缺陷是无法传输这些值(例如通过 JDBC)——使用此列的任何内容都必须将整个内容读入内存。

是否有任何工具或快捷方式可用于将此列迁移到大型对象?最大限度地减少所需的工作磁盘和内存。

我将使用lo_compat_privileges如果这有什么区别的话。


为什么不直接使用lo_from_bytea https://www.postgresql.org/docs/current/lo-funcs.html?

Example:

SELECT 'test'::text::bytea;
   bytea    
------------
 \x74657374
(1 row)

SELECT lo_from_bytea(0, 'test'::text::bytea);
 lo_from_bytea 
---------------
        274052
(1 row)

SELECT lo_get(274052);
   lo_get   
------------
 \x74657374
(1 row)

因此,要实际将数据从文本移动(最好有备份)到 OID,您可以执行以下操作:

ALTER TABLE mytable ADD COLUMN value_lo OID;
UPDATE mytable SET value_lo = lo_from_bytea(0, value::bytea), value = NULL;
ALTER TABLE mytable DROP COLUMN value;
ALTER TABLE mytable RENAME COLUMN value_lo TO value;

...最后,由于 PostgreSQL 是一个 MVCC 数据库,不会立即删除所有数据,因此您应该使用VACUUM FULL https://www.postgresql.org/docs/current/sql-vacuum.html or a CLUSTER https://www.postgresql.org/docs/current/sql-cluster.html.

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

将 PostgreSQL text/bytea 列迁移到大对象? 的相关文章

随机推荐

  • 在类声明/定义中包含标头

    我知道你可以这样做 def h A int x A h class A public include def h A cpp A A x 0 int main A a return 0 我的问题是 你为什么要这样做 有什么优点吗 我可以看到
  • flutter_bloc 库中的存储库提供程序在推送新路由时不提供存储库

    我正在使用 flutter bloc 库来构建我的应用程序 除了 BlocProvider 之外 我还使用存储库提供程序 因为我将在整个应用程序中广泛使用特定的存储库 但我在上下文方面遇到了问题 下面是我的代码片段 主程序 dart voi
  • 本地球拍

    我正在书中阅读有关本地定义的内容 并且遇到了这个例子 local define f x x 5 define g alon cond empty alon empty else cons f first alon g rest alon g
  • Web Platform Installer 3.0 中的“IIS 7 推荐配置”是什么?

    今天刚安装了新的 IIS Express 看到 Web 平台安装程序也有安装 IIS 7 推荐配置 的选项 但我实际上无法弄清楚它的作用是什么 有人用吗 quote site http forums iis net t 1174703 as
  • Python类实例变量隔离[重复]

    这个问题在这里已经有答案了 我是一名自学成才的程序员 最近在学习Python 我遇到了一个奇怪的问题 但我想这只是我不了解 python 语法和 或程序流程的结果 我有一堂课叫Test这是文件中的TestClass py class Tes
  • 使用 AngularFire,是否可以创建关系型数据库?或者访问 UniqueID?

    I saw 这个帖子 https www firebase com blog 2013 04 12 denormalizing is normal html在 Firebase 的博客上解释了使用其平台创建关系数据对象的最佳方法 我正在努力
  • Chrome 扩展 - onRequest/sendRequest 与 onMessage/sendMessage [重复]

    这个问题在这里已经有答案了 退房这个示例扩展 http src chromium org viewvc chrome trunk src chrome common extensions docs examples api pageActi
  • 如何完全销毁引导模式窗口?

    我已经利用过模态窗口向导实现大约有 4 5 个步骤 我需要在之后彻底摧毁它最后一步 完成时 和OnCancel 步骤 无需刷新页面 我当然可以隐藏它 但是当我再次打开它时 隐藏模式窗口会恢复所有内容 有人能帮我解决这个问题吗 谢谢 任何提示
  • Tkinter 中的进度条,里面有一个标签

    是否可以改进 Tkinter Python 中的进度条 在中间添加标签 例如 读取文件 我试图找到一个优雅的编码解决方案 但没有真正的结果 from Tkinter import import ttk import tkFileDialog
  • Android 将 JSONArray 读入 JSONArray [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我如何读取包含 json 数组的 json 数组 这是我的 json product name myApp config grade
  • selenium 的 PageFactory 类及其与 FindBy Annotation 一起使用时的工作方式

    我有一个问题 当我使用 FindBy 注释时 Selenium webdriver 的 PageFactory initElements 方法如何工作 我有一段这样的代码 Class PageObject FindBy id usernam
  • 调整 UIAlertView 内 UIPickerView 的大小

    我想放一个UIPickerView in a UIAlertView但我似乎无法正确调整它的大小 这是我得到的 这是我的代码 let alertView UIAlertController title Select item from li
  • Javascript - 异步调用后同步

    我有一个 Javascript 对象 需要 2 次调用外部服务器来构建其内容并执行任何有意义的操作 该对象的构建使得实例化它的实例将自动进行这两个调用 这两个调用共享一个公共回调函数 该函数对返回的数据进行操作 然后调用另一个方法 问题是在
  • Angular Bootstrap 在 Angular 13 项目上给出错误

    我正在尝试安装角度引导程序 https ng bootstrap github io home在我的 Angular 13 项目中 如下所示 ng 添加 ng bootstrap ng bootstrap 但是当我在此语句上按 Y 时 我立
  • 如何在 Ektron 中选择属于某个分类的库项目

    我使用的是 Ektron CMS 版本 8 5 SP2 我有一些分类项目 有些是实际页面 有些是库项目 Word 文件和 PDF 等文档 假设我的分类中有 3 个页面和 2 个库项目 总共 5 个项目 我使用以下代码 ContentMana
  • CakePHP 2.0 $this->表单->input()

    这是我的add tcp 表名称 组 表字段 group id group desc PK group id 这是我的控制器 class GroupsController extends AppController public helper
  • 条形图的峰度、偏度? - Python

    在Python中确定条形图的倾斜 峰度的有效方法是什么 考虑到条形图没有分箱 与直方图不同 这个问题没有多大意义 但我想做的是确定图的高度与距离 而不是频率与箱 的对称性 换句话说 给定沿距离 x 测量的高度 y 值 即 y 6 18 10
  • 为什么 roxygen2 不会自动更新描述文件中的“导入”?

    我正在努力密切关注 hadley sbook http r pkgs had co nz 学习编写 R 包的最佳实践 我很高兴读到这些关于哲学 http r pkgs had co nz intro html本书内容 任何可以自动化的事情都
  • 如何在 ExpressionVisitor 中计算表达式?

    我需要在执行表达式之前使用 ExpressionVisitor 来分析它 根据我的需要 我需要评估除法表达式的正确部分 但我不知道该怎么做 这是我的示例代码 internal class RulesChecker ExpressionVis
  • 将 PostgreSQL text/bytea 列迁移到大对象?

    我有一个表 10k 行 用于存储大值text柱子 当前最大的未压缩大小为 417 MB 烘烤后为 85 MB 此设计的缺陷是无法传输这些值 例如通过 JDBC 使用此列的任何内容都必须将整个内容读入内存 是否有任何工具或快捷方式可用于将此列