问题标签 [postgresql-12]
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 - Postgresql 中的比较字符串
我的桌子:
在该表中,我存储了在某些项目中使用的软件及其版本,并通过比较它们的版本来检查它们是否更新。我需要将版本信息存储为字符串,因为某些版本包含像“1.0.1-beta”这样的字符串。
我仍然找不到比较字符串的最佳方法。我使用以下(简化)查询:
当我运行以下查询时:
但是 3.0.0 小于 26752。1.2.3a (可能)是假的,如果我使用 lower() 函数我可以解决它。select '3.0.0' > '26752'或最后一个查询怎么样?
sql - 转换为双引号类型的不一致
使用 postgres 12.2:
我已经放弃了双引号,但仍然很好奇为什么它会这样!
sql - 了解 PostgreSQL 并行查询跨会话的工作池中剩余多少并行工作人员?
假设我的 PostgreSQL 数据库配置中有 4 个并行工作人员池。我也有 2 节课。
在 session#1 中,SQL 当前正在执行,我的规划器随机选择为此查询启动 2 个工作程序。
那么,在会话#2 中,我怎么知道我的工人池减少了 2 个?
postgresql - 在 Postgresql 12 中,主服务器数据发生故障和从服务器故障转移时会发生什么情况?
我搭建了一个 Postgresql 12 HA 系统,一台服务器是 Master(s1),另一台是 Slave(s2)。
假设 Master server (s1) 因停电而失败,Slave server (s2) 升为 Master,再次开启 Master server (s1) 会发生什么?它会成为 Master 和当前 Master 再次提升为 Slave 的 Slave Server (s2) 吗?主服务器 (s1) 是否会重新同步从服务器 (s2) 在关闭时处理的内容?
c - 如何让 Postgres 后台工作人员在收到信号时睡觉和醒来?
PostgreSQL 利用后台工作者来允许进程以并发方式工作,并且它们有一个 API 供后端/扩展开发人员控制它们。到目前为止,我已经成功地在一个演示扩展中使用了这个功能,成功地产生了一些工人。
我的情况是,我的一名工人必须等待另一名工人完成。到目前为止,我正在做的是一个空闲工作人员的无限循环,直到正在等待的工作人员完成,这可能非常低效。所以我想知道如何让空闲进程休眠,直到发送一些信号?我会寻找什么?是否有一个扩展可以做类似的事情,以便我可以用来指导?
sql - 如何在 postgresql 版本 12 中实现 LIKE 条件?
当我通过 Spring Boot 框架实现它时,这个查询显示错误,所以我在 postgresql 上检查了它,但它仍然显示错误。
错误是这样的: -
postgresql - 在 PostgreSQL 中创建内存表?
我对内存表的理解是一个将在内存中创建的表,并且尽可能少地求助于磁盘,如果有的话。我假设我有足够的 RAM 来放置那里的桌子,或者至少是其中的大部分。我不想使用显式函数在内存中加载表(如 pg_prewarm),我只想在我发出CREATE TABLE
or时默认表就在那里CREATE TABLE AS select statement
,除非内存已满或除非我另有说明。我并不特别关心记录到磁盘。
7 年前,这里问了一个类似的问题PostgreSQL 相当于 MySQL 内存表?. 它已收到 2 个答案,其中一个有点晚(4 年后)。
一个答案是创建一个 RAM 磁盘并为其添加一个表空间。或者使用 UNLOGGED 表。或者等待全局临时表。但是,我没有特殊的硬件,我只有普通的 RAM - 所以我不知道该怎么做。我可以使用 UNLOGGED 功能,但据我了解,仍然涉及相当多的磁盘交互(这是我试图减少的),我不确定表是否会默认加载到内存中。此外,我看不出全局临时空间是如何相关的。我对它们的理解是,它们只是可以共享的空间中的表格。
另一个答案推荐使用内存列存储引擎。然后使用一个函数将所有内容加载到内存中。我使用这种方法遇到的问题是,所引用的引擎看起来很旧且未维护,我找不到任何其他引擎。另外,我希望我不必明确诉诸使用“加载到内存”功能,而是默认情况下一切都会发生。
我只是想知道如何在 7 年后的 Postgres 12 中获取内存表。
postgresql - 授予对所有数据库中所有表的只读权限
我在我的 PostgreSQL 中创建了名为“support”的新角色。现在我需要为这个角色授予“只读”权限,所有存在的数据库/表。此外,我需要在将来创建的每个数据库上自动授予相同的权限。
我在新数据库中尝试授予权限的下一个查询未成功(无法从新数据库表中选择):
postgresql - PostgreSQL 12 CTE 物化选项何时提供优化优势?
编辑:我已经将这个问题移到了,dba.stackexchange
因为我收到了该社区可以更好地解决我的问题的建议。
我一直在阅读 PostgreSQL 的新 CTE 功能——MATERIALIZED 或 NOT MATERIALIZED 关键字——它可以在某些情况下提供额外的优化机会,前提是这样做是安全的。此处对此 PostgreSQL 更新的评论说:
...用户可以通过指定 MATERIALIZED 来强制旧行为 [LESS OPTIMIZED];当查询故意使用 WITH 作为优化栅栏以防止错误选择计划时,这主要是有用的。
我一直在想,考虑到在某些情况下使用 CTE 优化(NOT MATERIALIZED 关键字)是安全的,在这种情况下,优化程度较低的“MATERIALIZED”关键字可以“防止计划选择不当”,如报价或提供更好的计划?
plpython - 将数据从 POSTGRESQL 触发器发送到 python TCP 服务器
我正在尝试监视 postgres 数据库中的表。
我想将此表上的每个操作(插入或更新或删除)发送到 python tcp 服务器。
所以我尝试按照 本教程进行操作,但没有成功。
这是我正在使用的 SQL 脚本:
我正在使用一个简单的 python TCP 服务器来接收数据并简单地打印它:
我希望在此表上获得插入的事务,但是当我执行操作时,event_entity
我收到一条空消息:
我相信 TD 对象json.dumps(TD)
是空的。有人可以帮忙解决这个问题吗?