Questions tagged «postgresql»

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

14
PostgreSQL在本地运行,但是我无法连接。为什么?
最近将我的计算机从Mac OS X Lion(10.7.4)更新为Mountain Lion(10.8),我认为这使我的PostgreSQL安装感到厌烦。它最初是通过Homebrew安装的。我不是DBA,但希望有人可以告诉我如何解决此问题。 我无法连接(但在前山狮之前能够连接): $ psql -U rails -d myapp_development psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 但是Postgres仍然在运行: $ ps aux | grep postgres meltemi 2010 0.0 0.0 2444124 5292 ?? …



3
为了获得绝对性能,SUM是更快还是COUNT?
这涉及对符合特定条件(例如)的记录数进行计数invoice amount > $100。 我倾向于 COUNT(CASE WHEN invoice_amount > 100 THEN 1 END) 但是,这同样有效 SUM(CASE WHEN invoice_amount > 100 THEN 1 ELSE 0 END) 我本来认为COUNT更可取,原因有两个: 传达意图,这是为了 COUNT COUNT 可能涉及i += 1某个地方的简单操作,而SUM不能依靠其表达式作为简单的整数值。 是否有人对特定RDBMS的区别有特定的事实?

2
多列索引和性能
我有一个带有多列索引的表,并且我对正确排序索引以在查询中获得最大性能存有疑问。 场景: PostgreSQL 8.4,具有约一百万行的表 c1列中的值可以有大约100个不同的值。我们可以假设这些值是均匀分布的,因此每个可能的值都有大约10000行。 列c2可以具有1000个不同的值。每个可能的值都有1000行。 搜索数据时,条件始终包含这两列的值,因此该表具有包含c1和c2的多列索引。如果您仅使用一列进行过滤的查询,我已经读到了正确排序多列索引中的列的重要性。在我们的方案中情况并非如此。 我的问题是这个: 考虑到一个过滤器选择的数据要少得多的事实,如果第一个索引的选择性最强(允许使用较小的数据集),我是否可以提高性能?在看到引用的文章中的图形之前,我从未考虑过这个问题: 引用的文章中有关多列索引的图像。 查询使用两列中的值进行过滤。我没有只使用一列进行过滤的查询。它们都是:WHERE c1=@ParameterA AND c2=@ParameterB。也有类似这样的条件:WHERE c1 = "abc" AND c2 LIKE "ab%"

3
忘记的PostgreSQL Windows密码
今天早上,我一直在尝试在Windows 7 Professional桌面上连接PostgreSQL数据库。 默认值为“ postgres”,但可以肯定的是,我忘记了最初安装该密码时使用的密码。 我已经在Google上搜索了,发现了与重置密码有关的帖子。我遵循了这些步骤,但是最终结果与文章中提到的有所不同。我用了- net user postgres postgres 重置数据库密码,但没有显示成功消息,而是: “发生了系统错误5。访问被拒绝。” 系统错误。如何避免此错误并重置密码?

1
需要外键索引
我在索引,主键和外键上苦苦挣扎,而且都需要全部使用。 如果我有两个表,它们两个都有一个整数作为主键。 第一个表通过FK引用第二个表的主键。 在两个表上,我在ID列上都有一个主键索引 我在table1.ref_field参照第二张表格(table2.id)的PK时创建了FK约束 我在上添加了一个索引 table1.ref_field 这是组织这些索引(主键和外键)的最佳方法吗?

1
当所有值均为36个字符时,使用char vs varchar可使索引查找明显更快
我有一个旧式架构(免责声明!),它对所有表(有很多)的主键使用基于哈希的生成ID。这样的ID的示例是: 922475bb-ad93-43ee-9487-d2671b886479 改变这种方法没有希望,但是索引访问的性能很差。撇开原因,这可能是无数的,有一件事我注意到,似乎不太理想-尽管是长度正好36个字符的所有许多表中的所有ID值,列类型是varchar(36),不是 char(36)。 除了将每个索引页的条目数量增加很少之外,将列类型更改为固定长度是否会char(36)带来任何显着的索引性能优势? 即在处理固定长度类型时,postgres的执行速度是否比可变长度类型快? 请不要提及微不足道的存储节省-与更改色谱柱所需的手术相比,这已不再重要。


