Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。

3
pgAdmin首选项中的二进制路径
我安装了PostgreSQL,因为我需要恢复.backup收到的大文件以上传到另一个平台(该行有3800万行,显然太大了,无法以其他任何方式导出)。当我尝试在pgAdmin 4中“还原”时,出现以下消息: 请在“首选项”对话框中配置PostgreSQL二进制路径。 这只是PostgreSQL文件夹的路径吗?我在PostgreSQL站点上找不到关于此的文档。我能找到的是: 使用“二进制路径”节点中的字段可以指定PostgreSQL二进制实用程序和EnterpriseDB Postgres Advanced Server二进制实用程序的路径。 除了通过pgAdmin之外,还有没有更简单的方法来还原数据库?

2
PostgreSQL递归后代深度
我需要根据祖先计算后代的深度。当记录具有时object_id = parent_id = ancestor_id,它将被视为根节点(祖先)。我一直在尝试使WITH RECURSIVE查询与PostgreSQL 9.4一起运行。 我不控制数据或列。数据和表架构来自外部来源。桌子在不断增长。目前每天约有3万条记录。树中的任何节点都可能丢失,并且它们有时会从外部源中拉出。通常按created_at DESC顺序提取它们,但是使用异步后台作业提取数据。 最初,我们有一个解决此问题的代码,但现在有5M +行,需要近30分钟才能完成。 表定义和测试数据示例: CREATE TABLE objects ( id serial NOT NULL PRIMARY KEY, customer_id integer NOT NULL, object_id integer NOT NULL, parent_id integer, ancestor_id integer, generation integer NOT NULL DEFAULT 0 ); INSERT INTO objects(id, customer_id , object_id, parent_id, ancestor_id, generation) …


2
同时调用同一函数:死锁是如何发生的?
new_customerWeb应用程序每秒调用我的函数几次(但每个会话仅调用一次)。它要做的第一件事就是锁定customer表(执行“如果不存在,请插入”-的简单变体upsert)。 我对文档的理解是,对的其他调用new_customer应该简单地排队,直到所有先前的调用完成为止: LOCK TABLE获取表级别的锁,必要时等待释放任何冲突的锁。 为什么有时会陷入僵局呢? 定义: create function new_customer(secret bytea) returns integer language sql security definer set search_path = postgres,pg_temp as $$ lock customer in exclusive mode; -- with w as ( insert into customer(customer_secret,customer_read_secret) select secret,decode(md5(encode(secret, 'hex')),'hex') where not exists(select * from customer where customer_secret=secret) returning customer_id ) insert …

2
避免原子事务中的唯一违规
可以在PostgreSQL中创建原子事务吗? 考虑我有这些行的表类别: id|name --|--------- 1 |'tablets' 2 |'phones' 并且列名具有唯一的约束。 如果我尝试: BEGIN; update "category" set name = 'phones' where id = 1; update "category" set name = 'tablets' where id = 2; COMMIT; 我越来越: ERROR: duplicate key value violates unique constraint "category_name_key" DETAIL: Key (name)=(tablets) already exists.

2
数据库所有者的特权;应用程序用户
快速版本: 我应该发出什么命令以使数据库所有者能够访问数据库中的表,并且可以通过该所有者的帐户来完成此操作吗? 较长版本: 我正在RDS上创建数据库。我有一个使用Amazon配置的“ root”用户。 Amazon自动创建具有非常特权的组角色“ rds_superuser”,但实际上不是超级用户。 我正在为应用程序创建数据库和用户,如下所示: create database master_integration; CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity'; GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION; GRANT ALL ON DATABASE master_integration TO GROUP master_application; \c master_integration; ALTER DEFAULT PRIVILEGES GRANT INSERT, SELECT, UPDATE, DELETE, …

3
具有WHERE条件和GROUP BY的SQL查询的索引
我试图确定要用于带有WHERE条件的SQL查询的索引,GROUP BY而当前正在运行的索引非常慢。 我的查询: SELECT group_id FROM counter WHERE ts between timestamp '2014-03-02 00:00:00.0' and timestamp '2014-03-05 12:00:00.0' GROUP BY group_id 该表当前有32.000.000行。当我增加时间范围时,查询的执行时间会增加很多。 有问题的表如下所示: CREATE TABLE counter ( id bigserial PRIMARY KEY , ts timestamp NOT NULL , group_id bigint NOT NULL ); 我目前有以下索引,但是性能仍然很慢: CREATE INDEX ts_index ON counter USING btree (ts); …

3
以最少的停机时间将heroku数据库迁移到Amazon RDS
我有一个heroku postgres数据库,并想将其迁移到Amazon RDS以节省成本。有什么办法可以减少停机时间?通常,这涉及实时复制数据库,然后将复制的DB升级为主数据库。 我知道我可以使用跟随者数据库在heroku中迁移数据库,也可以使用只读副本数据库在Amazon RDS中迁移数据库。是否有类似的方法来创建位于我自己的Amazon RDS中的heroku DB的数据库复制?

