Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Postgresql_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Postgresql 唯一索引是否有助于提高列搜索性能?(PGSQL和MySQL)

我很好奇 CREATE INDEX idx ON tbl (columns); vs 在PostgreSQL或MySQL实现中,当扫描索引列时,或者无论UNIQUE关键字是否只是在索引旁边引入了唯一约束,都具有显著的算法性能优势 我想可以公平地说,只要索引可能在内部实现为某种类似于hash1的结构,并且冲突处理根据定义会导致O(1)性能以外的结果,那么这可能是一个边际收益。鉴于这一前提,如果大部分值相同,结构很可能退化为线性 因此,就我的问题而言,假设值的分布是相对离散和一致的 提前谢谢 1这

Postgresql Postgres-未更新行的指示

我正在运行一个简单的更新查询,类似于: UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value' 在Postgres中有一种方法可以在没有更新行时引发错误或打印一些消息?在数据库中,只有在从存储过程执行更新时才可能这样做。在plpgsql中: BEGIN UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value' IF

将变量分配给PostgreSQL触发器中的输出参数

在使用Sybase和SQL Server多年后,我开始了一个PostgreSQL项目,我对它的怪癖还不熟悉,但到目前为止我印象深刻 我编写了一个返回参数的小函数。我传入一个清晰的密码,函数返回加密的密码和一个salt。这是: CREATE OR REPLACE FUNCTION iSecGenPwdSalt(pwdin text, out salt text, out userpassword text) AS $BODY$ DECLARE BEGIN -- Gen

Postgresql 函数做了大量的数学运算,高度优化,但仍然相当缓慢。当然,更快的处理器可能会有所帮助。但我怀疑它是否会产生100倍的速度增益,这只能部分满足我的要求……我明白了。evaluate()是用什么语言编写的?再次感谢您的更新。虽然像evaluate()这样的函数的

函数做了大量的数学运算,高度优化,但仍然相当缓慢。当然,更快的处理器可能会有所帮助。但我怀疑它是否会产生100倍的速度增益,这只能部分满足我的要求……我明白了。evaluate()是用什么语言编写的?再次感谢您的更新。虽然像evaluate()这样的函数的性能是我现在的主要主题之一(您的一些建议很久以前就已经提出了…),但从概念上讲,这永远也解决不了这个问题:我有一个视图,它只需要查看表中所有行的0.1%,但是evaluate()为所有100%的行调用。加速评估肯定会有一个上限(可能远小于因子1

PostgreSQL数据库中的时态触发器

是否可以在PostgreSQL中定义时态(即基于时间/日期的触发器) 假设我存储了一个包含一些数据的表,其中还包含一个时间戳的字段。 此时间戳字段是我希望触发某个函数的日期/时间 是否可以将触发器与此表关联,以便在给定时间执行所需的触发器?否,这是不可能的。触发器仅通过SQL语句(INSERT、UPDATE、DELETE)触发。这就是它的作用。或在UNIX/LINUX系统上使用cron作业。差不多 psql -p5432 mydb -c 'SELECT myfunction()' 作为系统用户

Postgresql 按指定的距离限制和顺序沿线串查找最近的点

我有这样的问题,如果有人能帮助我,我会很高兴的。 我有一个要点索引表。这些点不会随着时间而改变 我想获取靠近某个给定线字符串的点。 示例:假设linestring是道路,点是道路沿线的poi。 我想获取距离给定道路5公里的poi。我想按正确的顺序取这些POI(沿路行驶顺序)。请看图片: 对于从1点到5点的给定道路,我希望获取距离道路最大5km的POI,并按顺序沿道路从1点到5点。因此,结果应该是: POI_ID 1 5 6 8 9 10 12 13 这应该告诉我在沿路旅行时可以以最低的成本访

Postgresql-衡量性能以及如何判断是否应该刷新索引

有关这方面的背景信息,请参见: 我的问题很简单: 我有一个表,其中包含从另一个数据库同步的产品定价信息。此表中只有一个字段由客户端控制,其余字段每隔一段时间就会被删除并在同步时重新插入(例如,每天一次到每周一次,由客户端使用PHP脚本手动运行) 1) 该表在4列上有一个索引(其中一列可以为null),在3个非null列上有另一个部分索引。当您删除大约90%的表并重新插入数据时,在所有数据都在表中之后删除索引并重新创建它们是好的,还是保持索引“原样”更好 现在,我转而使用Erwin Brand