3
配置PostgreSQL的写入性能
我的PostgreSQL服务器之一托管着几个(1-3)数据库,这些数据库接收恒定的数据流。数据不是特别结构化的,它等于当前时间以及该特定时刻的各种观测数据。数据速率相当高;对于一个数据库,它一天的工作量约为1 GB,而对于另一个数据库,它的工作量约为每天的十分之一。我不希望这个比率增加。读取性能的优先级要低得多,目前可以接受。 在日志中,我有此消息: LOG: checkpoints are occurring too frequently (15 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments". 此值当前设置为16,这是由提供的pgtune。 我应该考虑哪些设置来提高写入性能?我希望保持尽可能的安全。考虑到传入的数据量,我可以接受一次失败就丢失一些最近的数据,只要其中的大部分数据是完整的即可。 编辑:我现在正在使用PostgreSQL 9.0,但是我计划升级到9.1。我不会发布硬件细节,因为尽管我承认它们的重要性,但最终我将需要在硬件非常多样化的多台机器上进行此优化。如果硬件对于答案是必不可少的,请给我基本信息,这样我就可以将答案应用于具有不同硬件配置的机器。

2
使用大IN优化Postgres查询
该查询获取您关注的人创建的帖子列表。您可以追踪的人数不受限制,但是大多数人追踪的人数<1000。 使用这种查询方式,明显的优化将是缓存"Post"id,但是不幸的是我现在没有时间。 EXPLAIN ANALYZE SELECT "Post"."id", "Post"."actionId", "Post"."commentCount", ... FROM "Posts" AS "Post" INNER JOIN "Users" AS "user" ON "Post"."userId" = "user"."id" LEFT OUTER JOIN "ActivityLogs" AS "activityLog" ON "Post"."activityLogId" = "activityLog"."id" LEFT OUTER JOIN "WeightLogs" AS "weightLog" ON "Post"."weightLogId" = "weightLog"."id" LEFT OUTER JOIN "Workouts" AS "workout" ON "Post"."workoutId" …


5
在PostgreSQL中非常慢的DELETE,解决方法?
我在PostgreSQL 9.2上有一个数据库,该数据库的主结构包含约70个表,并且每个客户机模式的结构相同的变量数量各不相同,每个表有30个表。客户端模式具有引用主模式的外键,而不是相反的方式。 我刚刚开始使用从先前版本中获取的一些真实数据填充数据库。当我不得不在主模式的非常中央的表中进行批量删除时,数据库已达到约1.5 GB(预计数周之内将增长到几十GB)。所有相关的外键都标记为ON DELETE CASCADE。 这将花费很长时间也就不足为奇了,但是在12个小时之后,很明显,我最好从头开始,删除数据库并再次启动迁移。但是,如果我需要在数据库正常运行并且更大时再重复此操作,该怎么办?是否有其他更快的方法? 如果我编写了一个脚本,该脚本将浏览从属表,从中央表最远的表开始,逐表删除从属行,会更快吗? 一个重要的细节是某些表上有触发器。

1
如何复制巨大的postgres表?
我有巨大的postgres表(10GB数据-1.6亿条记录)。该表是静态的,并且没有对其执行任何写操作。我想复制它,执行写操作,重新索引它,然后通过一次快速事务删除旧的并将新的重命名为原始名称。 复制这么大表的最快方法是什么?
29 postgresql 

4
为大量ram调整postgresql
我有两个相同的服务器(就硬件而言),它们都是Windows Server 2008 R2的标准安装,并且安装的软件最少(基本上是我的代码和必需的东西,例如jvm等)。 在一台服务器上,我在第二台服务器postgresql 9.1上运行sql server 2005。这两个服务器在性能方面的差异是惊人的,在postgresql上是如此糟糕,以至于我对老板最初的“让我们使用postgresql而不是为sql server许可付费”感到遗憾。对于同一条命令,我们说的是30秒与15分钟之间的差异,这不仅是一个命令,而且是我向其抛出的任何查询或命令。它们都具有几乎相同的数据(以不同的顺序插入记录),并且两个数据库都具有完全相同的结构/索引等。 但我希望这只是性能调整的问题。问题是,sql server几乎在服务器上使用了所有32 gig的ram,而postgresl却什么也不用,绝对少于gig,尽管我实际上还没有弄清楚。 我如何让postgresql使用20多个演出的Ram?这些服务器是专门为此数据库材料构建的,因此,我认为数据库和支持过程未使用的所有内存都是浪费的。

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.