1
为什么顶级数据库平台中没有无符号整数类型?
数据库通常是非常可定制的,具有不同的数据类型和自定义长度。 当我尝试寻找使用unsigned intPostgreSQL和MS SQL Server都不提供的类型的语法时,这让我感到惊讶。MySQL和Oracle似乎。 在他们看来,这似乎是一个明显的遗漏-下一个最好的perfomant选项是long / bigint(8字节整数),但可能完全不必要!有谁知道为什么他们会选择不包括本地unsigned int支持?

2
如何最好地在SQLAlchemy中将连接池用于PgBouncer事务级池?
使用SQLAlchemy通过事务级池在PgBouncer后面查询PostgreSQL数据库。 进行这种设置的最佳模式是什么?我ConnectionPool应该使用NullPool来为每个进程分配一个引擎,还是应该为每个请求创建一个引擎,并针对每个请求使用一个引擎?我应该使用完全不同的模式吗? 非常感谢!让我知道是否需要更多信息,我将尽快更新。



1
PostgreSQL上金融应用程序的身份验证方法的选择
首先介绍一些背景。 LedgerSMB项目是在PostgreSQL上运行的开源财务会计软件项目。我们在用户定义的函数中实现了大量的业务逻辑,这些逻辑充当程序对象方法与数据库行为之间的主要映射工具。当前,我们将数据库用户用作身份验证用户,部分是通过选择(这允许集中的安全逻辑,以便可以编写其他工具并重复使用授予用户的权限),另一部分是根据需要(在从SQL-Ledger分叉之后)在该代码库上加装安全性的选择不多)。 这使我们可以访问PostgreSQL可以访问的合理数量的单点登录选项,从LDAP到Kerberos5。我们甚至可以在涉及密码的情况下使用PAM。它还允许我们在与其他应用程序集成或允许其他客户端界面时重用权限。对于财务会计应用程序来说,这似乎是一个净赢。 涉及明显的成本。对于Web应用程序,我们非常受支持的http auth类型限制。例如DIGEST完全被淘汰。BASIC可以正常工作,并且我们可以很容易地实现KRB5(我计划对此提供支持,并在1.4版本开箱即用)。虽然很可能会在必要时对它们进行垫片化(例如,BASIC +带有用户名和特定根ca的cn的cn的客户端SSL证书),但不能直接在此上正确地管理非常强大的身份验证措施。 同时,我们受到了很多批评,大多数是来自开发人群,还有一些是来自dba的批评,他们告诉我应用程序应该是安全屏障,而不是数据库。我仍然认为,较小的安全范围通常更好,重用业务逻辑和安全逻辑在一起,并且重用业务逻辑而不在同一级别重用安全逻辑使我感到非常危险。该程序。 我在这里错过任何重大的权衡吗?是否有我没有考虑的陷阱?

3
PostgreSQL与MySQL:空间特征比较
我们正在构建具有空间数据组件的Web应用程序。首先,我们的空间数据比较将获取一个给定的点,并返回匹配的重叠空间多边形。 话虽如此,我们的数据库还有许多其他组件,其中包括您在常规关系数据库中可以找到的所有典型内容。 在项目中,我们必须选择要使用的数据库解决方案。 所有项目成员都对MySQL的实现和管理更加熟悉,但是所有研究表明PostgreSQL是更好的解决方案-特别是在使用postGIS的空间数据方面。 我们期望(希望)我们的应用程序在许多并发用户中会经历很多动作。 是否有任何将MySQL用作具有空间数据组件的RDBMS的经验的人有长期的建议/经验? 除熟悉之外,使用PostGIS是否有任何缺点?

5
PostgreSQL:数据库集群初始化失败
双方C:\PostgreSQL并C:\PostgreSQL\data拥有postgres完全访问和管理权限的用户。 我以管理员身份从postgres用户运行了postgresql-9.1.2-1-windows.exe。目标C:\PostgreSQL 我尝试的每种方式都得到“数据库集群初始化失败”。 问题 是否可以在不作为Windows服务的情况下运行所有​​程序? 有作为Windows服务安装的解决方法吗? 我正在尝试设置PostGIS以与GeoDjango一起使用。 我能够手动安装PostGIS。PostgreSQL的新手,我对所有这些都充满信心危机。第一次从MySQL到PostgreSQL。 来自C:\ Users \ Larry \ AppData \ Local \ Temp \ install-postgresql.log的相关日志输出: WScript.Network initialized... Called IsVistaOrNewer()... 'winmgmts' object initialized... Version:6.1 MajorVersion:6 Ensuring we can read the path C: (using icacls) to Larry: Executing batch file 'radA3CF7.bat'... Output file does not exists... Called …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.