Questions tagged «postgresql»

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

1
PostgreSQL pg_stat_activity显示COMMIT
最近,我们用具有4个四核CPU和32Gb内存的升级机器替换了数据库服务器。我们还重新调整了旧盒子的用途,以充当流复制的从设备。两个盒子都运行CentOS 6.3和PostgreSQL 9.2。Postgres是运行在每个盒子上的唯一东西。 这种配置已经部署了大约一个月左右,当流量突然增加时,突然我们开始遇到一些问题。我们开始看到的是,有时CPU的负载非常高(顶部显示的平均负载为270),当我们查看时,pg_stat_activity我们将看到大多数连接处于该COMMIT状态。单独放置时,它最终将完成,并且系统将随着连接变为作出响应IDLE。我们尝试禁用复制以查看是否可能是问题所在,但问题仍然存在。 我们已经尝试诊断正在发生的事情,并且有些丢失。运行的输出perf显示类似于以下内容,我不知道0x347ba9代表什么。 + 41.40% 48154 postmaster 0x347ba9 f 0x347ba9 ◆ + 9.55% 10956 postmaster 0x2dc820 f set_config_option ▒ + 8.64% 9946 postmaster 0x5a3d4 f writeListPage + 5.75% 6609 postmaster 0x5a2b0 f ginHeapTupleFastCollect ▒ + 2.68% 3084 postmaster 0x192483 f build_implied_join_equality ▒ + 2.61% 2990 postmaster 0x187a55 f …
11 postgresql 


2
PostgreSQL,用于大量交易和数据仓库
对PostgreSQL来说是个新手,我以前从未使用它进行过大规模部署。但是,我在企业解决方案方面有丰富的经验,我想尝试应用一些我在PostgreSQL中学到的知识。 我有一个可以处理大量数据和流量的站点。该基础设施将使用EC2实例和EBS卷在亚马逊(AWS)上构建。 该设计应具有两个数据库,一个主要的事务数据库和一个处理分析和报告的数据仓库。 主要交易数据库 将用于实时网站,该网站建立在多个节点上以扩大并发用户。主要是因为我们要求这种情况下的数据库在读取操作中要非常快,我们希望数据大于100GB,并且每年以30%的速度增长。此时,我们计划使用两台EC2服务器(并在以后根据需要添加更多服务器)。 我的问题是,上述要求的推荐设置是什么?另外,有没有一种方法可以管理表和卷分区?有使用AWS设置的建议吗? 数据仓库数据库 将主要用于在时间维度上捕获来自主事务数据库的所有数据。因此,即使从主数据库中删除的记录也将被捕获在DWH中。因此,数据将非常庞大,增长将更大。如果需要,我们还将使用几个EC2实例或更多实例。 在这种情况下,推荐的设置是什么?由于持续写入(ETL),因此需要快速写入操作。我们可以在PostgreSQL中构建OLAP多维数据集吗?如果是,有没有人尝试过? 连接数据库 Web服务器将连接到主数据库以进行查询和写入。我们目前正在使用django开发应用程序,该应用程序使用本机库进行连接。是否建议使用相同的基本方法?还是应该配置pgpool? 数据仓库(ETL) 建立ETL流程以从主数据库读取并加载到数据仓库的推荐方法是什么?有什么工具吗?遵循的方法?PostgreSQL是否在构建ETL流程中提供了任何有用的功能/工具?

0
负载平衡器与连接池-有区别吗?
我正在开发一个项目,该项目有望在启动后不久为数百万用户提供服务。数据库是postgres,现在我假设至少需要两台服务器。一位系统管理员(显然是精通可伸缩系统的人)建议在Web服务器和数据库服务器之间放置一个负载平衡器。 我的问题是关于负载平衡与连接池的区别。为了保持性能,我应该选择其中一个还是两个?
11 postgresql 

5
从SQLite迁移到PostgreSQL的工具
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我需要不断地从SQLite迁移到PostgreSQL。连续地说,我的意思是我每天都会将SQLite数据库重新导入到PostgreSQL中。如果可以根据需要在SQLite中更改表而不必手动对PostgreSQL数据库进行任何更改,那将是很好的。我将从Python运行迁移,但是它可以是任何外部工具,可以从命令行进行控制。该工具需要可用于Linux,如果它也可以在Windows上运行,那就太好了。

3
魔术列“名称”从何而来?
我是偶然得到的: db=> select name from site; ERROR: column "name" does not exist LINE 1: select name from site; ^ db=> select site.name from site; name --------------- (1,mysitename) (1 row) 第二个查询返回一个包含整行的元组。使用Postgres 9.0.1。 编辑:按要求定义站点。我并不重要,这个怪癖适用于任何桌子。 db=> \d site Table "public.site" Column | Type | Modifiers --------+---------+--------------------------------------------------- id | integer | not null default …

1
PostgreSQL中的BLOB或引用
我需要将二进制数据文件存储在可在Ubuntu服务器上运行的PostgreSQL数据库中。最初,将有几十个文件,每个文件大小约为250kb。但是,文件数会随着时间增加。有时我可能需要从文件中提取数据以进行其他下游分析。 我已经对将二进制数据存储为BLOB或引用的古老问题进行了一些研究。两者显然都有各自的优缺点。我应该注意与PostgreSQL有关的任何特定问题吗?如果我想通过PostgreSQL函数或通过外部Python程序从文件中提取数据,是一种方法还是另一种方法更可取? 如果我将数据文件直接存储在数据库中,是否最好将它们存储在带有引用“主”表的外键的单独表中,而不是存储在包含所有其他字段的表中? 我在这里阅读了问题和答案; 那里的评论建议在Linux上通过引用(在文件系统中)存储二进制文件更好。我在这里的问题特别与PostgreSQL有关,并且与从文件中提取数据进行各种分析有关。 更新:类似的问题。
11 postgresql 

