小编Cra*_*ger的帖子

提高查询速度:大postgres表中的简单SELECT

我在Postgres数据库的SELECT查询中遇到速度问题.

我有一个表有两个整数列作为键:(int1,int2)这个表有大约7000万行.

我需要在这种环境中进行两种简单的SELECT查询:

SELECT * FROM table WHERE int1=X;
SELECT * FROM table WHERE int2=X;
Run Code Online (Sandbox Code Playgroud)

这两个选择在这7000万个中返回大约10,000行.为了尽可能快地工作,我考虑使用两个HASH索引,每列一个.不幸的是结果并不那么好:

                                                               QUERY PLAN                                                               
----------------------------------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on lec_sim  (cost=232.21..25054.38 rows=6565 width=36) (actual time=14.759..23339.545 rows=7871 loops=1)
   Recheck Cond: (lec2_id = 11782)
   ->  Bitmap Index Scan on lec_sim_lec2_hash_ind  (cost=0.00..230.56 rows=6565 width=0) (actual time=13.495..13.495 rows=7871 loops=1)
         Index Cond: (lec2_id = 11782)
 Total runtime: 23342.534 ms
(5 rows)
Run Code Online (Sandbox Code Playgroud)

这是其中一个查询的EXPLAIN ANALYZE示例.这需要大约23秒.我的期望是在不到一秒的时间内获得这些信息.

这些是postgres db config的一些参数:

work_mem = 128MB
shared_buffers = 2GB
maintenance_work_mem = 512MB
fsync = off
synchronous_commit = off …
Run Code Online (Sandbox Code Playgroud)

sql postgresql performance postgresql-performance

28
推荐指数
2
解决办法
5万
查看次数

JBoss 7,java.lang.OutOfMemoryError:PermGen空间

我遇到了这个错误,其中CPU使用率达到极限,JBoss需要重启(java.lang.OutOfMemoryError: PermGen space).

我发现旧的JBoss版本的解决方案可以增加MaxPermSize.我想JBoss7也是如此.

为了不再遇到任何问题,哪个值足够好?有没有办法永久远离这个问题(比如让我们说使用像JRockit这样的其他虚拟机)?

webserver jboss java-ee jboss7.x

27
推荐指数
2
解决办法
4万
查看次数

试图为ror app设置postgres,收到错误 - fe_sendauth:没有提供密码

获得:

An error has occurred:

Error connecting to the server: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

设置database.yml与其他计算机上的应用程序设置相同.

如何设置以便我不需要硬编码的密码?

我可以使用PgAdmin-III查看db ok.

我宁愿没有密码,database.yml因为使用这个应用程序的其他机器没有/需要它,所以它似乎可能与我的Pg安装有关.

ruby passwords postgresql ruby-on-rails pg

26
推荐指数
2
解决办法
6万
查看次数

如何使用pg_stat_activity?

我想看看在实时Django应用程序上执行哪些查询,以及它们占用多少内存.我读过这pg_stat_activity对监视Postgres数据库很有用.

查看了Postgres文档,但是我有一个非常简单的问题,似乎没有在那里得到解答.

我如何真正开始使用pg_stat_activity?我键入什么来使用它,我在哪里键入它?

postgresql debugging

26
推荐指数
2
解决办法
6万
查看次数

PostgreSQL必须出现在GROUP BY子句中,或者用在聚合函数中

我在pg生产模式下收到此错误,但它在sqlite3开发模式下工作正常.

 ActiveRecord::StatementInvalid in ManagementController#index

PG::Error: ERROR:  column "estates.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT "estates".* FROM "estates"  WHERE "estates"."Mgmt" = ...
               ^
: SELECT "estates".* FROM "estates"  WHERE "estates"."Mgmt" = 'Mazzey' GROUP BY user_id

@myestate = Estate.where(:Mgmt => current_user.Company).group(:user_id).all
Run Code Online (Sandbox Code Playgroud)

postgresql production ruby-on-rails-3.1

26
推荐指数
4
解决办法
6万
查看次数

安装Postgres.app但它不起作用

我刚刚在我的Mac上安装了Postgres.app但它无法正常工作.我完成了安装,应用程序图标在菜单栏上,它说它正在侦听端口5432,但是,如果我尝试从命令行运行它会发生什么:

~ $ psql
zsh: correct 'psql' to 'sl' [nyae]? n
zsh: command not found: psql
Run Code Online (Sandbox Code Playgroud)

我之前通过Homebrew安装了PostgreSQL,但在安装Postgres.app之前删除了它.我正在运行Mac OS X Lion.

我感谢任何帮助,我真的希望在我的机器上运行PostgreSQL.

postgresql heroku psql

