Questions tagged «postgresql»

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

1
在Postgres中优化并发更新
我正在运行并发Postgres查询,如下所示: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 每个查询都会影响固定的K个行数,而且我找不到一种方法来强制更新行的顺序,最终导致死锁。当前,我通过手动执行顺序来解决此问题,但这意味着我必须执行比平时更多的查询,同时还将搜索复杂度从O(log N + K)提升到O(K log N)。 有没有一种方法可以提高性能而又不会导致死锁?我怀疑只要Postgres以与扫描行相同的顺序更新行,就可以用(baz)索引替换索引(baz, id),这是值得追求的方法吗?

2
将某些表从一个postgres数据库复制到另一个数据库
我遇到以下情况:我有三台运行postgresql数据库的机器。一台计算机保存客户帐户信息(称为此计算机C),其他两台计算机保存客户日志记录信息(称为这些L1和L2)。拆分的原因是将负载分散到多台计算机上(因此某些客户端将日志记录信息发送到L1,一些客户端将日志信息发送到L2 ...,也许还有一些时间将L3,L4等)。 检索日志记录信息时,原则上,我希望能够在Ln上的日志记录表和C上的客户帐户表之间进行JOIN。实际上,我无法像这样进行JOIN(即使我可以,以避免加载C)。 我的想法是将C上的表复制到L1,L2,...中的每个表上,以便进行连接。就C中的表而言,C是主机,而L1,L2,...是从机。但是对于L1,L2上的其他表,...这些机器是主计算机。它不完全是主-主复制,也不完全是主-从。 可以说服postgres(我正在运行9.1)复制做到这一点,或者如果没有,那么是否有其他软件包可以完成这项工作。在万不得已的情况下,我可以编写一些代码来定期同步表(我可以忍受一些延迟),但是最好不要这样做! 提前致谢。

1
如何使用pgAdmin 3编辑`postgresql.conf`?
如何使用pgAdmin应用程序编辑“ postgresql.conf”文件? 使用Postgres 9.3.x上的pgAdmin 1.18.1,当我选择File>时Open postgresql.conf,会出现一个文件选择器对话框。而且,是的,我以超级用户“ postgres”的身份连接到pgAdmin。 我知道我已经在旧版本的Postgres中做到了。