2
PostgreSQL中UniProt的生物学序列
在PostreSQL中存储UniProt生物序列的最佳方法是什么? 资料明细 我们从UniProt中提取了1200万个序列-这个数字很可能每3-10个月增加一倍。 序列的长度可以从10到500亿个字符不等 少于1%的序列超过1万个字符 单独存储较长的序列是否会提高性能? 序列可以是蛋白质或DNA字母 DNA字母有5个字符(A,T,C,G或-)。 蛋白质字母将包含大约30个字符。 我们不介意将两个不同字母的序列存储在不同的列甚至不同的表中。有帮助吗? 数据访问详细信息 回答耶利米·佩斯卡的评论: 蛋白质和DNA序列将在不同时间访问 无需在序列中搜索(在db之外完成) 以太会同时访问单个行还是通过ID提取行集。我们不需要扫描行。所有序列都由其他表引用-数据库中存在几个在生物学和时间上有意义的层次结构。 向后兼容 能够继续将以下哈希函数(SEGUID-SEquence全局唯一IDentifier)应用于序列将是一个很好的选择。 CREATE OR REPLACE FUNCTION gfam.get_seguid(p_sequence character varying) RETURNS character varying AS $BODY$ declare result varchar := null; x integer; begin select encode(gfam.digest(p_sequence, 'sha1'), 'base64') into result; x := length(result); if substring(result from x …
11 postgresql 


5
如何检查我可以在其上运行查询的数据库服务器上安装了什么数据库引擎?
我想检查可以访问的Datasase服务器上正在运行哪种类型的sql。我只能访问Web界面和表列表。 通过该接口,我可以对列表中存在的表运行查询。 我如何获得有关服务器和服务器运行版本的更多信息。我不知道服务器正在运行的IP或PORT。 我想知道服务器是MySQL,Mircosoft SQL Server,Oracle SQL,Postgre SQL还是其他sql服务器。 我正在谈论的网站就是这个网站: w3schools.com SQL编辑器。 编辑2:尽管某些命令选择sqlite_version()对我有用,但它不起作用。这是响应的屏幕截图。 编辑3:在Chromium浏览器上,命令运行正常。但是,在Firefox浏览器上,该命令无效。 我还提到我正在运行Linux。 您认为可能是在Firefox和Chrome上获得不同结果的原因是什么?



1
在pg_dump定位到另一台机器的过程中,拒绝创建“ pg_catalog.tablename”的权限
我正在尝试将某些表从9.5 beta 2转储到9.4.4服务器。我使用的命令的形式是相当标准的: pg_dump -t table dbname | psql -h hostname -d dbname 我正在使用Postgres用户,我意识到这可能并不理想,但是因为这两个都是我仅使用的dev数据处理框,所以与随后的错误有关。最初,我得到了错误 错误:无法识别的配置参数“ row_security” 这是预期的,因为此功能是9.5中的新增功能,是的,我意识到不建议在不同的Postgres版本之间使用pg_dump,但是,令人遗憾的是,由于我遇到了一个非常模糊的错误,并且需要移动一个大的错误,这是不可避免的一次静态数据量。 因此,使用此可怕的技巧来删除row_security错误,然后在第一个错误上启用stop: pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'| psql -v ON_ERROR_STOP=1 -h hostname -d dbname 我现在得到: 错误:拒绝创建“ pg_catalog.tablename”的权限详细信息:当前不允许修改系统目录 尽管可能不希望使用Postgres用户/角色,但我的理解是应该没有这种性质的权限问题。对于任何建议,我都持开放态度,因为这是一次性操作,并且它们是未连接到任何实时服务的数据处理开发箱,因此权宜于优先于理想的公司数据访问策略。话虽如此,最好了解如何正确执行此操作,并在将来避免这样做。

4
如何将具有外键约束的列添加到已存在的表中?
我有下表 CREATE TABLE users (id int PRIMARY KEY); -- already exists with data CREATE TABLE message (); 我该如何更改messages表格, 一个名为的新列sender被添加到其中 sender引用该users表的外键在哪里 这没用 # ALTER TABLE message ADD FOREIGN KEY (sender) REFERENCES users; ERROR: column "sender" referenced in foreign key constraint does not exist 此语句是否也不会创建该列?

2
通过PostgreSQL中的视图和触发器跟踪当前用户
我有一个PostgreSQL(9.4)数据库,该数据库根据当前用户限制对记录的访问,并跟踪用户所做的更改。这是通过视图和触发器实现的,并且在大多数情况下都可以正常工作,但是我在需要INSTEAD OF触发器的视图中遇到了问题。我试图减少问题的发生,但是我很抱歉这仍然很长。 情况 与数据库的所有连接都是通过Web前端通过单个帐户进行的dbweb。连接后,通过SET ROLE使用Web界面更改角色以使其与该人相对应,并且所有这些角色都属于组角色dbuser。(有关详细信息,请参见此答案)。假设用户为alice。 我的大多数表都放在一个架构中,在这里我将对其进行调用private并属于dbowner。这些表不能直接访问dbuser,但可以用作另一个角色dbview。例如: SET SESSION AUTHORIZATION dbowner; CREATE TABLE private.incident ( incident_id serial PRIMARY KEY, incident_name character varying NOT NULL, incident_owner character varying NOT NULL ); GRANT ALL ON TABLE private.incident TO dbview; 特定行对当前用户的可用性alice由其他视图确定。一个简化的示例(可以减少,但需要通过这种方式来支持更一般的情况)将是: -- Simplified case, but in principle could join multiple tables to determine allowed …

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.