Postgresql postgis中的空间gist索引-性能

我对gist索引有问题。 我有表格“国家”和“地理”(地理,多边形)栏。 我也有这个专栏的主要索引。 使用ST_CoveredBy()对2行(每个“geog”大约5MB)的表进行简单查询需要13秒(查询结果正确): 当我删除索引时,查询也花费了13秒 我已经做了: 真空分析gis.country(“geog”) 也许这就是问题所在:“不要使用GEOMETRYCOLLECTION作为参数调用”我读到(),这是因为重叠多边形,但国内地图不存在重叠多边形 编辑 查询计划- Index Scan u

Postgresql 创建接受任何类型参数(如concat)的函数

如何创建接受任何类型参数的函数 我可以创建如下函数: 创建功能测试(anyelement,anyelement). 但当我调用它时,我必须提供相同类型的参数: SELECT test(1,2); -- ok 但是: 我可以创建一个函数,该函数将接受任何类型的参数,然后将它们转换为字符串并使用该字符串执行某些操作吗 那么,我可以创建类似于concat的函数吗(str“any”[,str“any”[,…]) UPD:更新的第二个示例有一个简单的替代方案。每种类型都可以转换为文本。您只需创建一个函数

PostgreSQL中的MongoDB封顶集合等价物

MongoDB capped集合的基础是,它们允许您设置表的最大大小,当达到大小限制时,系统将清除旧数据 有人在PostgreSQL中提出过类似的设置并在生产中使用过吗?没有听说过类似的事情。我想您可以使用以下方法模拟有上限的表大小或循环队列: 上游 以及序列上的模运算符(有关如何进行合并/向上插入的说明,请参阅) 特别有趣的是(从我的角度来看)牛的反应(看看那些不被接受的答案) 通过在表中引入一列来表示“集合”中的索引以及该列的序列,每个upsert都可以基于以下条件: where ind

Postgresql JPA2标准API在使用groupBy时创建无效SQL

带有Criteria API的JPA2似乎为PostgreSQL生成了无效的SQL。对于此代码: Root-from=query.from(DBObjectAccessCounter.class); Path object=from.get(DBObjectAccessCounter\uUx.object); 表达式sum=builder.sumAsLong(from.get(DBObjectAccessCounter_uz.count)); query.multiselect(object,s

限制PostgreSQL的总内存使用量

我知道通过postgresql.conf我可以限制postgresql特定部分的内存使用,比如共享内存或工作内存,但是有没有办法限制postgresql服务器的总内存使用量?我找不到这样做的配置属性 顺便说一句,我需要在Windows Server 2008计算机上运行它。你说的“总”内存是什么意思?它是分配给各个池的资源的总和 所以,简言之。。。不要将各种池/缓冲区设置得太大,这是您的总内存限制。PostgreSQL没有任何可以设置的全局限制。相反,您可以配置共享_缓冲区(通常约占您打算为Po

Postgresql 更新期间捕获plpgsql中的列

我正在为Postgres 9.1编写plpgsql触发器。我需要能够捕获UPDATE的SET子句中发出的列名,以便在审核表中记录指定的操作。Postgres文档中的示例很简单,不适合我的需要。我已经在互联网上搜索了好几天,但我找不到任何其他的例子来尝试实现我想在这里做的事情 我的日程排得很紧,要尽快解决这个问题。我不知道Tcl,所以在这一点上pl/Tcl对我来说是不可能的。pl/Perl可能可以工作,但我不知道从哪里开始。我还想找到一种方法,在pl/pgsql中实现这一点,如果可能的话,以便于移

Postgresql 在postgres中为不带时区的数据类型timestamp插入语句NOTNULL,

数据库noob警报: 我正在尝试插入postgres表。 我想插入的字段名为make\u date 字段类型为不带时区的时间戳非空, 如何在其中插入今天的日期?比如现在的日期和时间?类似于下面的内容,但我无法获得dateTime.now的正确数据类型插入格式 insert into inventory_tbl (make_date) values (dateTime.now) 使用now()或CURRENT\u TIMESTAMP除了C.Ramseyer的解决方案(这是正确的)之外,如果您总是

PostgreSQL内部联接与WHERE子句联接

我认为内部连接等同于WHERE子句中的连接。当我使用WHERE子句进行join时,返回行。但如果我进行内部联接,则不会输出任何行。我得到的结果是没有匹配项。 是我弄错了,还是我做错了什么 这些连接等效吗 客栈加盟: account_move_reconcile_line_applied amrla INNER JOIN account_move_reconcile_line amrl ON (amrla.credit_line_id = amrl.id) INNER JOIN account_m

PostgreSQL的ISO 8601格式日期

我有一个包含格式化日期时间值(例如:2013-05-21T15:00:00+0200)和时区(例如:Europe/Rome)的字符串 表示此日期格式的最佳方式是什么 键入“带时区的时间戳”就是您想要的 对于将来的问题,请始终提及您的确切PostgreSQL版本(select version())。对于这个特定的问题,它并不重要,但通常会很重要。我有一个格式为“2013-05-21T15:00:00+0200”和时区的字符串:“Europe/Rome”如果我使用“timestamp with ti

Postgresql 如何使用pg_archivecleanup按文件期限或日期指定清理

有没有一种方法可以通过使用pg_archivecleanup命令按年龄或日期而不是硬编码名称来指定文件来清理WAL归档文件 例如,使用以下命令非常简单: pg_archivecleanup "C:\Program Files\PostgreSQL\9.2\data\pg_xlog" 000000010000004600000045 其中0000000 1000004600045是文件名,之前创建的任何文件都将被删除 但是,如果我想自动化这个过程,必须有一种方法可以按时间/日期选择文件。您不应该

Postgresql 查询计划是否总是给出相同的结果顺序?

对于没有ORDERBY子句的查询,给定的查询计划是否总是以相同的顺序返回结果?我知道可能会选择不同的计划,但如果选择了相同的计划,会给出相同的结果顺序吗?从本质上讲,查询执行者在执行给定计划时有什么自由对行进行重新排序?否,即使没有计划更改,结果也不会以相同的顺序返回。 查询执行器不必对行进行重新排序,它甚至不首先对行进行排序 例如,当行按磁盘顺序排列时: CREATE TABLE o(id int); INSERT INTO o VALUES (1),(2),(3); ANALYZE o; E

什么';pgpool II复制和postgresql复制之间的区别是什么?

我不完全是DBA,所以我希望得到易于理解的回答。我必须向我们的DB和pgpool提供复制,这似乎更方便,因为如果一个postgresql实例失败,客户机不需要更改任何内容来继续工作,对吗?因此,在这种情况下,使用pgpool更有意义,但配置部分(在我看来)似乎更复杂和混乱。例如,我是否需要在两台postgresql服务器上都设置WAL?或者,这仅在我想设置postgresql复制时才需要?我越是试图找到这些问题的答案,答案就越不清晰。也许我忘了怎么用谷歌搜索…PostgreSQL本身提供的内置复

Postgresql Postgres中2个具有特殊逻辑字段的唯一约束

我有一个表,有3列:国家、个人、评论。 我想添加一个数据库约束,它将为同一国家/地区的PersonID启用多个记录,但将阻止向多个国家/地区添加相同的PersonID。 有可能吗?如果您可以在混合中添加另一个表,这应该是可行的: CREATE TABLE PersonCountries ( PersonID char(7) not null, Country char(3) not null, constraint UQ_PersonCountries_Persons U

如何以root身份将数据库导入PostgreSQL?

我想将我的数据库导入服务器的数据库。因此,我将数据库转储文件复制到服务器的根目录并登录,然后执行以下操作: root@iWidgetServer1:~# sudo -u postgres psql -U iwidget -d iwidget -f iwidget_dump2.sql could not change directory to "/root" psql: FATAL: Peer authentication failed for user "iwidget" 但是,iwidg

Postgresql 如何计算研究生的百分位数

我有一个名为timings的表,其中我们存储了100万个响应时间,用于负载测试,现在我们需要将这些数据分成100组,即前500个记录作为一个组,以此类推,然后计算每组的百分位,而不是平均值 到目前为止,我尝试了这个查询 Select quartile , avg(data) , max(data) FROM ( SELECT data , ntile(500) over (order by data) as quartile

Postgresql 我截断了一张桌子。我如何取回数据?

在我的postgesql数据库中,不幸的是我截断了这个表mail\u group,这个表被从数据库中删除了,我如何取回这个表 请帮助我,等待答复 谢谢 处于相同情况的任何其他人:立即使用pg_ctl stop-m immediate停止数据库(立即很重要,您需要模拟崩溃并防止检查点),然后不要重新启动数据库。。如果您的并发事务仍在进行中,那么您可能真的很幸运,PostgreSQL可能还没有解除表的支持文件的链接,因此它可能是可恢复的 你很可能无法取回数据,你删除了它。从备份中恢复 Postgr

Postgresql函数卡在for循环中

函数就在循环之前卡住了 select * from scm_main.fn_connection_stations(1219646) 已打印消息“开始…”,但不会打印消息“…结束” CREATE OR REPLACE FUNCTION scm_main.fn_connection_stations(var_connection_id bigint) RETURNS SETOF scm_main.typ_connection_stations AS $BODY$ DECLARE

查看PostgreSQL-9.5中定义的行级安全策略

我已经构建了全新的PostgreSQL-9.5(alpha),我对的新功能感到非常兴奋。这将使多角色访问管理更加简单 例如,到目前为止,我使用了一个模型,其中NOLOGIN角色是数据库和所有表、视图、函数等的所有者;然后创建视图以授予对特定角色的适当访问权限。一切都很好,但观点确实在扩散。新的CREATE POLICY命令用于具有ENABLE ROW LEVEL SECURITY的表,看起来是一个更干净的替代方法,可以达到相同的目的 但是,到目前为止,我无法确定哪些表启用了RLS,以及在这些表上

&引用;服务器没有';“不要听”;在pgAdmin III中使用postgreSQL

首先:我是数据库方面的新手 我将postgreSQL与pgAdmin III一起使用,直到几天前它还运行得很好:几天前,当我不使用它时,我在Windows的“后台进程”中看到几个相同的postgreSQL程序(?)正在运行,我决定停止它们,因为当时我没有使用它们。错误:现在,当我尝试连接到服务器(在本地主机上)时,我收到错误消息: “服务器不侦听” 服务器不接受连接:连接库报告 无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“localhost”(::1)上运行

PostgreSQL-包含日期

我需要在查询中包含今天的日期 SELECT * FROM transactions, machine WHERE transactions.machineid::int8 = machine.machineid::int8 AND (machine.storeid = '".$_SESSION['user_session']."') 事务表中有一个日期列。很抱歉:我必须添加sql注入标记。(加上PHP标记)thanx作为文档,sql注入也将得到修复 SELECT * F

Postgresql Firebase:如何读取外部数据库?

我在另一台服务器上的PostgreSQL中有一些数据,我需要读取这些数据以包含在Firebase应用程序中,然后呈现图表。我只有db连接字符串,那里没有用于返回该数据的端点 我将限制在Firebase上使用auth和角色向admin输入连接字符串 然后我需要一种Firebase应用程序用SQL获取数据并在客户端显示的方法,它将呈现表格和图表 用户永远不能看到连接字符串,即使在网络流量中也是如此 这是否可行以及如何实现?Firebase没有“与PostgreSQL同步”API 因此,要么你的应

Postgresql 无法连接到Postgres的服务器

更新windows后,我无法连接Postgres服务器。更新之前,打开数据库没有问题。我的Postgres数据库也不见了。当我要创建新数据库时,它会显示以下错误: 无法连接到服务器:无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“localhost”(::1)上运行并在端口5432上接受TCP/IP连接?无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“localhost”(127.0.0.1)上运行并在端口5432上接受TCP/

PostgreSQL+;IntelliJ:FATAL:role xxx不';不存在

我能够连接psql并做我想做的事情,而不是用IntelliJ PostgreSQL version : postgres (PostgreSQL) 9.6.1 IntelliJ version : 2016.3.1 IntelliJ配置: URL : jdbc:postgresql://localhost:5432/sample User : sample Pwd : sample 测试连接:成功 因此,我连接(出现红色方块),然后尝试一个简单的查询: select 1; 我得到了一个错误

是否跳过postgresql序列中的某些范围?

我想按顺序跳过一些范围: Create sequence id_seq; 假设我有一个序列作为Id\u seq。。从100开始 当它达到199。。然后从1000开始,到1999年。。应该从10000开始 setval(100,'Id_seq'); postgres是否具有执行此操作的默认配置 多个进程将使用此序列。。因此,在过程中使用setval()手动分配会带来一些困难。不,没有内置的方法来完成此操作。我从来没听说过有人想这么做 如果你真的关心你得到的数字,那么序列无论如何都不是适合你的。

Postgresql 存在键的test JOOQ postgres jsonb列

我有一个表table,其中包含一个名为tags的jsonb列。每行中的标记元素可能包含也可能不包含名为组的字段。我的目标是按标记分组。对于标记包含组字段的所有行,分组。如以下postgres查询: select tags->>'group' as group, sum(n) as sum from TABLE where tags ? 'group' group by tags->>'group'; 我试图将其转换为JOOQ,但无法找到如何表达where标记分组“条件

Postgresql 如何在pgAdmin4中显示数据输出?

我正在使用pgAdmin4查询我的postgresql。 但查询数据输出未显示 只显示消息。(如下图所示) 如果显示我的查询数据输出,如何更改 一步一步 我质疑任何疑问。并显示结果。 Chane查询并运行。 单击“数据输出”选项卡并显示以前的结果数据。这不是改变。 所以我点击History选项卡,显示受影响的行是-1。但这个查询是有效的。 使用='A'@VaoTsun在查询中运行count(*)而不是*我更改了查询。但是结果是一样的。如果它没有显示异常数-写给pgadmin dev/

Postgresql Postgres映像未创建数据库

根据,我可以使用env varpostgres\u DB指定postgres docker映像创建的数据库的名称。我已经在docker compose文件中设置了它,但它没有被创建 以下是撰写文件的相关部分: pg: image: postgres:10 volumes: - db-data:/var/lib/postgresql/data environment: POSTGRES_DB: user-auth POSTGRES_USE

Postgresql 使用DataStudio进行Postgres数据库身份验证时出错

我正在尝试将我的postgres数据库连接到Data Studio,收到以下错误: 很抱歉,我们遇到错误,无法完成您的请求。错误ID:1b7b6c50 我输入了与我将postgres数据库连接到Tableau时(成功)使用的相同的凭据,但我似乎不知道问题出在哪里 Host Name or IP: localhost Port: 5432 Database: WU Username: postgres Password: [my correct password] 在进行故障排除时,我

Postgresql 获取每个员工的最大记录时间

我想从每个学生的出勤情况中获取每个学生的最长记录时间 table name : student_att id | student_id | checkin_date | checkin_time | type 1 | 1 | 2019-08-04 | 08:25:00 | checkin 2 | 1 | 2019-08-04 | 09:30:00 | checkin 3 | 2 | 2019-08-04

Postgresql POSTGIS-查找给定点(lon、lat)是否在表的地理列(多边形表示)内

问:我从PostGIS中提供的几何图形的函数内的ST_获取错误。不确定在什么仪式上实现ST_的第一个参数 注:变量经度和纬度为函数提供的字符类型。但是,我无法在内部构造传递给ST_的值 从自定义函数中提取代码: pointText := 'POINT(longitude || || latitude )'; result := (select p_code from public.parking_lot b where ST_Within (S

在PostgreSQL中,如何选择前一行值来计算当前行值?

我正在寻找一个PostgreSQL查询,其中我希望基于前一行值计算当前行值。下表举例来说,value1列将有第一个初始值,然后我需要在使用前一行值后计算行 当前行中value1列的公式为previousvalue1+当前行的id 表: 期望输出: 这样就可以了。虽然它不是特别有效,但是对于一次性的,它应该可以 select x.id, sum(coalesce(y.value1,y.id,0)) from sample x left outer join sample y on x.id &g

Postgresql 如何在Vercel无服务器函数中处理Postgres连接池?(“;角色的连接太多”;)

我有一个基于此模板构建的小爱好web应用程序: 它使用ElephantSQL的免费层(5个连接),在Zeit Now v2无服务器功能上运行,并且Postgres连接一直不足(“对于角色“djsktctf””) 我正在使用deathNPM来关闭连接-这在/api/graphql/index.js中: const { ApolloServer, gql } = require('apollo-server-micro') const { config } = require('../../conf

Kubernetes PostgreSQL:如何将配置文件存储在数据目录以外的其他位置?

目前,我正在尝试使用postgres:latest映像创建用于复制的PostgreSQL部署 默认情况下,配置文件位于数据目录/var/lib/postgresql/data中。为了使复制工作,我需要数据目录为空,但这意味着我必须将配置文件保存在其他地方 关于: 如果希望将配置文件保留在数据目录以外的其他位置,则postgres-D命令行选项或PGDATA环境变量必须指向包含配置文件的目录,并且必须在postgresql.conf(或命令行)中设置data_directory参数以显示数据目录的

如何在postgresql中实现动态sql函数?

我使用的是postgresql11version 我想实现一个以图层名(表)、列名和id为参数的函数 create or replace function test(layer_name anyelement, field_name anyelement, object_id text) returns setof anyelement language plpgsql as $function$ begin return query execute forma

Postgresql 覆盖现有postgis表时扭曲物化视图的问题

主要问题:根据PostgreSQL/PostGIS表,我有几个视图,以及通过查询其他视图创建的最终物化视图。我需要一个快速和可更新的最终结果(即MV)在QGIS项目中使用 我的目标是更新起始表,用新的(很多)值覆盖它,并希望有更新视图和物化视图。我使用QGIS DB管理器覆盖现有的表,但我得到一个错误,因为mv依赖于它。若我删除mv,覆盖表格,然后重新创建mv,一切正常,但我希望尽可能避免手动操作 有没有更好的方法来实现我的目标 另一个问题:如果我在更新/插入/删除表中的值时设置了一个触发器来刷

Postgresql Can';无法加载libpq.dll

我有一个应用程序可以在某些PC上正常工作,但当我在新PC(Windows 10)上尝试它时,它会引发一个错误,即无法加载libpq.dll libpq.dll有哪些依赖项?。使用我的应用程序复制以下库: libcrypto-1_1.dll libiconv-2.dll libintl-8.dll libpq.dll libssl-1_1.dll 除了那些图书馆,我还需要分发其他图书馆吗 谢谢。这取决于libpq是如何构建的。 您可以使用检查应用程序加载的DLL。 (视图->“显示下窗格”和视图

错误:必须是物化视图PostgreSQL的所有者

我得到以下错误: ERROR: must be owner of materialized view mv_sessions SQL state: 42501 尝试刷新我的物化视图时: REFRESH MATERIALIZED VIEW CONCURRENTLY partners.mv_sessions; CREATE OR REPLACE FUNCTION partners.refresh_mv_sessions() RETURNS TRIGGER SECURITY DEFINER AS