23
推荐指数
4
解决办法
2万
查看次数

控制PostgreSQL锁的持续时间等待

我有一张叫做的桌子 deposits

进行存款时,表格被锁定,因此查询类似于:

SELECT * FROM deposits WHERE id=123 FOR UPDATE

我假设FOR UPDATE是锁定表,以便我们可以操作它而无需另一个线程踩在数据上.

但是,当其他存款试图获取表的锁定时,会出现问题.发生的事情是,在锁定表格和调用psql_commit()某些东西之间的某个地方失败并保持锁定一段愚蠢的时间.我需要帮助解决一些问题:

  1. 尝试获取锁定的后续查询应该失败,我已经尝试实现此目的NOWAIT但是更喜欢超时方法(因为可以等待,只是不等待'愚蠢的时间')

  2. 理想情况下,我会在传递中关闭它,并让我的初始查询只保持一定时间的锁定,这可能与postgresql?

  3. 是否还有其他一些神奇的功能,我可以在查询上(类似于NOWAIT)只会在失败之前等待锁定4秒?

  4. 由于代码库令人痛苦的整体意大利面代码性质,它不仅仅是改变全局配置的问题,它有点需要是基于每个查询的解决方案

谢谢你的帮助,我会继续四处寻找,但我没有多少运气.这是psql的一个不存在的函数,因为我发现了这个:http://www.postgresql.org/message-id/40286F1F.8050703@optusnet.com.au

postgresql locking

23
推荐指数
1
解决办法
2万
查看次数

如何在container-managed-tx EJB提交时捕获并包装JTA抛出的异常?

我正在努力解决管理非平凡数据模型的EJB3类的问题.当我的容器管理的事务方法提交时,我会抛出约束验证异常.我想阻止它们被包装EJBException,而是抛出一个理智的应用程序异常,调用者可以处理.

要将它包装在合适的应用程序异常中,我必须能够捕获它.大多数情况下,一个简单的try/catch来完成这项工作,因为验证异常是从EntityManager我所做的调用中抛出的.

不幸的是,一些约束仅在提交时检查.例如,@Size(min=1)只有在容器管理的事务提交时才会捕获对映射集合的违反,一旦它在我的事务方法结束时离开我的控件.在验证失败时,我不能赶上抛出的异常,敷,因此容器将其包装在一个javax.transaction.RollbackException和包装在诅咒EJBException.调用者必须抓住所有EJBExceptions并在原因链中潜水,以试图找出它是否是验证问题,这真的不太好.

我正在使用容器管理的事务,所以我的EJB看起来像这样:

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER
class TheEJB {

    @Inject private EntityManager em;

    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public methodOfInterest() throws AppValidationException {
       try {
           // For demonstration's sake create a situation that'll cause validation to
           // fail at commit-time here, like
           someEntity.getCollectionWithMinSize1().removeAll();
           em.merge(someEntity);
       } catch (ValidationException ex) {
           // Won't catch violations of @Size on collections or other
           // commit-time only validation exceptions
           throw new AppValidationException(ex);
       } …
Run Code Online (Sandbox Code Playgroud)

ejb jpa eclipselink java-ee jboss7.x

21
推荐指数
2
解决办法
2万
查看次数

PostgreSQL Mountain Lion套接字问题

我一直在试图建立的PostgreSQL我的系统上(OSX 10.8,干净的安装),但我遇到了麻烦,使用psql,createdb等等.我已经尝试了各种解决方案,并没有似乎工作.

安装成功,我继续使用以下方法修复已知的套接字问题:

mkdir /var/pgsql_socket 
sudo chown $USER /var/pgsql_socket
Run Code Online (Sandbox Code Playgroud)

然后我编辑postgresql.conf,设置unix_socket_directory

unix_socket_directory = '/var/pgsql_socket'
Run Code Online (Sandbox Code Playgroud)

并重新启动Pg.

这应该显然已经解决了套接字问题,但我仍然得到:

psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

此外,我已经检查了服务器的状态,它似乎正在运行,但我仍然得到'没有这样的文件或目录'

有任何想法吗?

postgresql macos osx-mountain-lion

21
推荐指数
1
解决办法
9996
查看次数

在OS X上使用Postgres.app时如何将psql放在路径上?

我在Mac上安装了Postgres93.我可以通过app打开应用程序和"打开psql",打开psql的命令行界面.

但是,当我输入$ which psql什么都没有返回.安装路径是/Applications/Postgres93.app.如何$ which psql显示正确的结果?

Mac OS X - Mavericks

PostgreSQL包,我不太确定.我去了这里下载了它 - http://postgresapp.com/

postgresql macos psql

20
推荐指数
7
解决办法
3万
查看次数