Questions tagged «postgresql»

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

1
EXPLAIN ANALYZE不显示plpgsql函数内部查询的详细信息
我在PostgreSQL 9.3中使用PL / pgSQL函数,内部有几个复杂的查询: create function f1() returns integer as $$ declare event tablename%ROWTYPE; .... .... begin FOR event IN SELECT * FROM tablename WHERE condition LOOP EXECUTE 'SELECT f2(event.columnname)' INTO dummy_return; END LOOP; ... INSERT INTO ... FROM a LEFT JOIN b ... LEFT JOIN c WHERE ... UPDATE …

3
真空冷冻vs真空充满
有人可以解释VACUUMPostgreSQL中这些类型之间的区别吗? 我读了文档,但是它只是说FULL锁定表并FREEZE“冻结”元组。我认为是一样的。我错了吗?

1
为什么要在文本列上索引text_pattern_ops?
今天,《七周》中的七个数据库向我介绍了每个操作员的索引。 您可以通过创建text_pattern_ops运算符类别索引来为模式与先前查询匹配的字符串建立索引,只要这些值以小写形式索引即可。 CREATE INDEX moves_title_pattern ON movies ( (lower(title) text_pattern_ops); 我们使用了,text_pattern_ops因为标题是文本类型。如果需要指数VARCHAR处理,字符,或名称,使用相关的OPS: ,varchar_pattern_ops,bpchar_pattern_ops和name_pattern_ops。 我发现该示例确实令人困惑。为什么这样做有用? 如果列是文本类型,在用作搜索值之前,是否会将其他类型(varchar,char,name)强制转换为文本? 该索引的行为与使用默认运算符的索引有何不同? CREATE INDEX moves_title_pattern ON movies (lower(title));

3
从AWS RDS PostgreSQL实例获取WAL文件
我们在Amazon Web Services上有一个Postgres RDS实例。我们启用了自动备份,并且每天拍摄快照。我们想生成一个RDS实例的本地“最新”备份,我们可以对其进行管理。对实例运行pg_dump是不够的,因为我们希望能够将数据库还原到任何时间点。我们希望对RDS和所有WAL文件进行本地备份,因为已进行了备份。问题: 是否可以访问RDS在其备份例程中自动生成的WAL文件和备份?这将是理想的。我想下载它们的本地副本。经过初步调查,我觉得这个问题的答案是“否”。听起来RDS正在S3中存储其WAL文件和备份,但是这使我们无法访问它们。我希望确认。 还有其他方法可以访问RDS实例上发生的事务(WAL文件)吗?我想我们应该能够在EC2上创建Postgres数据库,并将事务从主要的“实时” RDS实例“馈送”到该EC2实例中。一旦我们的EC2实例更新,我们就可以从那里拉WAL文件。但是,多么令人头疼://这种设置可行吗?从我们的RDS实例“馈送”到EC2实例以使其始终保持最新状态的魔力是什么? 谢谢!

2
如何在Postgres中每小时进行增量备份?
尝试每小时对单个Postgres服务器(Win7 64)进行增量备份。 我在中进行以下设置postgresql.conf: max_wal_senders = 2 wal_level = archive archive_mode = on archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"' (重新开始) 我做了一个基本的备份 pg_basebackup -U postgres -D ..\foo -F t -x 它在base.tar文件foo夹中创建了一个大文件,并添加了一些16,384 KB的文件,我认为这些文件是WAL。 我不明白的是为什么WAL foo不变。data/pg_xlog变化中的WAL 。pg不应该复制它们吗?它如何决定这样做? 也许我需要设置archive_timeout=3600? 我已经看到几个站点(pg的邮件列表,bacula的postgres页面)说需要调用pg_start_backup()和pg_stop_backup(),但我相信这些不是必需的。真的吗? 次要问题: WAL多久data/pg_xlog写入一次?是什么触发写操作? 如果我\q在psql中执行一些DML,似乎更新了WAL 。或在pgAdmin中编辑表,然后关闭窗口。我认为它将在提交时编写。 最佳做法?pg_basebackup每周一次?将WAL归档到与PG相同的计算机或远程计算机上吗?

1
数据库存档解决方案
继续我提出的一个问题,将高容量和高访问量的表移至单独的数据库是否是一个好主意?,我正在寻找可用于PostgreSQL中数据库归档的不同技术/解决方案。 我能想到的解决方案很少: 表分区 单独的表空间和/或架构 将存档的记录/表移动到其他硬盘 任何其他建议/指针/解决方案都将受到欢迎和赞赏。 注意:我们在CentOS5.2上运行PostgreSQL v9.1.3


1
如何还原纯文本postgres .backup文件
我以纯格式从pgAdmin导出了一个postgres数据库,因为我想搜索整个数据库文本。然后,我尝试恢复数据库,但是它给出了一个错误,指出存档文件不是有效的存档文件。如果可以还原数据库,该如何还原呢?

3
PostgreSQL 9.1中的自动故障转移
如何在PostgreSQL 9.1中设置两个相同的服务器以进行自动故障转移。 操作系统 从源代码编译的Centos 5 PostgreSQL 9.1 postgres用户帐户在两台机器上都存在,并且具有ssh无密码密钥来连接到两台机器。 我当前的设置: 主服务器配置: postgresql.conf: listen_address = '*' wal_level = hot_standby max_wal_senders = 3 checkpoint_segments = 16 wal_keep_segments = 8 archive_mode = on archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"' pg_hba.conf: host replication all 10.0.66.1/32 trust host replication all 10.0.66.2/32 trust 备用服务器 postgresql.conf和pg_hba.conf与主服务器上配置的相同。 recovery.conf: standby_mode = …

2
触发器:将已删除的行移至存档表
我的restrictionsPostgreSQL数据库中有一个小表(约10行),每天都会删除和插入值。 我想要一个名为的表restrictions_deleted,将从中删除的每一行都restrictions将被自动存储。由于restrictions具有序列号,因此不会重复。 如何在PostgreSQL中编写这样的触发器?

4
真空/自动真空操作需要多少时间?
我管理着一个大型的数据库(数百个演出),其中包含具有各种角色的表,其中一些表拥有数百万条记录。一些表只接收大量的插入和删除,另一些表则接收大量的插入和删除。 数据库在带有16 GB RAM的Debian 6.0 amd64系统上的PostgreSQL 8.4上运行。 问题有时是在桌子上进行自动真空处理,需要很长时间(几天)才能完成。我希望能够粗略地知道一个特定的真空命令将花费多少时间,以便能够决定是否取消它。另外,如果有用于postgres真空操作的进度指示器,那将真的很有帮助。 编辑: 我不是在寻找防弹解决方案。只需给出死元组数或必要的I / O字节数的粗略提示就可以确定。VACUUM无论何时何地都不知道,真是令人讨厌。 我已经看到pg_catalog.pg_stat_all_tables有一个死元组数列。因此,即使有可能需要对表进行估算,也可以进行估算ANALYZE。在另一方面,autovacuum_vacuum_threshold与autovacuum_vacuum_scale_factor设置单独证明Postgres的本身知道一些有关变化对表的数量,并可能将其放在了DBA手中了。 我不确定要运行什么查询,因为在运行时VACUUM VERBOSE,我不仅看到表,而且也正在处理它们的索引。


4
如何在结果表定义未知的情况下生成透视CROSS JOIN?
给定两个具有未定义的行计数和名称和值的表,我将如何显示CROSS JOIN函数在其值上的透视图。 CREATE TEMP TABLE foo AS SELECT x::text AS name, x::int FROM generate_series(1,10) AS t(x); CREATE TEMP TABLE bar AS SELECT x::text AS name, x::int FROM generate_series(1,5) AS t(x); 例如,如果该函数是乘法,那么我将如何生成一个(乘法)表,如下所示, 所有这些(arg1,arg2,result)行都可以使用 SELECT foo.name AS arg1, bar.name AS arg2, foo.x*bar.x AS result FROM foo CROSS JOIN bar; 因此,这仅是表示的问题,我希望它也可以使用自定义名称 -这个名称不仅是CAST文本的参数而是在表中设置的, CREATE …


2
我应该使用PostgreSQL位串吗?
我最近一直在学习bit string数据类型,对此我很好奇: 在此文档页面的底部有一句话: ...加上5或8个字节的开销,具体取决于字符串的长度 如何通过Npgsql,ODBC等驱动程序以其他语言(例如PHP,Java,C#,C ++等)处理位字符串。 对于问题1,使用smallint或bigint会提高存储效率,并且可能会提高性能,因为到处都支持整数。大多数编程语言都可以轻松地对整数进行位运算。如果是这样,引入位串数据类型有什么意义?是否仅适用于需要大量位掩码的情况?位字段索引可能吗?我对PostgreSQL中如何完成位字段索引感到好奇。 对于#2,我感到困惑,不仅仅是好奇。例如,如果我将星期几位掩码存储在bit(7)字段中,一天一次,最低位代表星期一,该怎么办。然后,我查询PHP和C ++中的值。我会得到什么?文档说我会有一个位字符串,但是位字符串不是我可以直接使用的-与整数一样。那么在这种情况下,我应该放弃位字段吗? 任何人都可以详细说明为什么以及何时应该使用逐点变化吗?
18 postgresql 

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.