问题标签 [postgresql-8.3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 在非常大的表上运行 AUTO_VACUUM(以防止回绕)的问题
我遇到了问题,需要一些建议。我通常是一名开发人员,但是由于最近我公司的人员变动,我现在是唯一的 IT 人员,所以我不得不涉足许多未知领域并且确实需要一些帮助。
我们正在运行 postgres 8.3。数据库正在尝试在大型对象表 (pg_catalog.pg_large_object) 上运行 AUTO_VACUUM 以防止事务 ID 回绕。我想我理解这意味着什么的基础知识。问题是,这张表是 750G,有 4.52 亿行。AUTO_VACUUM 大量写入磁盘,占用了磁盘空间(昨天它消耗了我们最后 250GB 的 1TB)。紧急中断后,我们以 1100GB 的空间和 100GB 的可用空间恢复运行。然而,一旦 postgres 重新启动并运行,它就会再次启动 AUTO_VACUUM 进程。如果我终止交易(我确定不推荐这样做),它就会重新启动。
所以这是我的问题:
1) 对于该表,完成 AUTO_VACUUM 进程需要多少空间?我如何确定这一点?
2) 有没有更好的方法来配置服务器来处理这种情况,以便在需要时不需要大量的磁盘空间?
3)如果不是 2,你建议如何解决这个问题?
我不是 DBA,也没有 linux 服务器管理经验,只是一个被要求身兼数职的开发人员。我正试图让 DBA 顾问帮助解决问题,但该公司正在回击。尽管我尽了最大努力,但他们似乎并不了解问题的严重性。
建议?注释?您可以提供的任何建议或指导将不胜感激。如果您需要更多信息,请告诉我。
performance - 使用输入变量时,Postgres 的运行速度要慢得多
我在 Postgres 8.3.5 中有一个函数,它从多个表中选择数据并将结果转储到一个表中:
使用 PgAdmin 并执行此命令需要 113 秒才能完成此功能:
但是,如果我用这样的文字替换函数中的输入变量:
该函数在不到 5 秒内执行。
我是 Postgres 的新手,所以我可能缺少一些东西,但我似乎无法在任何地方找到答案。
sql - 从另一个数据库更新表
我需要更改三个表中的数据(更新一些现有行,添加一些新行,删除一些旧行)。我需要它在一瞬间完成。问题是需要手动更改数据,并且可能需要一些时间才能完成。所以我将使用测试服务器来进行更改。问题是:如何使用来自另一个数据库的数据更新生产服务器?
我的解决方案: 从 beta 服务器转储数据并在生产中恢复。
缺陷:我必须首先删除生产中的所有数据,并且由于外键而存在问题(我可以先关闭键,但有没有办法避免它?)。
我发现了类似的问题,其中一个答案建议使用dblink
命令。我想我可以写更新语句,但这似乎还是有点矫枉过正。
编辑(补充说明):
有生产服务器(我们称之为Production
),有开发服务器(我们称之为Beta
)。所以我需要在生产上更改一些数据(3 个相互连接的表,它们也被数据库中的其他表引用)。准确地说 - 这些表格包含学习计划 - 主题、主题组和子主题。有引用这些元素的寄存器。但我需要立即完成这些更改(意思是:通过 SQL 脚本)。为了实现这一点,我将使用 Beta 服务器 - 它拥有生产数据库的副本(在特定时刻完成,没有实时同步)。所以我将在 Beta 服务器上的 3 个表中更新数据,我需要将这些数据移动到生产环境。
sql - postgresql:从视图中选择非异常值
使用 8.3 版(在这件事上别无选择)。
我不能使用“;WITH x AS”样式查询,因为它不受支持(从我在 8.3 中可以看出。我试图使用它们但它们未被识别)。我当然也不能使用 TOP,因为我不在 SQL Server 中。我尝试使用以下限制查询,但因以下错误而受阻:
这并不理想,因为它不会移除较低的 5%,但我只能忍受最高的 5% 被移除。
postgresql - 如何从 pl/pgsql 函数中调用 shell 命令?
我想做这样的事情,但它不起作用......
PostgreSQL 8.3
升级不是一种选择,对不起...
postgresql - 使用另一个 TYPE 的 SETOF 字段创建一个 TYPE
我在尝试创建一个包含另一个 TYPE 的字段的 TYPE 时遇到了一些麻烦:
但这不起作用。Postgres 给出一个错误:
我需要返回这个结构,尽管只返回图像数据(bytea 类型)而不返回 subType 中图像的文件名是可以接受的。它应该支持多张照片。
有人可以阐明如何做到这一点吗?
sql - 重命名主键和外键的 VALUES
有两个这样的表:
目标是重命名 rid 的键(值,而不是表或列),如下所示:
当然,这会导致外键约束错误。
在重命名的上下文中,经常调用“sp_rename”。但我是这样理解的,它只适用于表和列,而不适用于值。
如何重命名外键约束的值?
.
解决了:
multithreading - 从 Postgres 函数中生成新进程
是否可以生成一个新进程来从 postgress 函数中运行函数?还是根据文档,我是否仅限于发起请求的每个数据库连接一个线程?
单独的进程正在创建和填充动态命名的表,不返回任何数据,并且独立于生成函数。在 Postgresql 8.3 上。
sql - 从 varchar 中选择子字符串并转换为整数数组
我的存储过程中有一个数字的 VARCHAR,这些数字被组织为数组,我将在下面展示一个示例:
我想做一个FOR
循环来每次从这个集合中选择一个子字符串,{}
并将其转换为一个整数数组。
所以第一次在我的循环中我会有:
所以我将使用它array_to_string
来将其转换为integer[]
第二次我将拥有:
并继续使用array_to_string
有小费吗?小心,因为不幸的是我使用的是 PostgreSQL 8.3!
sql - 从 Postgresql 上的数组数组中迭代每个元素
我的存储过程中有一个数字的 VARCHAR,这些数字被组织为数组,我将在下面展示一个示例:
现在在另一个人的帮助下,我正在使用它来获取整数数组integer[]
我将有一组记录,每个记录都有一个数组,见下文:
我正在尝试,但我无法弄清楚如何FOR
对这些数组中的每个元素进行迭代,以调用另一个过程来处理每个数组中的每个元素。
{1,2,3,4,5,6,7,8,9}
我将调用的数组示例my_array
:
我收到此错误:
我需要将我的每个记录结果转换为一个数组,所以我可以使用 array_cat 或其他函数来迭代数组元素
我的过程代码如下:
提示或技巧?