1
pgBouncer效果很好,但偶尔变得不可用
我正在繁忙的postgres 9数据库前面运行pgBouncer。在大多数情况下,它都可以正常工作。但是每隔几个小时,我就会收到来自应用程序的错误电子邮件,以及来自psycopg2的异常消息: OperationalError('无法连接到服务器:无法分配请求的地址服务器是否在主机“ neo-hulk”上运行并接受端口6432上的TCP / IP连接?”) 这是一个Python应用程序,其中有许多芹菜工作者正在运行任务。当这些错误到达时,我检查pgbouncer db,并且池大小在限制范围内。经过一些试验后,我将池的最大大小设置为400,池的大小设置为200。池模式是“会话”(请求大部分是自动提交的,几乎没有事务)。 是什么使pgBouncer像这样“消失”?它仅在短时间内(总的来说,与处理的大量请求相比,我们谈论的是很少的请求),但是那些失败的请求很重要。 谢谢!


2
如何确定是否将列定义为串行数据类型而不是基于目录的整数?
因此,我目前正在创建一些SQL来阅读postgres(9.1)目录以构建表定义。但是,我遇到了SERIAL / BIGSERIAL数据类型的问题。 例: CREATE TABLE cruft.temp ( id BIGSERIAL PRIMARY KEY ); SELECT * FROM information_schema.columns WHERE table_schema='cruft' AND table_name='temp'; "db","cruft","temp","id",1,"nextval('cruft.temp_id_seq'::regclass)","NO","bigint",,,64,2,0,,,,,,,,,,,,,"db","pg_catalog","int8",,,,,"1","NO","NO",,,,,,,"NEVER",,"YES" 它提供了数据库名称(db),模式名称(cruft),表名称(temp),列名称(id),默认值(nextval(...))和数据类型(bigint和int8 .. NOT bigserial)。 ...我意识到我可以检查默认值是否为序列-但我不认为这是100%准确的,因为我可以手动创建一个序列并创建一个默认值是那个顺序。 有人对我如何做到这一点有建议吗?除了检查nextval(* _ seq)的默认值之外,没有其他功能吗? 针对TL; DR或不熟悉pg_catalog的新用户在此处添加的SQL解决方案进行了编辑: with sequences as ( select oid, relname as sequencename from pg_class where relkind = 'S' ) select sch.nspname …

1
如何在PostgreSQL中从本地文件复制到远程数据库?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 6年前关闭。 我是psql的新手,需要一些帮助。如何将本地CSV加载到远程数据库? 我正在使用以下命令 \COPY test(user_id, product_id, value) FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER; 但这会在远程数据库上搜索文件,而我需要在本地PC上进行搜索。

1
PostgreSQL如何物理排序磁盘上的新记录(在主键上的集群之后)?
需要知道PostgreSQL如何排序磁盘上的记录。在这种情况下,我想利用docs中所述的索引组合,据我所知,它使用位图来获取匹配的行并根据其物理位置返回它们。该表已通过其主键进行了聚类。 据我了解,PostgreSQL在聚类完成后不会自动继续进行聚类(尽管它确实记得它是根据某个索引进行聚类的)。现在,由于这是主键,所以我想知道物理存储顺序是否符合该顺序(如果为true,我想利用它来进行特定查询)。 总之,PostgreSQL如何排序其新记录,尤其是在集群之后? 非常感谢!

2
如何设置和获取自定义数据库变量?
使用“ PGAdmin III我”可以右键单击数据库,导航到Variables选项卡,然后在数据库本身上放置变量name-value属性。有没有办法自定义这些?我看到了一个application_name变量,但是我想要一个application_version变量。

2
如何在不等待结果的情况下从psql执行查询?
我的查询(从现有表创建新表)需要很长时间。因此,我在办公室中建立了一个远程数据库-那里有更多RAM。 我可以像往常一样使用psql从家里连接到数据库。 如何告诉远程服务器从终端执行我的查询而不必等待响应? (postgresql-9.2,Linux环境) 编辑:我愿意接受其他解决方案,没有必要使用psql

4
PostgreSQL:更改用户密码无效
我安装PostgreSQL在EC2计算机上,现在我想更改用户密码postgres 我做 $ sudo -u postgres psql psql (9.1.5) Type "help" for help. postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd'; ALTER ROLE 然后我退出外壳并尝试使用新密码登录 $ psql -U postgres -W Password for user postgres: psql: FATAL: Peer authentication failed for user "postgres" 我的PostgreSQL版本是 $ psql --version psql (PostgreSQL) 9.1.5 contains support for …

2
PostgreSQL PITR还原
我有一个在CentOS 5.8 32位操作系统上运行的PostgreSQL 9.1服务器,并且启用了WAL归档。在此服务器上,有三个数据库:databaseA,databaseB和databaseC。有人在下午12点删除了databaseB上的一个表,我想将databaseB还原到删除表的时间之前。现在的时间是下午3点。 我如何才能将数据库B还原到下午12点,而又不会丢失其他两个数据库中三个小时的数据呢? postgresql.conf wal_level = archive archive_mode = on archive_command = 'test ! -f /opt/pgsql/logs/%f && cp %p /opt/pgsql/logs/%f' max_wal_senders = 100 recovery.conf restore_command = 'cp /opt/pgsql/logs/%f %p' recovery_target_time = '2012-06-29 11:59:59 CEST' 我在上午9点运行了基本备份 pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup PostgreSQL服务在下午3点关闭。

3
可以在postgresql中保留最大记录数吗?
基本上,我们的Postgresql表的一部分用于保存服务器访问日志,因此有时在生产过程中,这可能会变得很大。有什么办法在postgresql中设置为具有一个表可以拥有的最大记录数并推出最旧的记录?

1
快速通用的百分位数计算方法
我想在PostgreSQL中找到未排序列的n> 1个百分位数。例如20、40、60、80和100%。 一个显而易见的解决方案是对列进行计数和排序,然后进行查看,但我希望有一个更好的解决方案。有任何想法吗? PS我已经找到了一个很好的MySQL 解决方案,但无法将其转换为psql

3
将pgAdmin3连接到Heroku上的Postgres
我正在与Django应用程序一起运行Heroku Postgres数据库(Database)。引用该插件的文档在这里。我认为这对于社区来说是一个值得提出的问题,因为Heroku今天警告其用户,它将从以前默认的共享数据库附件中迁移所有内容。 我在将pgAdmin3连接到数据库时遇到问题。 按照上面的链接中的说明,我使用以下命令获取数据库的凭据: $ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE 我在Mac OSX上使用Postgresql的自制安装。 同时,我有: 在我的pg_postgresql.conf中打开SSL; 添加了设置: listen_addresses = '*' 并添加 host all all 0.0.0.0/0 md5 并重新启动我的postgres服务器。 然后我转到pgAdmin3并选择File > Add Server。 我输入Heroku提供的凭据,如下所示(第一个是Heroku凭据名称,第二个是pgAdmin字段名称): 在“属性”标签中: dbname转换为Name; 主持人 进入港口; 我将“维护数据库”的pgAdmin字段留空; 用户进入用户名; 密码变成密码; 在SSL标签中: 在SSL字段中,我选择“ require”(按照Heroku的指示)。 我按下Enter键,pgAdmin认为,然后引发如下错误: An error has occurred: Error connecting to the server: FATAL: permission …

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.