如何确定缓冲区大小

时间:2012-09-04 19:25:43

标签: ruby-on-rails-3 postgresql heroku

让我解释一下我需要的信息:

我有几个并发用户同时点击同一条记录。这意味着,在db端会有一些排队和锁定。这个缓冲区有多大?可以为200多个并发用户排队和锁定吗?

如何在设置中确定此缓冲区的大小?是否有默认设置?

1 个答案:

答案 0 :(得分:1)

数据库中没有查询队列(“buffer”)。

每个与数据库的并发连接可以在飞行中有一个查询。其他查询不能排在其后面 *

您的应用程序可能使用内部连接池,即Rails,因此您可以等待很多查询,因为连接池中有插槽。

如果你的应用程序和PostgreSQL之间有一个像PgBouncer代理的外部连接池那么你可以排队更多的查询,因为当连接到pgbouncer时,你可以在应用程序中拥有更大的池大小,因为pgbouncer连接非常轻量级。 PgBouncer将在与PostgreSQL较少数量的实际连接上为这些请求提供服务。当以这种方式使用时,这有效地使PgBouncer成为查询队列(尽管不一定是FIFO队列)。 HOWEVER 因为这些查询在发出时实际上并未点击Pg,所以在PgBouncer中等待时它们不会锁定。这对于某些并发设计可能很重要。


* 好的,所以你可以一次发送多个以分号分隔的查询,但不像队列那样串行发送。