小编Dio*_*jos的帖子

如何限制 PostgreSQL 服务器可用的内存?

对于学术实验,我需要限制 pgSQL 服务器可用于计算给定查询集的内存总量。

我知道我可以通过postgresql.conf文件来做到这一点,我可以在其中调整一些与资源管理相关的参数。

问题是:我不清楚——考虑到配置文件上可用的几个参数——哪些是我应该更改的参数。

当我第一次打开配置文件时,我期待这样的内容:max_server_memmory. 相反,我发现了很多:shared_buffers、、、temp_buffers等等work_mem......

鉴于此,我查阅了pgSQL 文档。关于资源消耗,我提出了shared_buffers作为我正在寻找的最佳候选者:限制 pgSQL 服务器可以用来执行其计算的内存总量的参数。但我对此并不完全确定。

你们能给我一些关于我应该调整哪些参数来限制 pgSQL 服务器内存的见解吗?

postgresql configuration memory-management

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

java:如果在锁定版本之前总是调用notify(),那么等待的线程如何获得同样的锁?

我认为我已经知道了这个问题的答案,但是,我想阅读你的意见,以确保我真正理解java线程的状态机(或图表)是如何工作的.

想象一下,线程A 在返回给定值之前运行notify():

public class baz{

    // Thread B runs this:
    public synchronized void bar(){
       wait();
    } 

    // Thread A runs this:
    public synchronized int foo(){
       notify();
       return 11;
    }
}
Run Code Online (Sandbox Code Playgroud)

在线程A释放锁定之前将调用notify()(将在" 返回11 ;语句之后"发生).那么,等待这个锁(通过wait()方法)的线程B如何获得仍然由线程A保持的锁?请注意,当通知线程B时,线程A尚未释放锁定.

所以我对这种情况的看法如下:

在调用wait()之后,线程B将其状态从Running更改为Waiting.收到通知后(来自Thread A notify()方法),线程B将从wait()返回,将其状态更改为Runnable并尝试获取锁.由于线程A尚未释放锁定,因此线程B将在对象的监视器上被阻塞,并将其状态从Runnable传递到Blocked.最终,在线程A释放锁之后,线程B将获取锁并将其状态从阻塞传递到运行.

这是正确的吗?我想用这个问题理解的是从一个已经获得的锁同步的wait()返回的线程会发生什么.

java multithreading

9
推荐指数
1
解决办法
834
查看次数

PostgreSQL-INNER JOIN vs WHERE,哪个会表现更好?

我刚刚在网上进行了快速搜索,但找不到确切的所需信息。

INNER JOIN与常规WHERE语句相比有多少效率?

我在PostgreSQL中有几个查询,它们需要使用一些通过键/外键条件“链接”在一起的表(比如说四个或五个)。为了实现这些查询,我使用WHERE子句来连接所有必需的表。

我想知道如果我使用INNER JOIN子句(而不是WHERE子句)重写这些查询,是否会获得性能提升?

postgresql join where database-performance

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